![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обмен данными через COM порт [D6, Win95/98, WinXP]
Arsenij © (2003-12-17 16:26:00)
Для получения данных через порт я отправляю WriteFile(comm...) запрос на количество получаемых блоков данных(число длиной в слово). Затем ReadFile(comm...) я их читаю (блоки по 10 чисел длиной тоже слово). Может быть кто-то подскажет почему у меня не получается передать запрос и получить ответ. P.S. ReadFile крутится в Thread-е; WriteFile находится в цикле; перед WriteFile я убиваю поток с процедурой чтения, а затем запускаю вновь. При этом если я выполняю TerminateThread в цикле там где WriteFile, то вызова процедуры с ReadFile вообще не происходит (еще один вопрос:)), поэтому убийство я выполняю в процедуре с ReadFile, сразу после чтения и затем возвращаюсь в цикл с WriteFile.
tesseract (2003-12-18 15:02:00) [1]
Скорее всего просто неправильно выполняешь запрос на чтение, нельзяубивать потоки с чтением/записью направо и налево, и не забывай чистить порт, и про то что у оборудования есть такая фишка как время реакции (обычно около 100мс).
Talla2k (2003-12-18 00:38:00) [2]
Я считаю,что не имеет смысла ReadFile делать в потоке!!!
Читай\пиши по очереди,без потока!!!На крайняк контролируй таймауты,что-бы не было ошибок!!!Ну вроде все!!!
З.Ы. Да в принципе рекомендуется работать в потоке,но не readfile а все в целом(init,read,write,close)!Дабы запуск фильма или прочего не нарушил работу с устройством!
REA (2003-12-17 16:34:00) [3]
Хитрая логика. Нужно проще.
См. Бритва Оккама, Kiss принцип программирования.