我需要"听"在串行端口上传入流量并对其执行某些操作。但是当用户点击按钮时,我需要将数据写入该串口。
为了读取传入的消息,我使用没有超时的ReadByte()。当我设置Timout时,当没有角色出现时会抛出异常(大部分时间都会发生这种情况!)。
但是这个"阻止"串口。现在我无法在另一个线程(执行按钮点击事件的线程)中写入它。我当前的解决方案是杀死尝试读取数据然后开始将数据写入其中的线程。
我知道这不是一个好方法,但我还能做什么?
我正在尝试为我的移动调制解调器创建一个AT Commands gui应用程序。
答案 0 :(得分:2)
在使用ReadByte()之前,检查缓冲区中是否有字符等待。请注意,我特意寻找10个字符。
我目前正在做的方式是:
int datalen = serialPort1.BytesToRead;
label1.Text="Readexisting";
if (datalen >=10)
{
string data = serialPort1.ReadExisting();
label1.Text=data;
}