Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
egorman44
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 8
#1

Прием по modbus. Как указать число считываемых байтов - C++

09.01.2014, 11:42. Просмотров 351. Ответов 1
Метки нет (Все метки)

Добрый день. Пишу программу для обмена по modbus'у rtu , я slave , принимаю команды и формирую ответы на них. Принимаемые команды могут иметь различную длину в байтах . При чтении из COM порта с помощью функции ReadFile необходимо указать число считываемых байтов, как поступают в этом случае? Читают побайтно ? или создают буфер заведомо больший размера всех команд и после дешифрирования команды выделяют необходимое количество байт? Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 11:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прием по modbus. Как указать число считываемых байтов (C++):

Получить число из байтов - C++
добрый день, получаю байты числа вот так: int number; int bytes; cin>>number; bytes=(number&0x000000FF); ...

Перевод байтов в число - C++
Добрый день! Написал небольшую программу для связи с прибором через сом порт. Прибор измеряет силу тока и передает данные через СОМ порт...

Посчитать количество считываемых из файла чисел - C++
Из текстового файла считываются целые числа. Вопрос. Как можно посчитать их количество?

Прием данных по Modbus RTU (МК905 + NIM741, ST + CodeSys) - Контроллеры PLC
Имеется система на базе МК905, позволяющая определять работоспособность некоторых устройств. В данной системе установлены мудули NIM741....

Прием байтов из порта - АСУ ТП
Добрый день! Вот функция приема байтов из порта, но почему то цикл while(!Terminated) проходит два раза. Первый раз он читает 27 байт...

Прием байтов через сокеты в консоль - проблема с кодировкой кириллицы - C#
Через сокет принимаю массив байтов, потом достаю из них символы и вывожу на консоль. Когда принимаю сообщение английской раскладкой - всё...

1
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
09.01.2014, 15:25 #2
читайте в начале шапку запроса (часть по которой можно понять какой размер имеет весь запрос). вторым вызовом считывайте хвост.

Добавлено через 1 час 28 минут
...как вариант:
-считывайте поля адреса и функции
-если адрес не ваш - молчите
-если ваш прибор не поддерживает указанную функцию - высылайте код ошибки
-если функция поддерживается - считывайте количество данных специфичное для указанной функции (хвост)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 15:25
Привет! Вот еще темы с ответами:

Прием данных по СОМ-порту. Проблемы с массивом принятых байтов - C#
Микроконтроллерное устройство каждую секунду на скорости 38400 шлет пакет, состоящий из признака начала пакета(*),Х,Х....Х,(#)-конец...

Modbus rtu: как из 4 байт получить вещественное число - АСУ ТП
Здравствуйте. у меня вопрос опять-таки про modbus rtu. посылаю запрос: 48 4 0 22 0 2 148 46, где 48 - адрес...

Асинхронные сокеты: Как организовать разделение на прием сообщений и прием файлов - C#
Изучив синхронные сокеты, перешел к изучению асинхронных. Столкнулся вот с чем, как, используя асинхронные сокеты, сделать на стороне...

Как указать в какой EditText вводить число? - Программирование Android
В дополнение к ранее созданной теме,такой вопрос. Имеются ,все те же три поля EditText,отключена виртуальная клавиатура,а ввод чисел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru