PDA

View Full Version : ارتباط با پورتها



saeed ahadi
پنج شنبه 04 اسفند 1384, 10:55 صبح
نحوه برقراری ارتباط دلفی با پورتهای com و lpt رو کسی بلده؟
لطفا کمک کنید.

Touska
پنج شنبه 04 اسفند 1384, 12:30 عصر
با کامپوننت های Comport مشکلتون حله.

فقط لطف کنید قبل از پرسیدن سئوال در سایت جستجو کنید.

mzjahromi
شنبه 06 اسفند 1384, 08:16 صبح
نحوه برقراری ارتباط دلفی با پورتهای com و lpt رو کسی بلده؟
لطفا کمک کنید.
میتونید اونا رو مثل یک فایل باز کنید و توشون بنویسید یا ازشون بخونید
این کد باز کردن پورت


procedure TMainForm.OpenPort(i:Integer);
{}
Procedure InitSerial;
Var
DCB: TDCB;
Config : String;
CommTimeouts : TCommTimeouts;
begin
if not SetupComm(hCom, RxBufferSize, TxBufferSize) then
showMessage('CanNot Setup Com Port');

if not GetCommState(hCom, DCB) then
showmessage('can not read com state')
Else
Begin
Config :=Pchar('baud=19200 parity=n data=8 stop=1'+#0);

if not BuildCommDCB(@Config[1], DCB) then
ShowMessage('Can Not build com dcb')
else
if not SetCommState(hCom, DCB) then
ShowMessage('Can Not set com state');
End;

with CommTimeouts do
begin
ReadIntervalTimeout := 0;
ReadTotalTimeoutMultiplier := 0;
ReadTotalTimeoutConstant := 1000;
WriteTotalTimeoutMultiplier := 0;
WriteTotalTimeoutConstant := 1000;
end;

if not SetCommTimeouts(hCom, CommTimeouts) then
showMessage('Can not set com timeout');
End;
begin
CPN:=i; //initialize serial Port to Boud=9600 Parity=none startbit=1
hCom := CreateFile(PChar(ComPort),
Generic_Read,// Or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if hCom = INVALID_HANDLE_VALUE then
showMessage('Error Opening File')
else
Begin
InitSerial;
End;
end;

اینهم کد خواندن


function TMainForm.read1byteFromPort:byte;
Var
d: array[1..1] of byte;
s: String;
BytesRead, i: cardinal;
Begin
if not ReadFile (hCom, d, sizeof(d), BytesRead, Nil) then
read1byteFromPort:=0
Else
read1byteFromPort:=d[1];
end;

البته کد خواندن رو بر اساس نیاز خودت باید تغییرش بدی
کد نوشتن هم خودت مثل این کد بنویس

mehdi_394
یک شنبه 07 اسفند 1384, 00:28 صبح
برای ارتباط با پورت ها ساده ترین را استفاده از porttalk هستش. دقیقا همین کلمه رو تو گوگل بنویس و اونو سرچ کن .
بعدش طبق راهنمای آن عمل کن .جزئیات بیشتر رو خودش داره .
در آخر می تونی مثل ویندوز 98 با پورتها توی xp کار کنی.


asm
MOV DX,0378H
MOV AL,n
OUT DX,AL
end

البته این برای نوشتن تو پورت بود بهتره مثالهای خودش رو بخونی :تشویق:

شفیعی
جمعه 16 تیر 1385, 08:18 صبح
سلام
دوست عزیز تکه برنامه شما را اجرا کردم پیغام زیر را میدهد
Undeclared identifier: 'hCom'

mzjahromi
شنبه 17 تیر 1385, 06:46 صبح
سلام
دوست عزیز تکه برنامه شما را اجرا کردم پیغام زیر را میدهد
Undeclared identifier: 'hCom'
اگر منظورتون تکه برنامه منه
Hcom رو به عنوان یک THandle تعریف کن

delphi5
پنج شنبه 20 مهر 1385, 08:04 صبح
procedure TMainForm.OpenPort(i:Integer);
{}
Procedure InitSerial;
Var
DCB: TDCB;
Config : String;
CommTimeouts : TCommTimeouts;
begin
if not SetupComm(hCom, RxBufferSize, TxBufferSize) then
showMessage('CanNot Setup Com Port');

if not GetCommState(hCom, DCB) then
showmessage('can not read com state')
Else
Begin
Config :=Pchar('baud=19200 parity=n data=8 stop=1'+#0);

if not BuildCommDCB(@Config[1], DCB) then
ShowMessage('Can Not build com dcb')
else
if not SetCommState(hCom, DCB) then
ShowMessage('Can Not set com state');
End;

with CommTimeouts do
begin
ReadIntervalTimeout := 0;
ReadTotalTimeoutMultiplier := 0;
ReadTotalTimeoutConstant := 1000;
WriteTotalTimeoutMultiplier := 0;
WriteTotalTimeoutConstant := 1000;
end;

if not SetCommTimeouts(hCom, CommTimeouts) then
showMessage('Can not set com timeout');
End;
begin
CPN:=i; //initialize serial Port to Boud=9600 Parity=none startbit=1
hCom := CreateFile(PChar(ComPort),
Generic_Read,// Or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if hCom = INVALID_HANDLE_VALUE then
showMessage('Error Opening File')
else
Begin
InitSerial;
End;
end;




اقای mzjahromi
من از کد شما استفاده کردم اما اینها رو نمیشناسه
SetupComm(hCom, RxBufferSize, TxBufferSize)

mzjahromi
پنج شنبه 20 مهر 1385, 08:23 صبح
از SetUpComm نیست اون توی یونیت Windows هست من فکر میکنم مشکل شما هم از همون HCom باشه خط زیر رو تو قسمت Public فرمتون تعریف کنید


hcom:Thandle;