HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: RS232 RxBufferSize (CE_RXOVER flag) WinCE
[Ответить]
aba [03.02.2004 09:36] RS232 RxBufferSize (CE_RXOVER flag) WinCE:
Столкнулся с проблемой с портом RS-232 (COM1) - на PocketPC (ARM) функция GetCommProperties(..) возвращает максимальный размер приемного буфера (dwMaxRxQueue) равным 1! Текущий размер буфера (dwCurrentRxQueue) составляет 0 байт, причем установить другой размер этого буфера функцией SetupComm(..) не могу - ошибки нет, но размер остается нулевым.
Соответственно (я подозреваю), прием данных не возможен. Даже функция ClearCommError(..) возвращает установленный флаг ошибки CE_RXOVER (1) в любом случае - когда данные физически идут (кабель подсоединен, cbInQue = 1) и не идут (кабель не подсоединен, cbInQue = 0).
Под Desktop PocketPC Emulation (x86) с подсоединенным устройством на COM1 все работает на ура. Размер приемного буфера по умолчанию 1000 байт, могу установить требуемый (ограничений на максимальный размер нет), вообщем все как под "нормальной" виндой (Win2000).
Машина - PocketPC iPAQ 3760.
Кабель на COM - МакЦентр'овский (распайку проверил - все в соответствии с информацией на кабель на COM с сайта hp.com).
Не стандартное использование линий RTS (всегда 0) и DTR (всегда 1).
Чтение данных осуществляется в отдельном потоке с использованием WaitCommEvent(..).
Что посоветуете?
"Попутные" вопросы:
1. В чем разница между флагами ошибки CE_OVERRUN и CE_RXOVER (функция ClearCommError)?
2. Как работает ActiveSync (экспериментировали - использует все линии), спокойно принимает и отправляет данные на той же машине?
3. Не глючный ли драйвер на этой машине - хотя в свойствах (GetCommProperties) указано, что возможно установить любую скорость передачи данных, однако реально устанавливает только стандартные!? И опять - функция SetCommState не возвращает ошибки, а нестандартная скорость не устанавливается (остается прежде установленная или 9600).
4. Как узнать какой номер порта использовать - COM1, COM2 или какой-то другой. Пока на этой машине могут "одинаково" открыться COM1 и COM2, и одинаково плохо работать. 
5. Есть подозрение, что это может быть связано и с USB. Как работать с USB (особенно интересно, когда на машинке PocketPC есть USB-Host), вкратце?
Надеюсь на скорый ответ,
Андрей.
[Ответить]