Помогите изнасиловать ком-порт
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Помогите изнасиловать ком-порт - 2005-09-18 19:49:22
|
|
|
PendalFF
Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
|
Короче, товарисчи есть такая идея - подключить дверной звонок к компу (когда играю в ушах не всегда звонок слышу), да и прибдуд вроде звонка можно придумать кучу. Логинг пришедших например. Делать это наверное надо через ком-порт как высокий-низкий уровень на какой-нибудь шине. Но с какой стороны браться на дельфи даже не представляю. Можа библиотечка какая умная есть или исшо чего. Посоветуйте что-ли, желательно с примером. Сделаю что интересное-рецептом поделюсь. Да вот только придумал - включение нарпимер света в комнате по иконке в трее (надо знать как менять уровень на шинах, а со стороны радиотехники проблем не будет). Проблема в том что совершенно не могу потратить неделю на подробное изучение управленя портами, кто-то уже подобное спрашивал, но на него все забили. Если лениво - не обижусь, а если и правда кто-то поможет, от души скажу большое спасибо.
|
|
|
Помогите изнасиловать ком-порт - 2005-09-18 23:45:33
|
|
|
jEnizix
Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
|
гы… 220 от звонка в ком-порт будет круто )))) [sm=9.gif][sm=9.gif]
|
|
|
Помогите изнасиловать ком-порт - 2005-09-21 06:49:49
|
|
|
PendalFF
Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
|
Нифига круто не будет, по ходу никто не знает с какого конца тут брацца, а сам я не сделаю.
|
|
|
Помогите изнасиловать ком-порт - 2005-09-21 09:05:25
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
А что действительно никто не знает как в com-порт вывести байтик из винды? Ну дык, автор, ставь себе *nix [:bigsmile] и
fd = open ("/dev/ttyS0", O_WRONLY); write (fd, &byte, 1); close (fd);
не дельфи правда, но… а чем хуже?
|
|
|
Помогите изнасиловать ком-порт - 2005-09-21 16:28:45
|
|
|
PendalFF
Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
|
Не-е надо именно под винду, и желательно на дельфи, т.к. я пока тока паскаль знаю, так галёрка, не смеяться! Я тока учусь…
|
|
|
Помогите изнасиловать ком-порт - 2005-09-21 19:13:15
|
|
|
Donn
Сообщений: 13
Оценки: 0
Присоединился: 2005-09-11 21:16:06
|
var com:TDCB; … //Откроем h:=CreateFile(PChar('COM1'),GENERIC_READ or GENERIC_WRITE, 0,nil,OPEN_EXISTING,0,0); //Получим текущие настройки порта GetCommState(h,com); //Изменим … com.ByteSize:=бла-бла; … //Установим новые SetCommState(h,com); //Читаем\Записываем(ReadFile,WriteFile) … //Закроем CloseHandle(h);
Вобщем примерно так это делается. хотя чёто мог напутать
|
|
|
Помогите изнасиловать ком-порт - 2005-09-21 20:11:51
|
|
|
PendalFF
Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
|
Это если к порту устройство умное прикручено,а надо чтобы всё просто было 0 - стало 1. Вот что я нарыл: После открытия com-порта через CreateFile() необходимо с помощью GetCommState() и SetCommState() установить параметры порта (в частности убрать автоуправление RTS и DTR). Затем для установки соответствующих сигналов используется функция EscapeCommFunction().
Procedure ControlRTS; Var S: String; lDCB: TDCB; fHandle: THandle; Begin S:='COM1'; // open port fHandle:=CreateFile( Pchar(S), GENERIC_READ Or GENERIC_WRITE, 0, Nil, OPEN_EXISTING, 0, 0); If fHandle=INVALID_HANDLE_VALUE Then Begin // can't open…. Exit; End; // read settings If Not GetCommState( fHandle, lDCB) Then Begin // can't read Exit; End; // Fill dcb lDCB.BaudRate:=CBR_2400; lDCB.ByteSize:=8; lDCB.Parity:=NOPARITY; lDCB.StopBits:=ONESTOPBIT;
// !!! we will manage RTS ourself !!! ldcb.Flags:=(ldcb.Flags And $FFFFC0FF) Or $00000100; // set comm state SetCommState( fHandle, ldcb);
// Here we can manage // Reset RTS EscapeCommFunction( fHandle, CLRRTS); // Set RTS EscapeCommFunction( fHandle, SETRTS);
// Close port CloseHandle(fHandle); fHandle:=0; End;
|
|
|
Помогите изнасиловать ком-порт - 2005-09-21 22:12:21
|
|
|
Donn
Сообщений: 13
Оценки: 0
Присоединился: 2005-09-11 21:16:06
|
Кстати, в вашем случае читать и писать туда вообще не надо. Достаточно установить прослушку событий(SetCommMask) и ожидать оное(WaitCommEvent).
|
|
|
Помогите изнасиловать ком-порт - 2005-09-22 05:54:35
|
|
|
PendalFF
Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
|
А вот с этого места по-подробнее, какие события там можно отловить, и WaitCommEvent сработает на любое событие, или их можно различать?
|
|
|
Помогите изнасиловать ком-порт - 2005-09-22 07:37:42
|
|
|
Donn
Сообщений: 13
Оценки: 0
Присоединился: 2005-09-11 21:16:06
|
Посмотрите в справочнике по API или в msdn http://msdn.microsoft.com/library/en-us/wcecoreos5/html/wce50lrfwaitcommevent.asp
|
|
|
Помогите изнасиловать ком-порт - 2005-09-22 14:04:41
|
|
|
PendalFF
Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
|
Спасибо, буду пробовать… Результаты интересны или не писать?
|
|
|
|
|