View Full Version : پورت rs232ودلفی
  
lena abbaszadeh
شنبه 21 دی 1387, 16:33 عصر
سلام دوستان عزیز
من باید یه برنامه بنویسم که از پورت rs232 دیتا بگیره و بفزسته:ناراحت:
به دادم برسین:افسرده:
Valadi
شنبه 21 دی 1387, 16:44 عصر
شما می تونید از کامپونت cport استفاده کنید یا یک اکتیو ایکس خود ویندوز (درسایت خودم اکتیو ایکس بهمراه لایسنس قرار دادم ) 
پیشنهاد می کنم از کامپونت cport استفاده کنید
lena abbaszadeh
دوشنبه 23 دی 1387, 10:09 صبح
سلام
مرسی ولی میشه link سایت خودتون رو بدین؟
در ضمن من یک تازه کارم و این یه پروژه کاریه
plz بیشتر راهنماییم کنید
babak_delphi
دوشنبه 23 دی 1387, 13:49 عصر
احتمالا همون لینکهایی هستند که در امضا قرار داده
mohammadamin
سه شنبه 22 اردیبهشت 1388, 14:13 عصر
آقای Valadi همه منتظر اعلام لینک شما هستند؟ پس چی شد؟
Valadi
سه شنبه 22 اردیبهشت 1388, 15:29 عصر
این هم لینک دانلود (http://barnamenevis.org/forum/attachment.php?attachmentid=16802&d=1209197749)
mossaferin
سه شنبه 22 اردیبهشت 1388, 21:13 عصر
سلام دوستان عزیز
من باید یه برنامه بنویسم که از پورت rs232 دیتا بگیره و بفزسته:ناراحت:
به دادم برسین:افسرده:
با این تاپیک جدید فکر کنم هنوز مشکل شما با پورت سریال حل نشده ، چرا توی تاپیک قبلی ادامه ندادین ؟
این همون مشکل قدیمیه یا یه مشکل جدید ؟
Delphi Coder
چهارشنبه 23 اردیبهشت 1388, 10:50 صبح
function SetPortInfo(ComPort: PChar;
  BaudRate: Cardinal): Boolean;
var
  Dcb: _DCB;
  TimeOut: _COMMTIMEOUTS;
begin
  Result := True;
  PortHandle := CreateFile(ComPort,GENERIC_WRITE or GENERIC_READ,0,nil,OPEN_EXISTING,0,0);
  if PortHandle=INVALID_HANDLE_VALUE then
  begin
    Result := False;
    Exit;
  end;
    if not GetCommState(PortHandle, dcb) then
  begin
    CloseHandle(PortHandle);
    Result := False;
    Exit;
  end;
    dcb.Flags := 0;
    dcb.Flags := dcb.Flags or 1; //fBinary := 1
    dcb.ByteSize := 8;
    dcb.Parity := NOPARITY;
    dcb.StopBits := ONESTOPBIT;
  dcb.BaudRate := BaudRate;
  if not SetCommState(PortHandle,dcb) then
  begin
    CloseHandle(PortHandle);
    Result := False;
    Exit;
  end;
  TimeOut.ReadIntervalTimeout := 0;
  TimeOut.ReadTotalTimeoutMultiplier := 6;
  TimeOut.ReadTotalTimeoutConstant := 13;
  TimeOut.WriteTotalTimeoutMultiplier := 6;
  TimeOut.WriteTotalTimeoutConstant := 13;
  if not SetCommTimeouts(PortHandle,TimeOut) then
  begin
    CloseHandle(PortHandle);
    Result := False;
    Exit;
  end;
end;
PortHandle  در اینجا یک متغییر سراسری هست. ComPort هم که اسم پورت COM1 یا COM2 یا.... Baudrate سرعت. سایر تنظیمات TimeOut و CommState رو از MSDN اگه لازم شد یه مطالعه بکنید. بعد از فراخوانی این تابع می تونید با API های ReadFile و WriteFile با هندل PortHandle روی پورت بنویسید و بخونید درست مثل اینکه با فایل کار می کنید.
PS:
به اسم تابع زیاد دقت نکنید میدونم اسم خوبی انتخاب نکردم مهم اینکه کار رو راه میندازه.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.