2016-01-02 97 views
-2

我试图从端口读取char。写入港口完美,阅读 - 不是很多。从串口c读取数据#

这里是我的代码:

private void Com_Port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    char val; 
    try 
    { 
     val = Convert.ToChar(Com_Port.ReadByte()); // get the new byte from port  
     label6.Text = Convert.ToString(val); 
    } 
    catch (Exception) { } 
} 

label6不改变它的文本。该代码完美地发送数据。 更多信息:当我将数据发送到端口时,它会将数据回传给我。 在过去的4个小时里打破了我的头。

+0

请仔细阅读[问]和[编辑]你的问题说明你希望看到什么,到底发生了什么,你已经尝试过什么来解决这些分歧。单靠“不行”我们做不了多少。 – CodeCaster

+0

_“label6不会改变它的文本”_--所以在你空的catch中放一个断点并检查异常。 – CodeCaster

+0

DataReceived事件在工作线程上触发。工作线程不允许更新UI,需要BeginInvoke。不要隐藏异常。 –

回答

1

你也可以使用redexisting方法如果字符串为null,则尝试读取一个字符串,这意味着硬件中存在一些问题。如果不为空,然后处理您的字符串,并提取特定的字符

private void Com_Port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 
     char val; 
     try 
     { 
      SerialPort sp = (SerialPort)sender; 
      string data = sp.ReadExisting(); 
      val=Your_method_to_process_string(data); 
      label6.Text = Convert.ToString(val); 
     } 
     catch (Exception) { } 
    }