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

 
 
> RS232 под win, частота опроса СОМ порта под WinXP
paskal
сообщение Jul 21 2011, 12:22
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 29-10-06
Из: Тула
Пользователь №: 21 769



Нужно соединить компутер с устройством через RS232. Обмен такой. Устройство непрерывно шлет пакеты по 16 байт и принимает ответные пакеты. Скорость обмена 115200, частота отправки пакетов 50 Гц.
Под WinXP пользуюсь стандартными API. В билдере я открываю ком порт через CreateFile, дальше вешаю на таймер функцию которая проверяет сколько байт в приемном буфере, если не 0, то считывает буфер.
Проблема в том что считывается не 16 байт, а от 80 до 96. Т.е. получается что виндосовский таймер может работать с частотой 18 Гц и никак не чаще. Подскажите способ чтоб мне уложится в частоту 50 Гц.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
paskal
сообщение Jul 21 2011, 18:46
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 29-10-06
Из: Тула
Пользователь №: 21 769



А нет ли примерчика приема через отдельный поток или работы в асинхронном режиме?
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 21 2011, 19:08
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(paskal @ Jul 21 2011, 21:46) *
А нет ли примерчика приема через отдельный поток или работы в асинхронном режиме?

Нужно ли усложнять?
Если уж очень надо работать с задержками, при вызове read укажите количество байтов = 1 и считайте время от одного байта до другого.

типа

Код
...
for (;;)
{ ReadFile(port, in_buffer, 1, &numbytes,NULL );
   if (numbytes) break;
}
   current_time=GetCurrentTime();
   delay_between_bytes=current_time-last_byte_time;
   last_byte_time=current_time;
   if (delay_between_bytes>PAUSE_TIME)   // обнаружена пауза - сбросить индекс
...


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- paskal   RS232 под win   Jul 21 2011, 12:22
- - Dog Pawlowa   Цитата(paskal @ Jul 21 2011, 15:22) Обмен...   Jul 21 2011, 12:39
|- - PhX   Цитата(Dog Pawlowa @ Jul 21 2011, 16:39) ...   Jul 21 2011, 12:42
|- - Dog Pawlowa   Цитата(PhX @ Jul 21 2011, 15:42) Предложи...   Jul 21 2011, 13:36
- - DpInRock   Опрашивайте порт в отдельном потоке. Никаких пробл...   Jul 21 2011, 12:45
- - Сергей Борщ   QUOTE (paskal @ Jul 21 2011, 15:22) Подск...   Jul 21 2011, 12:47
- - Палыч   Цитата(paskal @ Jul 21 2011, 16:22) получ...   Jul 21 2011, 12:48
|- - paskal   Цитата(Палыч @ Jul 21 2011, 16:48) Вас не...   Jul 21 2011, 13:51
|- - Dog Pawlowa   Цитата(paskal @ Jul 21 2011, 16:51) измен...   Jul 21 2011, 14:00
|- - Сергей Борщ   QUOTE (paskal @ Jul 21 2011, 16:51) Не со...   Jul 21 2011, 14:03
|- - Палыч   Цитата(paskal @ Jul 21 2011, 17:51) А ест...   Jul 21 2011, 15:07
|- - paskal   Цитата(Палыч @ Jul 21 2011, 19:07) Для пр...   Jul 21 2011, 16:14
|- - Палыч   Цитата(paskal @ Jul 21 2011, 20:14) Но ве...   Jul 21 2011, 17:58
- - ibiza11   Решалась подобная задача, писал на PureBasic. Откр...   Jul 21 2011, 12:59
- - haker_fox   QUOTE (paskal @ Jul 21 2011, 21:22) Нужно...   Jul 21 2011, 16:45
- - Danis   Выкладываю пример создания и обработки событий мул...   Jul 22 2011, 05:38


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:38
Рейтинг@Mail.ru


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