|
Связь с внешним миром Modbus, RS232, RS485, Lon и другое. |
|
Опции темы | Поиск в этой теме |
05.08.2020, 19:22 | #1 |
Member
Регистрация: Jun 2020
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Нестандартные функции modbus
Здравствуйте!
Нужно обработать нестандартную функцию МБ В сети летают пакеты разной длинны Понятно что С++ Подскажите как проще определить что в буфере полный пакет? Я так понимаю нужно каким-то образом выловить таймаут (как?)? Или что-то проще есть? Спасибо |
06.08.2020, 02:46 | #2 | ||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Нестандартные функции modbus
Цитата:
Цитата:
Не за что __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 06.08.2020 в 02:59 |
||
11.08.2020, 12:02 | #3 |
Member
Регистрация: Jun 2020
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Нестандартные функции modbus
у меня modbus rtu (иначе не задавал бы глупых вопросов)
rtu фрейм начинается и заканчивается тишиной длительностью 3.5 символа Вопрос, как мне обнаружить, что в буфер пришел полный пакет и пора его обрабатывать? Что-то похожее на сниффер получается |
11.08.2020, 12:04 | #4 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Нестандартные функции modbus
Цитата:
Вы меня не поймите не правильно, но для программиста на С++ неумение пользоваться гуглом равноценно самоубийству. Не нравится гугл - используйте Апорт! __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
11.08.2020, 13:15 | #5 |
Member
Регистрация: Jun 2020
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Нестандартные функции modbus
Ну наверно я уже потыкался в гугл вдоволь, прежде чем писать. Ну не нашел подходящего ничего, ткните носом, буду признателен.
Код:
rlserial.cpp // Побайтный цикл считывания данных из порта if(!serial.select(QUERY_TIMEOUT)) return -1; // Истек таймаут ожидания данных while(1) { ret = serial.readChar(); // пришли новые данные в порт // Если функция ReadChar вернула отрицательное значение if(!serial.select(frame_timeout)) return len; // Истек фреймовый таймаут, значит определен конец пакета |
11.08.2020, 14:36 | #6 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Нестандартные функции modbus
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |