我正在用 C# 和 .net 2.0 编写这个
我被一个设备作为单个字节发送一个 4 字节数组。
我目前通过以下方式阅读此内容
while(m_ReadThreadisRunning)
{
if(canRead)
{
lock (m_Serialport)
{
try
{
//Check if data read needs reset
if(DataRead[3] != 0)
{
m_ReadBuffer.Add(DataRead);
DataRead = new byte[4];
ReadCounter = 0;
}
int ByteRead = m_Serialport.ReadByte();
Debug.Log("Byte : " + ByteRead);
try
{
DataRead[ReadCounter] = ConvertIntToByte(ByteRead);
}
catch(Exception e)
{
Debug.Log("Error when setting element in DataRead");
}
finally
{
if(ByteRead != 0)
ReadCounter ++;
}
}
catch(TimeoutException e)
{
}
catch(Exception e)
{
ReadCounter = 0;
}
}
}
}
问题是多个设备可以同时向我发送信息,这会导致一些数据最终出现在错误的数组中。
发送给我的字节数组总是以十六进制“2f”开头,以校验和结尾。
任何关于我可以做些什么来处理这个问题的建议将不胜感激。
[编辑]
抱歉,我知道我会错过重要信息。所有设备都连接到同一个端口。字节数组按以下顺序排列:- '2f' 'Device id' 'msg' 'Check-sum'。