Есть такая штука как BitConverter.ToSingle
https://msdn.microsoft.com/ru-ru/lib...=vs.90%29.aspx
BitConverter в сочетании с Array.Reverse идеально подходит для модбаса.
ну и отдельного потока для опроса не хватает....
Есть такая штука как BitConverter.ToSingle
https://msdn.microsoft.com/ru-ru/lib...=vs.90%29.aspx
BitConverter в сочетании с Array.Reverse идеально подходит для модбаса.
ну и отдельного потока для опроса не хватает....
Есть NModbus (C#) и libmodbus (C). Как пользоваться первым я уже рассказывал: http://www.owen.ru/forum/showthread.php?t=20122
Помощь в настройке оборудования.
Жариков Алексей
Skype: zharikovaleksey
e-mail: menatwork2014@yandex.ru
разбор байтов в модбасовском ответе по нужным форматам
nn-номер байта с которого разбор начинается.
хорошая библиотека, и на VB без проблем, и не нужно с сокетами заморачиваться.Код:Select Case tFormat_SelectedIndex(x) Case 0 'INT Array.Reverse(inBuffer, nn, 2) dataStr(x) = BitConverter.ToInt16(inBuffer, nn) nn = nn + 2 Case 1 'UINT Array.Reverse(inBuffer, nn, 2) dataStr(x) = BitConverter.ToUInt16(inBuffer, nn) nn = nn + 2 Case 2 'DINT If nn >= bez_srs - 2 Then Exit For Array.Reverse(inBuffer, nn, 4) dataStr(x) = BitConverter.ToInt32(inBuffer, nn) nn = nn + 4 Case 3 'UDINT If nn >= bez_srs - 2 Then Exit For Array.Reverse(inBuffer, nn, 4) dataStr(x) = BitConverter.ToUInt32(inBuffer, nn) nn = nn + 4 Case 4 'REAL If nn >= bez_srs - 2 Then Exit For Array.Reverse(inBuffer, nn, 2) Array.Reverse(inBuffer, nn + 2, 2) dataStr(x) = BitConverter.ToSingle(inBuffer, nn) nn = nn + 4 End Select
В моём примере отсутствует зависимость от сторонних библиотек. Что не мало важно.
Помощь в настройке оборудования.
Жариков Алексей
Skype: zharikovaleksey
e-mail: menatwork2014@yandex.ru
http://bash.im/quote/415033 только лопату покупать в данном случае не нужно.
К видео исходник приложить нужно, иначе толку мало...А на BitConverter.ToSingle нет смысла обижаться, знали бы Вы об этом раньше, не нагородили бы кучу строк при преобразовании к float.
Обычно за подсказки благодарят.
Прежде чем купить лопату, ты должен сначала деньги где-то достать. На это уйдёт больше года.
Плюс люди узнают нутро протокола.
К тому же я за олдскульное программирование. Не кодил ты на асме. Там вообще нет библиотек.
Помощь в настройке оборудования.
Жариков Алексей
Skype: zharikovaleksey
e-mail: menatwork2014@yandex.ru
Тоже использую BitConverter и не только. Штатные процедуры C# для тех или иных задач очень экономят время и код.
з.ы. не программист, просто так получилось....
Иногда понимая логику работы ПЛК ищу что-то подобное в языке, которым пользуюсь и на удивление есть практически все, что необходимо.
Единственное, почему-то запрощено работать с массивами через индексы в безопасном режиме. Ну и ладно....
voale, если вам не в лом разбирать чужие исходники, есть прекрасная реализация Modbus TCP, RTU, ASCII у разработчика Rapid SCADA, исходники лежат на гитхабе. Найдете через официальный сайт.
Изучайте, творите и так далее... Как раз на C#
Последний раз редактировалось Kish; 24.05.2019 в 14:44.