Форум: "WinAPI";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизКонтакты COM-порта... Найти похожие ветки
← →
maxistent © (2004-12-07 13:33) [0]Дарова, уважаемые! Как "послать" в COM-порт на опред. контакт "+"?
("-" на ножке порта, "+" - только на двух из 15 контактов, остальные="-").
___________
\o o o + o/
\+ o o o/
-------
У меня к COM1 подключен светодиод. В результате светодиод загорается на время, потом гаснет.
Я делаю так:function LStr(const Source:Ansistring;Count:Integer):Ansistring;
begin
Result:=Copy(Source,1,Count);
end;
function OpenComm(Mode:AnsiString):THandle;
var
DCB : TDCB;
TOut: TCommTimeouts;
I:Integer;
Bfr:AnsiString;
begin
Bfr:=Mode;
UniqueString(Bfr);
I:=Pos(":",Bfr)-1;
if I<=0 then I:=4;
Result := CreateFile(PChar(LStr(Bfr,I)),GENERIC_READ or GENERIC_WRITE,
0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
GetCommState( Result, DCB) ;
BuildCommDCB(PChar(Bfr),DCB);
DCB.EvtChar := #13;
SetCommState( Result, DCB) ;
//
TOut.ReadIntervalTimeout := MAXDWORD;
TOut.ReadTotalTimeoutMultiplier := 0;
TOut.ReadTotalTimeoutConstant := 0;
TOut.WriteTotalTimeoutMultiplier := 0;
TOut.WriteTotalTimeoutConstant := 0;
SetCommTimeOuts( Result, TOut);
SetCommMask(Result,EV_RLSD OR EV_RXFLAG);
PurgeComm(Result,PURGE_TXCLEAR);
PurgeComm(Result,PURGE_RXCLEAR);
end;
function CloseComm(Handle:THandle):boolean;
begin
CloseHandle(Handle);
result:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
handle:integer;
begin
Handle:=OpenComm("COM1:BAUD=19200 PARITY=N DATA=8 STOP=1");
if Handle<>INVALID_HANDLE_VALUE then
begin
escapecommfunction(Handle,SETDTR);
sleep(5000);
escapecommfunction(Handle,CLRDTR);
closecomm(Handle);
end
else
Application.MessageBox("Ошибка","",0);
end;
И ещё: как сделать, чтобы прога могла "ЗНАТЬ", на какой контакт COM-порта какое напряжение подаётся (<=5В.)?
← →
Cosinus © (2004-12-07 14:39) [1]1) Выставлять уровни на всевозможные сигнальные линии (а-ля DTR/DTS/... и тд)
2) Кончать заниматься фигней и лопатить светоИдиодные устройства на LPT.
← →
dr Tr0jan (2004-12-07 15:27) [2]COM же вроде используется для PICов.
Для справки: PIC - Programmable Interrupt Controller
← →
GanibalLector © (2004-12-08 01:23) [3]Что-то я не понял,что тебе надо.Ну да ладно...Во первых свой светодиод ты ОБЯЗАН одной ногой повесить на 5 вывод порта(это минус),а потом уже зажигай\гаси DTR-ом...и резистор не забудь.
← →
GuAV © (2004-12-08 01:29) [4]GanibalLector © (08.12.04 1:23) [3]
и резистор не забудь.
Хе я закорачивал COM порт. И ничего, цел остался, даже диод мигал как надо :)
GanibalLector © (08.12.04 1:23) [3]
зажигай\гаси DTR-ом...
или RTS
← →
GanibalLector © (2004-12-08 01:34) [5]
> или RTS
Нет!Именно DTR-ом!!!
> Хе я закорачивал COM порт. И ничего, цел остался, даже
> диод мигал как надо :)
Ну,зря ты так...у меня на работе один комп валяется...доигрались.
← →
GuAV © (2004-12-08 01:44) [6]GanibalLector © (08.12.04 1:34) [5]
Нет!Именно DTR-ом!!!
WinLIRC работает с RTS как с выходом (выдаёт + для питания) и DCD как с входом. До запуска WinLIRC на RTS -. Поэтому IMHO с RTS мона работать.
← →
GanibalLector © (2004-12-08 01:46) [7]
> WinLIRC работает с RTS как с выходом (выдаёт + для
> питания) и DCD как с входом.
Согласен,но !!! посмотри [0]...там есть что-то типа :escapecommfunction(Handle,SETDTR);
← →
GanibalLector © (2004-12-08 01:48) [8]2 GuAV © [6]
И еще...я в основном работаю с переферией...так вот,ОБЫЧНО управляют ДТР-ом,а "питание" создают РТС-ом.
З.Ы. Такое примерно в 90% случаях.
← →
GuAV © (2004-12-08 01:48) [9]Или уже по правильному через TXD
← →
GanibalLector © (2004-12-08 01:51) [10]
> Или уже по правильному через TXD
А это тут причем?Не понял???Или ты собрался передавать FF на минимальной скорости???Оригинально!
З.Ы.Надо попробовать ;)
← →
GuAV © (2004-12-08 01:52) [11]Хотя... TXD передаёт биты, а не держит уровень...
← →
GuAV © (2004-12-08 01:53) [12]GanibalLector © (08.12.04 1:51) [10]
Не дал даже успеть исправить ошбку .. :)
← →
GuAV © (2004-12-08 01:54) [13]GanibalLector © (08.12.04 1:51) [10]
З.Ы.Надо попробовать ;)
А что так даже яркость меняется: 01, 11, 13, ... FF :-)
← →
GanibalLector © (2004-12-08 02:04) [14]2 GuAV © [13]
> А что так даже яркость меняется: 01, 11, 13, ... FF :-)
Да,уж...настоящая светомузыка ;)
Автору ветки должно понравиЦа!
← →
maxistent © (2004-12-08 04:13) [15]Не, братва! так не пойдёт! Мне же надо НА ОПРЕДЕЛЁННЫЙ КОНТАКТ ВЫВЕСТИ "+"!!! потом отключить... это возможно? может примерчик найдётся?..
← →
maxistent © (2004-12-08 04:14) [16]Нет, вы не поняли! Мне же надо НА ОПРЕДЕЛЁННЫЙ КОНТАКТ ВЫВЕСТИ "+"!!! потом отключить... это возможно? может примерчик найдётся?..
← →
maxistent © (2004-12-08 04:14) [17]Нет, вы не поняли! Мне же надо НА ОПРЕДЕЛЁННЫЕ КОНТАКТЫ ВЫВЕСТИ "+"!!! потом отключить... это возможно? может примерчик найдётся?..
← →
maxistent © (2004-12-08 04:16) [18]э-э-э.. пардон...
← →
Германн © (2004-12-08 04:24) [19]2 maxistent ©
"НА ОПРЕДЕЛЁННЫЕ КОНТАКТЫ" вывести не сможешь. Сможешь только на вывод DTR или вывод RTS.
← →
maxistent © (2004-12-08 10:50) [20]а тогда остальные накой !...! нужны?!
← →
maxistent © (2004-12-08 11:32) [21]что, никто не знает, как это сделать? или это действительно невозможно? Вообще, мне нужно отправить туда (в COM) строку с текстом... как это сделать?
← →
GanibalLector © (2004-12-08 11:41) [22]Сначаkf ты спрашиваешь одно,потом другое...все как-то не связано...хрен поймешь,что тебе надо.
И еще...внимательно читай [19]
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.041 c