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

Вниз

Как работать с COM портами в DELPHI   Найти похожие ветки 

 
Lipa   (2002-12-02 16:39) [0]

Пожалуста подскажите, як считать через COM порт число (числа) в бинарном виде. Заранее благодарю за информацию.


 
[NIKEL] ©   (2002-12-02 17:52) [1]

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HANDLE hCom = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL );

if(hCom)
{

DCB dcb;
ZeroMemory(&dcb, sizeof(dcb));
dcb.DCBlength = sizeof(dcb);

dcb.BaudRate = 57600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY; // NOPARITY and friends are
dcb.StopBits = ONESTOPBIT; // #defined in windows.h

// Set the port properties and write the string out the port.
if(SetCommState(hCom,&dcb))
{
DWORD ByteCount;
const char *msg = "Hello world!";
WriteFile(hCom,msg, strlen(msg),&ByteCount,NULL);
}
CloseHandle(hCom);
}
}



 
Lipa   (2002-12-03 12:28) [2]

а может есть еще пример по работе с COM портами для чтения и записи информации в текстовом и числовом виде?


 
DOOMin   (2002-12-03 12:47) [3]

сходи на www.torry.net и поищи CPDrv. Хорошая компонента


 
Андрей Ваганов   (2002-12-03 19:53) [4]

1. открываем...
type
Data=array[0..9]of byte;
var
hComm:THandle;

* * * *
function Open(CommNo:byte):THandle;
var
dcb:TDCB;
begin
try
hComm:=CreateFile( PChar(Format("COM%1d", [CommNo])),
GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Win32Check(hComm <> INVALID_HANDLE_VALUE);
GetCommState(hComm, dcb);
Win32Check( GetCommState(hComm, dcb) );
dcb.BaudRate:=9600;
dcb.ByteSize := 8;
dcb.StopBits := 2;
dcb.Parity := NOPARITY;
Win32Check( SetCommState(hComm, dcb) );
result:=hComm;
except
Win32Check(CloseHandle(hComm));
exit;
end;
end;

2.сюда...

function Read:data;
var
Pachet:Data;
Bytes:dword;
begin
try
Win32Check( ReadFile(hComm, Pachet, 10, Bytes, nil) );
if Bytes<>11 then //тру ля ля .... лажа...
result:=Pachet;
except
exit;
end;
end;

3. туда...

function Write(hComm:THandle; Packet:Data):word;
var
Bytes:dword;
begin
try
Win32Check(WriteFile(hComm, Packet ,10, Bytes, nil));
if Bytes<>10 then //тру ля ля .... лажа...
exit;
except
exit;
end;
end;

4. закрываем...

function Close(hComm:THandle):word;
begin
try
CloseHandle(hComm);
except
exit;
end;
end;

5...возми компоненту, написанную умным дядей и не морочь 00...
(на www.torry.net их куча, хорошо работает TComPort v.2.61a)



Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.036 c
14-29075
Supreme
2003-01-24 00:00
2003.02.10
Институт Искусственного Интеллекта


3-28672
Oleon
2003-01-24 13:07
2003.02.10
Здраствуйте. Вопрос по работе с TStoredProc.


7-29141
DenK_vrtz
2002-12-04 10:02
2003.02.10
Вопрос про системные ресурсы!


8-28938
Artem21x
2002-10-28 21:09
2003.02.10
DelphiX и следы


7-29116
DAnton
2002-12-05 15:32
2003.02.10
SetLocalTime();???