Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Помогите изнасиловать ком-порт

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Помогите изнасиловать ком-порт
Имя
Сообщение << Старые топики   Новые топики >>
Помогите изнасиловать ком-порт - 2005-09-18 19:49:22   
PendalFF

Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
Короче, товарисчи есть такая идея - подключить дверной звонок к компу (когда играю в ушах не всегда звонок слышу), да и прибдуд вроде звонка можно придумать кучу. Логинг пришедших например.
Делать это наверное надо через ком-порт как высокий-низкий уровень на какой-нибудь шине.
Но с какой стороны браться на дельфи даже не представляю. Можа библиотечка какая умная есть или исшо чего.
Посоветуйте что-ли, желательно с примером. Сделаю что интересное-рецептом поделюсь.
Да вот только придумал - включение нарпимер света в комнате по иконке в трее (надо знать как менять уровень на шинах, а со стороны радиотехники проблем не будет).
Проблема в том что совершенно не могу потратить неделю на подробное изучение управленя портами, кто-то уже подобное спрашивал, но на него все забили.
Если лениво - не обижусь, а если и правда кто-то поможет, от души скажу большое спасибо.
Post #: 1
Помогите изнасиловать ком-порт - 2005-09-18 23:45:33   
jEnizix

Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
гы… 220 от звонка в ком-порт будет круто )))) [sm=9.gif][sm=9.gif]
Post #: 2
Помогите изнасиловать ком-порт - 2005-09-21 06:49:49   
PendalFF

Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
Нифига круто не будет, по ходу никто не знает с какого конца тут брацца, а сам я не сделаю.
Post #: 3
Помогите изнасиловать ком-порт - 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);

не дельфи правда, но… а чем хуже?
Post #: 4
Помогите изнасиловать ком-порт - 2005-09-21 16:28:45   
PendalFF

Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
Не-е надо именно под винду, и желательно на дельфи, т.к. я пока тока паскаль знаю, так галёрка, не смеяться! Я тока учусь…
Post #: 5
Помогите изнасиловать ком-порт - 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);

Вобщем примерно так это делается. хотя чёто мог напутать
Post #: 6
Помогите изнасиловать ком-порт - 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;


Post #: 7
Помогите изнасиловать ком-порт - 2005-09-21 22:12:21   
Donn

Сообщений: 13
Оценки: 0
Присоединился: 2005-09-11 21:16:06
Кстати, в вашем случае читать и писать туда вообще не надо. Достаточно установить прослушку событий(SetCommMask) и ожидать оное(WaitCommEvent).
Post #: 8
Помогите изнасиловать ком-порт - 2005-09-22 05:54:35   
PendalFF

Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
А вот с этого места по-подробнее, какие события там можно отловить, и WaitCommEvent сработает на любое событие, или их можно различать?
Post #: 9
Помогите изнасиловать ком-порт - 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
Post #: 10
Помогите изнасиловать ком-порт - 2005-09-22 14:04:41   
PendalFF

Сообщений: 11
Оценки: 0
Присоединился: 2005-06-01 07:52:19
Спасибо, буду пробовать… Результаты интересны или не писать?
Post #: 11
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Помогите изнасиловать ком-порт







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.