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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ClearCommError не даёт количество несчитанных байт, в WinMobile 5 
:(
    Опции темы
Shuricksoft
Дата 17.7.2007, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 27.3.2002
Где: Odessa, Ukraine

Репутация: нет
Всего: нет



Пишу прогу, обменивающуюся данными через КОМ-порт КПК (ИК, блютус - не важно). Пишу на C# с импортом АПИ-функций (не надо говорить, что это изврат =) ). Проблема в следующем. Записать данные в порт и считать их оттуда я могу, но вот получить количество байт, которые в буфере ждут, пока их прочитают, не получается никак. В стационарной винде для этого юзал ClearCommError. По аналогии делаю в мобильной:

Код

public struct COMSTAT
        {
            public const UInt32 fCtsHold = 1;
            public const UInt32 fDsrHold = 1;
            public const UInt32 fRlsdHold = 1;
            public const UInt32 fXoffHold = 1;
            public const UInt32 fXoffSent = 1;
            public const UInt32 fEof = 1;
            public const UInt32 fTxim = 1;
            public const UInt32 fReserved = 25;
            public UInt32 cbInQue;
            public UInt32 cbOutQue;
        };
       


        [DllImport("coredll")]
        public static extern bool ClearCommError(IntPtr hFile, out UInt32 lpErrors, out COMSTAT lpStat);


(в МСДН прописано на С++ так:
Код

typedef struct _COMSTAT {
  DWORD fCtsHold :1;
  DWORD fDsrHold :1;
  DWORD fRlsdHold :1;
  DWORD fXoffHold :1;
  DWORD fXoffSent :1;
  DWORD fEof :1;
  DWORD fTxim :1;
  DWORD fReserved :25;
  DWORD cbInQue;
  DWORD cbOutQue;
} COMSTAT, *LPCOMSTAT;

...
BOOL ClearCommError(
  HANDLE hFile, 
  LPDWORD lpErrors, 
  LPCOMSTAT lpStat
); 



)


Соответственно, потом вызываю:
Код

public UInt32 GetIn()
        {
            COMSTAT statPort;
            UInt32 dwErrorCode;
            if (PortHandle.ToInt32() != -1)
            {
                ClearCommError(PortHandle, out dwErrorCode, out statPort);
                return statPort.cbOutQue;
            }
            return 0;
        }


Возвращает всегда ноль. Хотя после этого читаю из порта - данные там лежат и ждут. В чём моя ошибка?
Заранее благодарен за ответ.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование мобильных устройств"
Alexeis

Раздел посвящен программированию мобильных устройств.

Все остальные вопросы по мобильным устройствам (КПК, смартфоны, телефоны, фотоаппараты и т.п),
не имеющие отношения к программированию, просьба размещать в разделе КПК, смартфоны, мобильники

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Платформы Windows Mobile и Windows Embedded | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.