Segnetics

Вернуться   Segnetics > Форум Segnetics > Связь с внешним миром

Связь с внешним миром Modbus, RS232, RS485, Lon и другое.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.08.2020, 19:22   #1
Antioff
Member
 
Регистрация: Jun 2020
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Нестандартные функции modbus

Здравствуйте!

Нужно обработать нестандартную функцию МБ
В сети летают пакеты разной длинны
Понятно что С++
Подскажите как проще определить что в буфере полный пакет?
Я так понимаю нужно каким-то образом выловить таймаут (как?)? Или что-то проще есть?

Спасибо
Antioff вне форума   Ответить с цитированием
Старый 06.08.2020, 02:46   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Нестандартные функции modbus

Цитата
Сообщение от Antioff Посмотреть сообщение
Здравствуйте!

Нужно обработать нестандартную функцию МБ
В сети летают пакеты разной длинны
Понятно что С++
Подскажите как проще определить что в буфере полный пакет?
Подскажите как проще определить, RTU у вас, ASCII или TCP версия модбаса?



Цитата
Сообщение от Antioff Посмотреть сообщение
Я так понимаю нужно каким-то образом выловить таймаут (как?)? Или что-то проще есть?
А что по этому поводу говорит даташит на выбранную версию модбаса?



Цитата
Сообщение от Antioff Посмотреть сообщение
Спасибо
Не за что


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 06.08.2020 в 02:59
Arsie сейчас на форуме   Ответить с цитированием
Старый 11.08.2020, 12:02   #3
Antioff
Member
 
Регистрация: Jun 2020
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Нестандартные функции modbus

у меня modbus rtu (иначе не задавал бы глупых вопросов)
rtu фрейм начинается и заканчивается тишиной длительностью 3.5 символа
Вопрос, как мне обнаружить, что в буфер пришел полный пакет и пора его обрабатывать?
Что-то похожее на сниффер получается
Antioff вне форума   Ответить с цитированием
Старый 11.08.2020, 12:04   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Нестандартные функции modbus

Цитата
Сообщение от Antioff Посмотреть сообщение
у меня modbus rtu (иначе не задавал бы глупых вопросов)
rtu фрейм начинается и заканчивается тишиной длительностью 3.5 символа
Вопрос, как мне обнаружить, что в буфер пришел полный пакет и пора его обрабатывать?
Что-то похожее на сниффер получается
Как понять ваш вопрос "как?"? Набираете в гугле что-то типа "c++ библиотека modbus rtu" и смотрите как делают другие люди. Одна только подсказка: нет смысла обрабатывать пакет, который предназначен не вам.

Вы меня не поймите не правильно, но для программиста на С++ неумение пользоваться гуглом равноценно самоубийству. Не нравится гугл - используйте Апорт!


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 11.08.2020, 13:15   #5
Antioff
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; // Истек фреймовый таймаут, значит определен конец пакета
Это оно?
Antioff вне форума   Ответить с цитированием
Старый 11.08.2020, 14:36   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Нестандартные функции modbus

Цитата
Сообщение от Antioff Посмотреть сообщение
Это оно?
Похоже на правду.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Особенности реализации Modbus TCP Gel Вопросы о программировании 3 31.08.2018 13:50
Honeywell MVC80-DH10M LordN Связь с внешним миром 30 28.11.2016 14:21
ModBus функции - совместимость lau Связь с внешним миром 50 13.11.2016 03:19
Конвертер карты памяти в файл конфигурации Modbus Universal MasterOPC Server 32 Arsie Библиотека макросов 0 25.04.2016 13:38


Часовой пояс GMT +4, время: 16:51.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023