Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 8

Modbus master

29.01.2014, 13:30. Показов 2785. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день . Пишу программу для общения по протоколу Modbus. Формирую команду, отсылаю ее,жду ответа, если в течении 10 мс ответ не приходит, то посылаю следующую команду. Знаю как отослать команду и ждать ответа :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
WriteFile(hPort, command, length_in, &length_in, NULL);
 
WaitCommEvent(hPort, &mask, &overlapped);                
   signal = WaitForSingleObject(overlapped.hEvent, INFINITE);  
   if(signal == WAIT_OBJECT_0)            
    {
     if(GetOverlappedResult(hPort, &overlapped, &temp, true)) 
      if((mask & EV_RXCHAR)!=0)     
       {
        ClearCommError(hPort, &temp, &comstat);   
        btr = comstat.cbInQue;
        if(btr)                            
        {
            ReadFile(hPort, bufrd, btr, &temp, &overlapped);     
            Decoding();
        }
       }
    }
Господа подскажите как сделать , так что бы процесс ожидания команды занимал 10 мс ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2014, 13:30
Ответы с готовыми решениями:

Процессы - Slave и Master
Ребят как правильно запускать процессы slave и master? они должны находится в 1 папке или разных?как разные проекты?просто мы имеем 2 main ...

C++ modbus
Здравствуйте! Задача вообщем такая. Есть параметры, передаваемые с метанольного цеха диспетчеру по интерфейсу RS-485 по протоколу modbus....

Как правильно создать ModBus ASCII запрос?
Адрес - 26 Код функции 03h начало - 0000 Количество -0004 расчет LRC char calculateLRC( char b, int n){ char lrc...

6
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
29.01.2014, 15:19
sleep(10) ?

Это кстати даже не WinApi фнкция, а стандартная из Си.
0
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
29.01.2014, 18:47
лучше использовать таймер.
1
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
29.01.2014, 21:27
Цитата Сообщение от ssXXss Посмотреть сообщение
лучше использовать таймер.
чем?.. а то голословие типа "я так думаю" - всё равно что на ветер слова пускать.
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 8
29.01.2014, 22:54  [ТС]
Izual, Izual, Izual,
Цитата Сообщение от Izual Посмотреть сообщение
sleep(10) ?
на сколько я понимаю, sleep просто остановит поток выполнения на 10 мс . И тогда , программа не дождется события прихода байта? или же во время sleep , программа реагирует на появление события ?
0
841 / 347 / 68
Регистрация: 20.11.2012
Сообщений: 814
29.01.2014, 23:28
Лучший ответ Сообщение было отмечено egorman44 как решение

Решение

Цитата Сообщение от egorman44 Посмотреть сообщение
WaitCommEvent(hPort, &mask, &overlapped);
If the overlapped operation cannot be completed immediately, the function returns FALSE and the GetLastError function returns ERROR_IO_PENDING, indicating that the operation is executing in the background. When this happens, the system sets the hEvent member of the OVERLAPPED structure to the not-signaled state before WaitCommEvent returns, and then it sets it to the signaled state when one of the specified events or an error occurs. The calling process can use one of the wait functions to determine the event object's state and then use the GetOverlappedResult function to determine the results of the WaitCommEvent operation.
C
1
2
3
4
DWORD WINAPI WaitForSingleObject(
  _In_  HANDLE hHandle,
  _In_  DWORD dwMilliseconds
);
dwMilliseconds [in]
The time-out interval, in milliseconds. If a nonzero value is specified, the function waits until the object is signaled or the interval elapses. If dwMilliseconds is zero, the function does not enter a wait state if the object is not signaled; it always returns immediately. If dwMilliseconds is INFINITE, the function will return only when the object is signaled.
WAIT_OBJECT_0
The state of the specified object is signaled.

WAIT_TIMEOUT
The time-out interval elapsed, and the object's state is nonsignaled.
1
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
30.01.2014, 00:38
Цитата Сообщение от Izual Посмотреть сообщение
всё равно что на ветер слова пускать.
я не пускаю слов на ветер, а предполагаю что вы в теме, хотя бы самую малость , как и я, и по этому посоветовал использовать вам таймер . его плюсы очевидны. например использование таймера позволяет совершать некоторую операцию по прошествии N-го промежутка времени , при этом исполняя побочные задачи принцип асинхронности.если у вас одно поточное приложение и вам совсем не нужно обрабатывать что то до прихода некоторого сигнала, то конечно можно использовать и sleep(...) но и то не на длительных промежутках времени ,ибо кроме вас есть еще ОСЬ у которой сои приоритеты. под виндой таймер хорош тем что при его установке можно реагировать только на сообщения об окончании какого то временного интервала. то бишь время вышло - пришел сигнал, но нас ни что не останавливает делать свои дела пока нет сигнала.кстати это дело очень часто используется и в ядре ос, но конечно со своими особенностями.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2014, 00:38
Помогаю со студенческими работами здесь

Dsd-master 1.7 для декодирования d-star
здравствуйте уважаемые форумчане, мне нужна помощь в запуске программы через bash в cygwin в windows но данная программа на данный момент...

Modbus master на STM32F401RE
Добрый день, у меня появилась задача, поднять Modbus-Master RTU на STM32F401RE. У меня пока только один вопрос)) Может у кого-нибудь есть...

ModBus RTU master для компа
Может у кого есть любимая бесплатная программа эмулятора ModBus RTU master для компа. Вообщем есть устройство "раб" подключал к...

Помогите допилить Modbus Master на STM32
Привет, дорогие! Собираю проект на плате STM32F4Dicsovery, подключил Modbus Slave через библиотеку FriiModbus. Отыскал на просторах...

Java библиотеки для Serial Master Modbus rtu
Всем привет. У кого есть опыт использования Java библиотек для общения с устройствами через конвертор интерфейсов USB-RS485 протокол Modbus...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru