реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Программа с СОМ под Windows, обмен с устройством на 100гц
pil14
сообщение Feb 9 2012, 09:40
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 9-02-12
Пользователь №: 70 175



Требуется написать программу под Windows. Устройство подключено к компьютеру через СОМ порт. Программа должна с частотой не менее 100 гц посылать посылку по СОМ в утройство. Иногда устройство будет отвечать и в этом случае программа должна производить некоторые операции и выводить их на экран. Я пробывал реализовать следующим образом: создал поток в котором в цикле с помощью функции QueryPerformanceCounter определяю задржки в 10мс и соответственно когда требуется пишу данные в СОМ. НО при такой реализации т.к. цикл постоянно молотит загрузка процессора на 100% и хотелось бы этого избежать. Надеюсь что-нибудь посоветуете.
Go to the top of the page
 
+Quote Post
_pv
сообщение Feb 9 2012, 09:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(pil14 @ Feb 9 2012, 15:40) *
Требуется написать программу под Windows. Устройство подключено к компьютеру через СОМ порт. Программа должна с частотой не менее 100 гц посылать посылку по СОМ в утройство. Иногда устройство будет отвечать и в этом случае программа должна производить некоторые операции и выводить их на экран. Я пробывал реализовать следующим образом: создал поток в котором в цикле с помощью функции QueryPerformanceCounter определяю задржки в 10мс и соответственно когда требуется пишу данные в СОМ. НО при такой реализации т.к. цикл постоянно молотит загрузка процессора на 100% и хотелось бы этого избежать. Надеюсь что-нибудь посоветуете.

добавить, Sleep(5) сразу после отсылки данных.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Feb 9 2012, 10:34
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(pil14 @ Feb 9 2012, 12:40) *
Надеюсь что-нибудь посоветуете.


Вот, еще вот это гляньте:

http://www.realcoding.net/article/view/2416
Go to the top of the page
 
+Quote Post
Demeny
сообщение Feb 9 2012, 10:53
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Можно использовать функцию SetWaitableTimer и поток синхронизировать по хэндлу таймера, заданному первым параметром, в этом случае поток будет просыпаться только через заданное время.
А можно поступить совсем просто - изучите функцию SetCommTimeouts, порт с помощью неё можно сконфигурировать таким образом, что функция ReadFile будет периодически возвращать управление, даже если никаких данных на вход порта не поступало, тогда можно синхронизировать приёмный поток функцией ReadFile и передавать данные.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Feb 9 2012, 12:32
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



В проекте терминалки во вложении Вы найдёте почти всё, что Вам надо.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 10:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016