串口发送数据时可以一个byte一个byte的发送数据,也可以一次性丢出,分多次丢出的话会导致一段数据被分成多段发出,中间的延时可能会超过2ms,与FW通讯时会出现异常。
public void WriteData(List<int>iBuffer)
{
byte[] sendData = new byte[iBuffer.Count];
string UpdateSendData = "";
try
{
serialPort1.DiscardInBuffer();
serialPort1.DiscardOutBuffer();
for (int i = 0; i < iBuffer.Count; i++)
{
sendData[i] = Convert.ToByte(iBuffer[i]);
UpdateSendData += sendData[i].ToString("X2") + " ";
}
serialPort1.Write(sendData, 0, iBuffer.Count); //一次性丢出
SerialTransData("Send",UpdateSendData);
writeLog.WriteTxtLog(iBuffer);
}
catch (Exception e)
{
MessageBox.Show(e.ToString(), "Tips", MessageBoxButtons.OK, MessageBoxIcon.Error);
PassData.ConnectFlag = false;
}
}
读取数据时,如果一次性读取数据不够完整,可以在接收到数据时进行一个延时,例如延时10ms,这样可以将缓冲区的数据一次性读出,而不会一段数据分两次接收。