Проблема с работой COM в Lazarus

Модератор: Модераторы

Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

У WinCE API практически такой же как и Win32. Надо помнить одно: WinCE при вводе/выводе не поддерживает OVERLAPPED режим!
Открываем:

Код: Выделить всё

CreateFile('COM1:',GENERIC_READ or GENERIC_WRITE,0, nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0); 

устанавливаем настройки
читаем:

Код: Выделить всё

ReadFile(fHandle,aBuff,s,c,nil)

пишем:

Код: Выделить всё

WriteFile(fHandle,aBuff,aSize,c,nil)

закрываем:

Код: Выделить всё

FileClose(fHandle);


Вы видите различие по отношению к Win32?
Fantomas
новенький
Сообщения: 14
Зарегистрирован: 09.04.2008 19:12:50

Сообщение Fantomas »

Mr.Smart писал(а):У WinCE API практически такой же как и Win32. Надо помнить одно: WinCE при вводе/выводе не поддерживает OVERLAPPED режим!
Открываем:

Код: Выделить всё

CreateFile('COM1:',GENERIC_READ or GENERIC_WRITE,0, nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0); 

устанавливаем настройки
читаем:

Код: Выделить всё

ReadFile(fHandle,aBuff,s,c,nil)

пишем:

Код: Выделить всё

WriteFile(fHandle,aBuff,aSize,c,nil)

закрываем:

Код: Выделить всё

FileClose(fHandle);


Вы видите различие по отношению к Win32?


Все правильно сказал. Добавлю только, что FileClose(fHandle) == Windows.CloseHandle(fHandle). А если требуется асинхронные чтение/запись, то можно создать поток, в котором и будет происходить файловая операция, после завершения которой завершит работу и поток. Все это вполне адекватно работает под WinCE (Windows Mobile 5.0 и 6.0).

Непонятно только, зачем люди упорно вставляют в свой код SetCommMask, если потом нигде не пользуются WaitCommEvent?
Indikator
незнакомец
Сообщения: 3
Зарегистрирован: 16.12.2014 17:01:11

Сообщение Indikator »

Hello World.
Осваиваю WinCE при работе с com-port.
Проблема в следующем. Сделал всё как описано постом выше (настройка, чтение и т.д.).
Так вот программа запускаемая на WinCE компьютере упорно считывает только нули. Монитор порта показывает, что железо читает всё что надо. Если перекомпилить под Win-7 и запустить на обычном "писюке", то читает так же нормально.
Где подвох?
Ответить