0
您好我正在编写一个应用程序使用串行端口与设备一起使用。我已经编写了代码,并且在我提出突破点时正常工作,但是当我用突破点调试它时,预期的数据是一部分。例如,当我放置断点并从端口读取时,正确的数据是“ali”,但是当我删除断点时,数据将是“a”,“li”。 这里是写我的代码片段,并从端口读:延迟从串口读取和写入
fname1 = Encoding.Default.GetBytes("write1" + dataRow[0].ToString());
comport.Write(fname1,0,fname1.Length);
lname1 = Encoding.Default.GetBytes("write4" + dataRow[1].ToString());
comport.Write(lname1, 0, lname1.Length);
c3 = Encoding.Default.GetBytes("read" +0x1);
comport.Write(c3,0,c3.Length);
comport.Read(fname1, 0, fname1.Length);
string s = Encoding.Default.GetString(fname1);
MessageBox.Show(s);
我认为原因我已经编码有一些浪费时间,这说明了打破我描述点的效果。
我的解决方法是延迟两次连续读取或写入。我对么 ?如果是的话我怎么能实现呢?有没有更好的办法?
请包括你在哪里做“阅读”的代码。 –
它是在按钮单击和上述代码的第二部分进行读取。我应该发送“read”和一个块号作为字节到我的设备来操作读取命令 – user2628363
不,我的意思是你调用'SerialPort.Read'方法的那部分代码。你在'DataReceived'事件处理程序中执行它吗? –