Чтение 4-байтового массива, отправленного как отдельные байты
Я пишу это с 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' 'Идентификатор устройства' 'msg' 'Контрольная сумма'.
1 ответ
Я просто собираюсь игнорировать основную проблему.
У меня нет контроля над оборудованием, так как этот аспект был передан на аутсорсинг.
Он включает команду, с помощью которой я могу проверить статус, чтобы я мог, когда получаю хитрые массивы, просто опрашивать все устройства на предмет их статуса. Но когда все устройства начнут посылать мне свой статус, у меня больше шансов получить запутанную информацию.
Я просто отбрасываю сомнительные данные и надеюсь на лучшее.
Однако в свободное время я начал создавать простые устройства, чтобы я мог охватить и аппаратные части проектов.
Я думаю, что лучше всего будет использовать какой-нибудь HUB со всеми подключенными к нему устройствами?
Любые советы или заметки приветствуются.