![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 01.03.2008
Сообщений: 25
|
![]()
Всем привет. У меня такой вопрос, как можно подать напряжение на 7-ю ножку СОМ-порта. Где-то прочитал, что нужно по определенному адресу записать байт, в котором каждый бит и есть напряжение на ножках. Но дело в том, что если просто записать по этому адресу значение винда ругается. Как это можно сделать? Или подскажите способ попроще. Заранее спасибо
|
![]() |
![]() |
![]() |
#2 |
Регистрация: 15.02.2008
Сообщений: 3
|
![]()
EscapeCommFunction(дескриптор порта,SET_RTS);положительное
EscapeCommFunction(дескриптор порта,CLR_RTS);ОТРИЦАТЕЛЬНОЕ |
![]() |
![]() |
![]() |
#3 |
ИСККОНный хакер
Форумчанин
Регистрация: 08.11.2007
Сообщений: 195
|
![]()
GetCommState / SetCommState / CreateFile / ReadFile / WriteFile
подробности в MSDN
#define QUESTION bb || !bb
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 01.03.2008
Сообщений: 25
|
![]()
А как определить дескриптор порта? И напряжение будет на каких ножках при использовании EscapeCommFunction? Мне нужно только на 7-й, отрицательное напряжение. А насчет записи байта в область памяти ком-порта, просто интересно, можно вообще так сделать или нет? Винда не дает туда писать, но вообще можно записать байт по любому адресу в памяти или только в своем сегменте? Может какую литературу посоветуете по драйверам и COM в частности? Прошу прощение за кучу может быть тупых вопросов, просто я в ассемблере не силен, спросить совсем некого, а в книжках такой темы нигде не нашел
|
![]() |
![]() |
![]() |
#5 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() Цитата:
http://programmersforum.ru/showthread.php?t=14442 . EscapeCommFunction с параметрами SETRTS и CLRRTS ставит / сбрасывает сигнал RTS, который и есть седьмая нога (если, конечно, разъем девятиногий). Писать / читать порты Windows NT из пользовательского режима не даст - это песочница, в лучшем случае сделает вид, в худшем выбросит по ошибке доступа. Для прямого доступа к железу нужно либо работать через функцию DeviceIoControl , либо, в Вашем случае, работать через коммуникационные функции, в том числе EscapeCommFunction, либо строить свой драйвер. По-поводу строительства драйверов - Документация по DDK и WDK, Walter Oney - Programming the Microsoft Windows Driver Model, Art Baker, Jerry Lozano - The Windows 2000 Device Driver Book, весьма полезно Sven Schreiber - Undocumented Windows 2000 Secrets, ну и еще масса литературы, в том числе переводной. Все это, в принципе, есть в интернете. |
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 15.02.2008
Сообщений: 3
|
![]()
Вот эта статья все в сжатом виде имеет
http://cydem.org.ua/pars.php?lnk=comwin32&conf=2 в свою очередь, она является почти точным переводом статьи с сайта мелкософта. Но там уже все зарыто глубоко, хотя можно и поискать. А так, вам собственно кусочек вот этот нужен : #include <windows.h> . . . HANDLE port; . . . port=CreateFile("COM2",GENERIC_READ |GENERIC_WRITE,0,NULL,OPEN_EXISTING ,0,NULL); if(port==INVALID_HANDLE_VALUE) {{ MsgBox(NULL,"Не возможно открыть последовательный порт","Error",MB_OK); ExitProcess(1); } . . . CloseHandle(port);//Это уже в конце программы а внутри: EscapeCommFunction(port,SET_RTS); Ну и посмотреть все функции на msdn. Есле читать ножки порта то тоже уже подсказали : GetCommState |
![]() |
![]() |
![]() |
#7 |
Регистрация: 15.01.2009
Сообщений: 5
|
![]()
Кто подскажет как управлять скоростью передачи или длительностью 0 или 1 на DTR. Смортел на осцилографе параметры скорости com порта ничего не изменяют?
Заранее спасибо!! |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 05.12.2007
Сообщений: 236
|
![]()
скорость зависит от BoudRate, а DTR сигнал изменяется EscapeCommFunction, как уже говорили - почитай мсдн, или статьи по ком портам, их валом
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Виртуальный порт | Dj_smart | Win Api | 0 | 13.07.2008 19:19 |
445 порт | EdNovice | Работа с сетью в Delphi | 5 | 20.05.2008 09:12 |
порт ps/2 | _Dmitry | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 01.10.2007 21:28 |
COM порт, или LPT... | _riddik | Общие вопросы Delphi | 1 | 08.06.2007 22:33 |
СОМ порт | SERG1980 | Общие вопросы Delphi | 3 | 17.05.2007 08:06 |