COM под XP

Apr 09, 2004 6 Replies

Hi All,



Вот, выкопалась проблема на пустом месте. Как аккуратно работать с COM-портом в XP? Имеется в виду конкретная проблема - проверка приема байта? Как это сделать через DCB (?)


Hi Ilia, hope you are having a nice day!

09 Апр 04, Ilia Tarasov wrote to All:

IT> Вот, выкопалась проблема на пустом месте. Как аккуратно работать с IT> COM-портом в XP? Имеется в виду конкретная проблема - проверка приема IT> байта? Как это сделать через DCB (?)

Hе совсем понимаю причем здесь dcb. Что именно интересует? _Факт_ приема байта уартом? Тогда для этого есть WaitCommEvent и SetCommMask. Если интересует сам байт, тогда можно просто обойтись ReadFile'ом с правильно сконфигурированными таймаутами в COMMTIMEOUTS. Если можно конкретезируй задачу.

WBR, AVB

Sat Apr 10 2004 11:01, Alexey V Bugrov wrote to Ilia Tarasov:

IT>> Вот, выкопалась проблема на пустом месте. Как аккуратно работать с IT>> COM-портом в XP? Имеется в виду конкретная проблема - проверка приема IT>> байта? Как это сделать через DCB (?)

AVB> Hе совсем понимаю причем здесь dcb. Что именно интересует? _Факт_ приема AVB> байта уартом? Тогда для этого есть WaitCommEvent и SetCommMask. Если AVB> интересует сам байт, тогда можно просто обойтись ReadFile'ом с правильно AVB> сконфигурированными таймаутами в COMMTIMEOUTS. Если можно конкретезируй AVB> задачу.

Возникла проблема подвисания программы при отключении прибора, причем вытащенный модуль с примерами использовал только ReadFile без проверки факта приема. С портами было проще...

Спасибо за подсказку. Видимо, таймаутов хватит.

Ia ispolzuiu COM port v otdel'nom threade. Togda on sovershenno nezavisim ot ostal'noi programmi. Dazhe esli "podvis" na ReadFile.

Rudolf

Hi Alexander, hope you are having a nice day!

11 Апр 04, Alexander Derazhne wrote to Ilia Tarasov:

IT>> Возникла проблема подвисания программы при отключении прибора, IT>> причем вытащенный модуль с примерами использовал только ReadFile IT>> без проверки факта приема. С портами было проще... AD> Под Win32 я ничего подобного не писал (да и вообще не писал :-)) AD> ), но коллега, занимавшийся штрих-сканнером использовал что-то AD> вроде WaitForMultiplayObject. Знаю только с его слов - он в курилке AD> жаловался, дескать, сложно получается, намного сложней чем в осдвашном AD> прототипе.

Для вышеприведенного случая никакие WaitForMultipleObjects и даже WaitForSingleObjects не нужны. Есть SetCommTimeouts которая однозначно решает данную проблему.

WBR, AVB

Hello, Ilia! You wrote to Alexey V Bugrov on Sun, 11 Apr 2004 01:45:39 +0400:

IT>>> Вот, выкопалась проблема на пустом месте. Как аккуратно работать с IT>>> COM-портом в XP? Имеется в виду конкретная проблема - проверка IT>>> приема байта? Как это сделать через DCB (?)

AVB>> Hе совсем понимаю причем здесь dcb. Что именно интересует? _Факт_ AVB>> приема байта уартом? Тогда для этого есть WaitCommEvent и AVB>> SetCommMask. Если интересует сам байт, тогда можно просто обойтись AVB>> ReadFile'ом с правильно сконфигурированными таймаутами в AVB>> COMMTIMEOUTS. Если можно конкретезируй задачу.

IT> Возникла проблема подвисания программы при отключении прибора, IT> причем вытащенный модуль с примерами использовал только ReadFile без IT> проверки факта приема. С портами было проще...

Под Win32 я ничего подобного не писал (да и вообще не писал :-)) ), но коллега, занимавшийся штрих-сканнером использовал что-то вроде WaitForMultiplayObject. Знаю только с его слов - он в курилке жаловался, дескать, сложно получается, намного сложней чем в осдвашном прототипе.

With best regards, Alexander Derazhne.

Привет Ilia!

Пят Апp 09 2004 23:39, Ilia Tarasov -> All:

IT> Вот, выкопалась проблема на пустом месте. Как аккуратно работать с IT> COM-портом в XP? Так-же, как и в пpедыдущих веpсиях.

IT> Имеется в виду конкретная проблема - проверка приема IT> байта? Как это сделать через DCB (?) Если под "пpовеpкой пpиема байта" подpазумевается опpеделение наличия данных в входной очеpеди, то см. ClearCommError, паpаметp COMSTAT.

Hа этом все, пока. Anton Abrosimov. ... Здесь были зверски убиты время и молодость

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required