2017-01-21 15 views
0

Я пытаюсь подключить вес к компьютеру с помощью COM-порта RS232.Проблемы с закрытием и повторным открытием коммуникационного порта RS232

Я могу читать взвешивания, но когда я выхожу форму, и опять пришел -

Моя программа и компьютер замораживания.

это не мой код:

private void Main_Load(object sender, EventArgs e) 
{ 
    port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); 
    port.DataReceived += new s system.IO.Ports.SerialDataReceivedEventHandler(Recepcion); 

    if (port.IsOpen == false) 
    { 
     try 
     { 
     port.Open(); 
     } 
     catch (Exception oex) 
     { 
      MessageBox.Show(oex.ToString()); 
     } 
    } 
} 


private void Actualizar(object s, EventArgs e) 
{ 
    //I try this 
    lblMSG.Text = ExtractDecimalFromString(port.ReadLine()).ToString(); 
    port.DiscardInBuffer(); 

    //Also I try this 
    lblMSG.Text = ExtractDecimalFromString(port.ReadExisting()).ToString(); 
    port.DiscardInBuffer(); 
} 


private void Recepcion(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    try 
    { 
    this.Invoke(new EventHandler(Actualizar)); 
    } 
    catch { } 
} 

и когда я закрываю форму я это сделать:

port.DataReceived -= new System.IO.Ports.SerialDataReceivedEventHandler(Recepcion); 

GC.Collect(); //also i try to remark this 
port.Close(); 
port.Dispose(); 
this.Close(); 

Это не всегда замерзает, когда-нибудь да ... когда-то нет ....

Я искал всю сеть по-прежнему не отвечает и не разрешает.

Я действительно в отчаянии. Я хочу найти решение здесь

+0

Что такого сложного? Нет решения? – GoldSoft

ответ

0

Вы пытались использовать внешний USB-последовательный адаптер (вместо COM1), чтобы исключить проблемы с оборудованием?

Не следует выполнять GC.Collect() после порта.Close() и port.Dispose().

Какая строка кода вызывает замораживание?

+0

Я работаю с USB-кабелем COM. Я отмечаю это как: GC.Collect(); , замораживание вызывает в port.Close(); – GoldSoft

+0

Вы нашли решение проблемы? Вы пробовали на другом компьютере? Возможно, это вызвано, если вы выполняете операцию закрытия из потока пользовательского интерфейса ... – random

 Смежные вопросы

  • Нет связанных вопросов^_^