我正在使用以下代码使用串行端口事件处理程序接收消息。但它接受任何。我没有得到错误。代码中断“string msg = comport.Readline()
”我做错了吗?
public partial class SerialPortScanner : Form
{
private SerialPort comPort = new SerialPort();
public SerialPortScanner()
{
InitializeComponent();
comPort.Open();
comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);
}
void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (comPort.IsOpen == true)
{
string msg = comPort.ReadLine();
MessageBox.Show(msg);
}
}
}
答案 0 :(得分:1)
从SerialPort对象接收数据时,在辅助线程上引发DataReceived事件。因为此事件是在辅助线程而不是主线程上引发的,所以尝试修改主线程中的某些元素(例如UI元素)可能会引发线程异常。
来源:Check this
答案 1 :(得分:1)
ReadLine
取决于拥有NewLine
字符。使用Read
方法可能会更好运。另请参阅BytesToRead
属性。