Aurochs 0 23 сентября, 2008 Опубликовано 23 сентября, 2008 · Жалоба Да и еще вопрос!) Я похоже неправильно приписываю "\\PIPE00" к имени устройства? HANDLE port = CreateFile(DevInfoDetail->DevicePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); WriteFile("port\\PIPE00", &com_buf, 28, &nBytes, NULL); Не подскажете как это правильно сделать? Ну, дык конечно :) Нужно так TCHAR devName[MAX_PATH]; strcpy( devName, DevInfoDetail->DevicePath ); strcat( devName, _T( "\\PIPE00" ) ); А затем для devName вызывать CreateFile Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bulat 0 23 сентября, 2008 Опубликовано 23 сентября, 2008 · Жалоба Ну, дык конечно :) Нужно так TCHAR devName[MAX_PATH]; strcpy( devName, DevInfoDetail->DevicePath ); strcat( devName, _T( "\\PIPE00" ) ); А затем для devName вызывать CreateFile Спасибо! Все получилось) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bulat 0 24 сентября, 2008 Опубликовано 24 сентября, 2008 · Жалоба Извиняюсь, что опять поднял тему, но у меня проблема всплыла непонятная( Проблема возникает при чтении. С драйвером atm6124ser чтение я осуществлял следующим образом: AvaibleBytes = 0; while(AvaibleBytes<32) { AvaibleBytes = comstat.cbInQue; Success = ClearCommError(port, &lpErr, &comstat); } Success = ReadFile(port, &CommandW, 34, &RealRead, NULL); Все отлично работало. Так вот, с драйвером atm6124 ClearCommError(PipeIn, &lpErr, &comstat) возвращает ошибку (Параметр задан неверно). Т.е. имя устройства я исправил, но всеравно ошибка. Я решил отказаться от этой функции и записал просто: while(!Success) { Success = ReadFile(PipeIn, &CommandW, 34, &RealRead, NULL); } В итоге не дожидаясь 34 байт от моего девайса приложение выходит из этого цикла и в буфер CommandW записывается всякая ерунда! Почему такое происходит??? Я конечно поставил перед этим циклом Sleep(10000), чтобы успеть отправить девайсу (не по USB) то, что он потом должен вернуть по USB, но это же не выход... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aurochs 0 24 сентября, 2008 Опубликовано 24 сентября, 2008 · Жалоба Так вот, с драйвером atm6124 ClearCommError(PipeIn, &lpErr, &comstat) возвращает ошибку (Параметр задан неверно). Т.е. имя устройства я исправил, но всеравно ошибка. Вызов ClearCommError драйвер atm6124 не поддерживает вообще. В итоге не дожидаясь 34 байт от моего девайса приложение выходит из этого цикла и в буфер CommandW записывается всякая ерунда! Почему такое происходит??? Да, есть такие причуды. Драйвер этот вообще, мягко говоря, далек от совершенства... Нужно анализировать значение, которое возвращается в параметре реально прочитанных байт и, если оно =0, то повторять вызов ReadFile У меня встречный вопрос по поводу драйвера atm6124ser. Это полноценный драйвер или только надстройка над майкрософтовским usbser.sys? Если Вас не затруднит, то вышлите мне этот драйвер почтой, пользуясь ссылкой на этой странице Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться