реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Не могу произвести запись в драйвер atm6124.sys из BasicUSB, at91sam7s.
Aurochs
сообщение Sep 23 2008, 07:21
Сообщение #16


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Цитата(Bulat @ Sep 23 2008, 08:15) *
Да и еще вопрос!) Я похоже неправильно приписываю "\\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);


Не подскажете как это правильно сделать?

Ну, дык конечно smile.gif
Нужно так
Код
TCHAR devName[MAX_PATH];
strcpy( devName, DevInfoDetail->DevicePath );
strcat( devName, _T( "\\PIPE00" ) );

А затем для devName вызывать CreateFile
Go to the top of the page
 
+Quote Post
Bulat
сообщение Sep 23 2008, 17:01
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241



Цитата(Aurochs @ Sep 23 2008, 13:21) *
Ну, дык конечно smile.gif
Нужно так
Код
TCHAR devName[MAX_PATH];
strcpy( devName, DevInfoDetail->DevicePath );
strcat( devName, _T( "\\PIPE00" ) );

А затем для devName вызывать CreateFile

Спасибо! Все получилось)
Go to the top of the page
 
+Quote Post
Bulat
сообщение Sep 24 2008, 17:27
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241



Извиняюсь, что опять поднял тему, но у меня проблема всплыла непонятная(
Проблема возникает при чтении. С драйвером 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, но это же не выход...
Go to the top of the page
 
+Quote Post
Aurochs
сообщение Sep 24 2008, 21:13
Сообщение #19


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Цитата(Bulat @ Sep 24 2008, 20:27) *
Так вот, с драйвером atm6124 ClearCommError(PipeIn, &lpErr, &comstat) возвращает ошибку (Параметр задан неверно). Т.е. имя устройства я исправил, но всеравно ошибка.

Вызов ClearCommError драйвер atm6124 не поддерживает вообще.

Цитата(Bulat @ Sep 24 2008, 20:27) *
В итоге не дожидаясь 34 байт от моего девайса приложение выходит из этого цикла и в буфер CommandW записывается всякая ерунда! Почему такое происходит???

Да, есть такие причуды. Драйвер этот вообще, мягко говоря, далек от совершенства...
Нужно анализировать значение, которое возвращается в параметре реально прочитанных байт и, если оно =0, то повторять вызов ReadFile
У меня встречный вопрос по поводу драйвера atm6124ser. Это полноценный драйвер или только надстройка над майкрософтовским usbser.sys? Если Вас не затруднит, то вышлите мне этот драйвер почтой, пользуясь ссылкой на этой странице
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 20:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016