· Начало · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Определение устройств в Win32

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июн 12, 2003 19:04:23

Собрал ИК-девайс, состоящий из ИК-приемника, кондера, диода, и двуч резисторов.Винда ОПРЕДЕЛИЛА его(!!!) как S200!!!!!!! Кто ей сказал, что мое творение так и называется? Как вообще Винда спрашивает всяческие девайсы как их зовут и кто они такие? (В данном случае речь о СОМ-порте)


Дата: Июн 13, 2003 06:59:22

Чаво?


Дата: Июн 13, 2003 11:24:12 · Поправил: hGoblin

Мне интересен формат запроса по COM, когда Win ищет устройства ("Найдено неизвестное устройство","Найден факс-модем Rockwell Ext...",etc"). Каким языком оные девайсы сообщают свои имена, Винда ведь находит и те что ей не могут быть известны? Я искал в Инете, но проблема формулировки вопроса в поиске делает свое темное дело :( , неужели никто не задумывался ?


Дата: Июн 14, 2003 14:44:12

Да, вот еще, нашел ссылку на сайт, откуда эта схема (IR-device) взялась, если кого заинтересовало, сходите:
http://winlirc.sourceforge.net/-WinLIRC-портированная под Win Linux IR Control
http://www.lirc.org/receivers.html-Описание Lirc и схемы девайсов


Дата: Июн 14, 2003 17:32:20

Ответить не смогу, но меня интересует на какие контакты + земля и выход с приёмника. У меня соответственно 7 5 и 1. И вопрос кто зает как получить из Win98, что приходит на СОМ. ReadFile считывает 0 байт.
invoke CreateFile,ComName,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMA L,0
mov [pt],eax
invoke ReadFile,[pt],_rt,nsim,sim,0


Дата: Июн 14, 2003 19:19:14 · Поправил: Quantum

invoke CreateFile,OFFSET ComName,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
mov pt,eax
invoke SetCommState,eax,OFFSET newDCB
invoke SetCommTimeouts,pt,OFFSET newTimeOuts

Далее SetCommMask + WaitCommEvent или ReadFile...


Дата: Июн 15, 2003 05:13:41

кто зает как получить из Win98, что приходит на СОМ
Можно чрез сокеты - так имхо проще и надежней


Дата: Июн 15, 2003 17:07:06

hGoblin
Подробней можно? А тоя почитал про Socket-ы так на сколько я понял, там обращение идёт к протоколам типа TCP/IP. А о получении информации о состояния бита DCD вроде не заметил.


Дата: Июн 15, 2003 17:43:18 · Поправил: hGoblin

Почитай Iczelion' овскую статью Asmsockguide по этому поводу.(На его сайте, если не найдешь, могу скинуть на мыло) Я еще сам до конца не разобрался с сокетами, но точно могу сказать, что все эти состояния там абстрагированы до предела.
В общем все выглядит примерно так:
.data
wsadata WSADATA <>
.code
invoke WSAStartup, 101h,addr wsadata
invoke socket,AF_INET,SOCK_STREAM(!),0
invoke bind....
invoke listen....
invoke closesocket....
invoke WSACleanup....
Все это есть в SDK, кстати можно изучить сырец WinLIRCa(120k, лежит там же, где и LIRC - он портирован из Linuxa, поэтому, как и на Родине работает с сокетами(server.cpp))


Дата: Июн 16, 2003 00:20:57

hGoblin
Посмотрел исходник WinLIRCa. На сколько я смог понять server.cpp предназначен для связи с интернетом для чего не разобрал, а файл driver.cpp инициализирует порт СОМ и ожидает событий по линии RLSD (receive-line-signal-detect), что с моим НЕ знанием английского может сойти за сигнал обнаружения несущей. Именно на него согласно имеющихся схем подключения и должен бы приходить выход с рессивера. Я подключел его к RD и ReadFile читает какието значения, но похоже это какая-то ерунда. Каждый пульт дает одно своё значение для любой кнопки.


Дата: Июн 16, 2003 05:26:41 · Поправил: Quantum

Я подключел его к RD и ReadFile читает какието значения, но похоже это какая-то ерунда.
А вы настроили UART? (BaudRate, чётность, StopBits и т.д.) Гляньте описание SetCommState и SetCommTimeouts
ЗЫ: Я против использования WinSock для чтения / записи физических портов.


Дата: Июн 16, 2003 07:33:58 · Поправил: hGoblin

Quantum
Да, похоже облом. LIRC юзает сокеты не для Инета, а для связи с программами-клиентами (которые могут быть как на локальном компе, так и на удаленном - LIRCу это неинтересно). Обидно даже.
А с пульта должны идти пакеты импульсов друг за другом. ReadFile ловит только какие-то судороги при нажатии кнопки. Все параметры порта тусовал как мог - результат один. Пойду перечитывать исходники LIRCа - он же работает


Дата: Июн 16, 2003 09:20:21

Надо было сырец читать и мозгами думать!!!Никто не обещал, что RTS выставят в 1.Сижу как идиот,и читаю обесточенный ИК-приемник...Ж:\ Все, ухожу в монастырь,только дочитаю свою тыкалку...
.data
dcb DCB <>
...
.code
invoke CreateFile, addr hPort,
GENERIC_READ or GENERIC_WRITE,
0,0,OPEN_EXISTING,
0,
NULL
mov dcb.BaudRate,0
mov dcb.fDtrControl,DTR_CONTROL_ENABLE
mov dcb.fRtsControl,RTS_CONTROL_ENABLE
mov dcb.fBinary,1
invoke SetCommState, addr hPort,addr dcb
invoke SetCommMask, addr hPort, EV_RLSD
getc: invoke GetCommModemStatus,addr hPort,addr status
mov eax,[status]
cmp eax,MS_RLSD_ON
jz OK
jmp getc
OK: обрабатываем status, (у меня выходит какая-то фигня в больших количествах, зато четко по нажатию кнопки пульта!!!)


Дата: Июн 16, 2003 17:53:44

Смотрел исходники WINLirc-а не могу понять вот, что в процедуре ThreadProc время получается двумя способами time и QueryPerformanceCounter но используется только значение полученное из time.
Вопрос почему? При чем отсутствуют провероки типа если высокочастотного таймера нет используем обычный, а если есть то высокочастотный.
И ещё вопрос в каких единицах возвращается значение из QueryPerformanceCounter?


Дата: Июн 16, 2003 18:17:26

>в каких единицах возвращается значение из QueryPerformanceCounter?
В SDK написано - в тиках. (а QueryPerformanceFrequency говорит сколько оных тиков в секунду) А что это - высокочастотный таймер?

. 1 . 2 . >>