نمایش نتایج 1 تا 8 از 8

نام تاپیک: ارتباط با پورتها

  1. #1

    Question ارتباط با پورتها

    نحوه برقراری ارتباط دلفی با پورتهای com و lpt رو کسی بلده؟
    لطفا کمک کنید.

  2. #2
    کاربر دائمی آواتار Touska
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    ایران زمین
    سن
    39
    پست
    1,988
    با کامپوننت های Comport مشکلتون حله.

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

  3. #3
    نحوه برقراری ارتباط دلفی با پورتهای 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;

    البته کد خواندن رو بر اساس نیاز خودت باید تغییرش بدی
    کد نوشتن هم خودت مثل این کد بنویس
    You never know what you can do until you try

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1383
    محل زندگی
    کردستان
    پست
    73
    برای ارتباط با پورت ها ساده ترین را استفاده از porttalk هستش. دقیقا همین کلمه رو تو گوگل بنویس و اونو سرچ کن .
    بعدش طبق راهنمای آن عمل کن .جزئیات بیشتر رو خودش داره .
    در آخر می تونی مثل ویندوز 98 با پورتها توی xp کار کنی.

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

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

  5. #5
    سلام
    دوست عزیز تکه برنامه شما را اجرا کردم پیغام زیر را میدهد
    Undeclared identifier: 'hCom'

  6. #6
    نقل قول نوشته شده توسط شفیعی
    سلام
    دوست عزیز تکه برنامه شما را اجرا کردم پیغام زیر را میدهد
    Undeclared identifier: 'hCom'
    اگر منظورتون تکه برنامه منه
    Hcom رو به عنوان یک THandle تعریف کن
    You never know what you can do until you try

  7. #7
    کاربر دائمی آواتار delphi5
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    پست
    350

    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:20 صبح

  8. #8
    از SetUpComm نیست اون توی یونیت Windows هست من فکر میکنم مشکل شما هم از همون HCom باشه خط زیر رو تو قسمت Public فرمتون تعریف کنید

    hcom:Thandle;

    You never know what you can do until you try

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •