Цитата(Толик @ Apr 22 2007, 21:40)

Так что же получается запросы
LINE_CODING и CONTROL_LINE_STATE
посылаются только, чтобы их подтверждать?
Неужели он не несёт никакой информации?
Что-то я сомневаюсь....
Правильно делаете

.
CONTROL_LINE_STATE в поле wValue несет состояние сигнала RTS.
Для LINE_CODING после SETUP запроса приходит OUT пакет на нулевую конечную точку в котором указаны скорость, четность, стоп биты и длина символа.
В соответствии с этими запросами устанавливаются параметры и сигналы USB CDC ACM устройства, коим есть мой SAM7S.
Запросы нужно подтверждать, чтобы хост знал об успешном получении/выполнении запросов.
Цитата
Для 5131-микроконтроллера они сохраняют в памяти line_coding, а потом посылают на запрос get_line_coding(но это не точно, тк пишу по памяти)
Делаю то-же самое.
Цитата
Так вы послали Stall на этот несуществующий Setup-запрос?
Да.
Цитата
Может и не надо на него реагировать, а браться уже за Bulki и слать данные?
Вот у меня допустим SAM7A3 и я сейчас с одной стороны не знаю как реагировать на те
2 запроса, а сдругой стороны ищу программу снифера(ну или тестера) для com-порта(но не для usb) чтобы узнать как работает моё устройство(В Диспетчере устройств говорит, что нормально....).
Попытка открыть последовательный порт приводит к Input/Output Error.
Цитата
А на счёт закончена процедура инициализации(я как понимаю нумерации) или нет, то я даже не знаю, что и сказать. Ведь все дескрипторы посланы. Система знает, что у нового устр-ва есть 3 конечные точки.....мне кажется пора слать данные.....
Да, есть три конечных точки. IN, OUT, INTERRUPT. Все BULK. Хост все это видит, загружает драйвер (который и шлет запросы LINE_CODING и CONTROL_LINE_STATE). Появляется последовательный порт (COM3 в Windows и /dev/ttyACM0 в Linux). Но данные передавать не удается (см. выше).
Очевидно, я чего-то не понимаю и что-то делаю не так. Вопрос только что?
Цитата
У меня честно говоря столько вопросов...
Каких?
Пока отвечал отвечал не пост
Толик осенила меня мысль.
Сейчас проверил.
В полном соответствии с традициями данного форума сообщаю:
Сам дурак! А именно:
Пакет SET_LENE_CODING обрабатывается программой дважды.
Сначала правильно, а потом данные за пакетом SETUP обрабатываются как новый пакет SETUP.
Если переписать байты пакета (см. первый пост) то получим структуру Line Coding:
0x80 0x25 0x00 0x00 - скорость 9600
0x00 - 1 stop bit
0x00 - No Parity
0x08 - 8 bits per symbol
0x00 - просто мусор в буфере от предыдущих транзакций.
Всем спасибо! И особое спасибо
Толик!!!!
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.