![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод работы с COM портом в отдельный поток... [D7, Win95/98, WinME, WinXP]
MAPIIIAJL © (2003-02-23 12:09:00)Люди нужна помощь!!! Суть проблемы: На COM порт подключено устройство которое передает данные с частотой 30Hz, скорость порта 9600, длинна сообщениея 16 байт. Моя прога осуществляет прием каждого сообщения функцией ReadFile (hCommPort,reply,l,dwSize,Nil); Чтение по таймаутам. В промежетках между опросами порта я осуществляю некие расчеты с принятыми байтами, запись данных в лог файл и вывод полученных измерений на график. Но... я не успеваю сделать эти манипуляции, много сообщений пропадает. Хуже всего срывается синхронизация и я начинаю принимать слипшиеся сообщения. Я так думаю, что нужно вывести работу с приемом из порта в отдельный поток, и работать по событиям. Но как это сделать незнаю... Приведите пожалйста небольшой примерчик. Заранее спасибо.!!!
MAPIIIAJL (2003-02-25 00:27:00) [1]Slym ©
Большое спасибо за идею. Буду пробовать.
Slym (2003-02-24 15:12:00) [2]Делаешь поток чтения из Ком
Данные пихаешь в "Хранилище" с организацией типа FIFO (первый пришел первый ушел), его можно сделать из ТЛист...
А в главном потоке проги проверяешь колво строк в Хранилище
и обрабатываешь имеющиеся.
Можно сделать хранилище фиксированного размера, тогда при сбоях, нехватки проц. времени затираешь первые строки сдвигом и дописываещь т.е. данные теряются но чтение из кома не выходит из нужного режима
jack128 (2003-02-23 15:19:00) [3]TThread + F1