Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

Контакты 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 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.049 c
14-1105528663
Subdigger
2005-01-12 14:17
2005.01.30
xp, registry...


14-1105637717
Soft
2005-01-13 20:35
2005.01.30
Можно ли в России зарабатывать большие деньги честно?


1-1105700684
Dmitry_04
2005-01-14 14:04
2005.01.30
Как мне перевести свой тип в поток?


4-1102961158
Bes
2004-12-13 21:05
2005.01.30
Оповещение основной программы о выгрузке DLL...


1-1106146280
lamo
2005-01-19 17:51
2005.01.30
Ошибка String or Integer