我正在进行一次串口控制测试,但不知道为什么我必须在读取serialport DataReceived事件之后立即调用sleep(),就像这样
void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(33); // <-- necessary to put, 33 is the lowest number in my PC
int cntBytes = myComPort.BytesToRead; // length = 24
myComPort.Read(toBuffer, 0, curtBytes); // complete data (25 20 32 30 2C 56 41 2C 2D 35 35 0D 0A 25 20 32 30 2C 56 41 2C 46 0D 0A)
}
但是如果我事先没有睡觉就阅读,我会在阅读时遇到麻烦。完整的字符串将被分成几次
void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//Thread.Sleep(33); // NO sleep here
int cntBytes = myComPort.BytesToRead; // length = 4
myComPort.Read(toBuffer, 0, curtBytes); // incomplete data (25 20 32 30)
}
这让我很烦恼。如果你知道任何线索,我将非常感激。