Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Контакты COM-порта... [D5, D7, Win95/98, WinXP]


Страницы:   1 2

maxistent ©   (2004-12-07 13:33:00) 

Дарова, уважаемые! Как "послать" в 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В.)?


dr Tr0jan   (2004-12-07 15:27:00) [21]

COM же вроде используется для PICов.
Для справки: PIC - Programmable Interrupt Controller


Cosinus   (2004-12-07 14:39:00) [22]

1) Выставлять уровни на всевозможные сигнальные линии (а-ля DTR/DTS/... и тд)
2) Кончать заниматься фигней и лопатить светоИдиодные устройства на LPT.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо