|
DataReceived事件如何正确的得到想要的回复信息
[复制链接]
想做的事情是:每发一次“AT”指令到串口,等到串口返回的信息“OK”或是“ERROR”后,再执行下一条的AT指令
我想有两种方式:
1、用的是SerialPort里的DataReceived事件,但现在发一个命令,事件有时会被触发几次,可能在最后一次读取的字符串才是包含“OK”或是“ERROR”的字符串。DataReceived是用的辅助线程,那么在event被触发的同时,主程序会不会已经运行到发送下一条命令了,主程序里都还没有收到上条命令的回复。
2、在命令后面加Thread.Sleep(100),
就像这样:
sendCommand("AT\r");
Thread.Sleep(100);
sendCommand("AT+CMGF=0\r");
Thread.Sleep(100);
...
最后,事件触发时,读出sp.ReadExisting();的缓冲区里的字节,看到好象有些命令根本没有被执行。
希望大家给点建议,怎么解决这个问题?
|
|