私はこれをC#と.net2.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;
}
}
}
}
問題は、複数のデバイスが同時に情報を送信する可能性があり、これにより一部のデータが間違った配列になってしまうことです。
私に送信されるバイト配列は、常に16進数の「2f」で始まり、チェックサムで終わります。
これを処理するために私ができることについてのアドバイスをいただければ幸いです。
[編集]
申し訳ありませんが、重要な情報を見逃してしまうことはわかっていました。すべてのデバイスが同じポートに接続されています。バイト配列は次の順序です:-'2f''デバイスID''msg''チェックサム'。