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

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

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

Сообщение Mr.Smart » 11.11.2009 12:41:12

У 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?
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

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

Сообщение Fantomas » 11.11.2009 13:18:42

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?
Fantomas
новенький
 
Сообщения: 14
Зарегистрирован: 09.04.2008 19:12:50

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

Сообщение Indikator » 16.12.2014 18:15:53

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

Пред.

Вернуться в WinCE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru