2015-10-14 67 views
-1

我正在做简单的COM端口读取应用程序。以下是我的DataReceive事件代码。问题是:当我使用终端在COM端口上发送更多字符时,例如“TEST”,它只读取前两个字符,而计数器只增加2.这种情况一直没有发生,接收数据多长时间。 任何想法什么是错的? 谢谢!Visual Studio#串行端口ReadChar()

 public void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 
     GlobalVariable.ReceivedCharacter = serialPort1.ReadChar(); 
     GlobalVariable.Counter = GlobalVariable.Counter + 1; 
    } 

回答

0

发生这种情况,因为您只读取一个字符的消息。如果您需要从串口读取文本,请使用ReadExisting。简单示例:

public void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    string recievedtext = serialPort1.ReadExisting(); 
} 

有关详细信息,请参阅MSDN

如果你只需要一个字符,你可以写这样的事情:

var mychararray = recievedtext.ToCharArray();