ورود

View Full Version : دلفی و پورت rs232



lena abbaszadeh
پنج شنبه 26 دی 1387, 11:42 صبح
سلام دوستان
من یه پوروژه دارم که باید اطلاعات از پورت rs232 بگیره و اطلاعات به این پورت ارسال کنه
لطفا راهنماییم کنین که اصلا باید از کجا شروع کنم؟در چه زمینه ای باید مطالعه کنم؟
راستش واقعا گیج شدم:ناراحت:

nouri2015
پنج شنبه 26 دی 1387, 11:52 صبح
ابتدا باید یه ابزار برای ارسال و دریافت اطلاعات از پورت سریال در دلفی باید انتخاب کنی.

babak_delphi
پنج شنبه 26 دی 1387, 13:17 عصر
کامپوننت هایی برای اینکار وجود دارند که اگه Search کنی در سایت هست
با کد نویسی هم میشه که کدش رو با جستجو با گوگل میتونی پیدا کنی
از مجموعه کامپوننت apro هم میتونی استفاده کنی
KDTELE هم ابزاری برای این کار داره
موفق باشی

Valadi
شنبه 28 دی 1387, 09:08 صبح
من یه پوروژه دارم که باید اطلاعات از پورت rs232 بگیره و اطلاعات به این پورت ارسال کنه

اطلاعات کاملی باید بدید که مشکل شما حل بشه
1 - آیا سخت افزار شما پورت سریال را داره ؟
2 - اگر نداره شما از یک تراشه MX232 استفاده کردید؟
3 - این اطلاعات در دلفی می خواهید بخونید یا دیگر زبانه ها؟
4 - اگر در دلفی می خواهید بخونید 2 تا ابزار هست 1 - کامپونت Cport و 2 - از اکتیو ایکس که می تونید در بیشتر زبانها استفاده کنید که خودم در سایت قرار دادم
موفق وموید باشید

lena abbaszadeh
یک شنبه 29 دی 1387, 10:44 صبح
سلام valadi
پروژه اینجوریه که گروه r&d شرکت یه بورد طراحی کردن که با یه پورت rs232 به کامپیوتر وصل میشه
من باید یه برنامه با دلفی بنویسم که اطلاعات ارسالی رو بخونه ودر ضمن بتونه به این بورد اطلاعات بفرسته
در مورد cport مشه بگی دقیقا چیه یا انکه یه link مفید بهم بدی؟:لبخندساده:
mer3000000000000000000000000000000000

Valadi
یک شنبه 29 دی 1387, 11:53 صبح
خوب حالا تا حدودی جواب سوالاتم رسیدم
این اطلاعات از جنس چیه ؟
کاراکتر ؟

lena abbaszadeh
یک شنبه 29 دی 1387, 16:08 عصر
اطلاعات از جنس عدده که وارد این نرم افزار میشه و روی اون تصمیم گیری میشه
باز هم مرسی

Valadi
دوشنبه 30 دی 1387, 10:55 صبح
اگر در دلفی می خواهید بخونید 2 تا ابزار هست 1 - کامپونت Cport و 2 - از اکتیو ایکس که می تونید در بیشتر زبانها استفاده کنید که خودم در سایت قرار دادم
موفق وموید باشید

nouri2015
دوشنبه 30 دی 1387, 13:51 عصر
دوست عزیز mscom32.ocxبا Baudrate بالا درست عمل نمی کند بدین مفهوم که چون ردو بدل اطلاعات خیلی سریع صورت می گیرد overflow رخ می دهد.

lena abbaszadeh
دوشنبه 30 دی 1387, 15:54 عصر
tanx valadi
تلاشم می کنم

lena abbaszadeh
دوشنبه 30 دی 1387, 15:55 عصر
پیشنهاد شما چیه؟

lena abbaszadeh
چهارشنبه 02 بهمن 1387, 08:59 صبح
سلام
دوستان میشه بگین کامپوننت cport رو باید از کجا پیدا کنم؟
من هیچی راجع به این کامپوننت نمیدونم:گریه:
plz راهنماییم کنین
tanx

lena abbaszadeh
چهارشنبه 02 بهمن 1387, 10:57 صبح
یعنی واقعا کسی نیست که بخواد به من کمک کنه؟
من فقط 10 روز وقت دارم:گریه:
لطفا کمک کنین:عصبانی++:

nouri2015
پنج شنبه 03 بهمن 1387, 10:21 صبح
از دلفی چه version استفاده می کنید؟

mossaferin
پنج شنبه 03 بهمن 1387, 12:18 عصر
سلام

توصیه من، همراه با یه مثال ، و اطمینان از اینکه کارشو درست انجام میده ، در سرعت های بالاهم استفاده کردم جواب میده هیچ مشکلی نداره


اگه باز هم مشکلی بود ، بگید

موفق باشی

lena abbaszadeh
پنج شنبه 03 بهمن 1387, 12:28 عصر
mossaferin خیلی ممنون
ولی میشه یکم توتیح بدی؟
راستش بخوای من اصلا نفهمیدم:ناراحت:

mossaferin
پنج شنبه 03 بهمن 1387, 21:10 عصر
سلام
برای برنامه نویسی روی پورت RS-232 باید راجع به خود پورت اطلاعات کافی داشته باشی تا بتونی از ابزاری که در اختیارت قرار میگیره استفاده کنی


اول یک کتاب به اسم PCInterface ( نشرعلوم ) تهیه کن و راجع به پورت سریال اطلاعا ت کافی کسب کن ، همراه این کتاب یه سی دی هست که حاوی یه کامپونت با روش استفاده بسیار ساده و تعدادی مثال سخت افزاری و نرم افزاری برای کامپایلرهای مختلف هست ، که برای کارای ابتدایی و یادگیری چیز خوبیه و جواب میده ...
ولی اگر بخوای حرفه ای تر به پورت سریال بپردازی دیگه جواب گو نیست


کمی راجع ابزاری که معرفی کردم ...

یکی از محصولات شرکت winsoft می باشد.


Comport.dll,comport.pas
فایلهای اصلی و مورد نیاز این ابزار می باشد
فایل comport.dll که معلومه ...
فایل comport.pas هم حاوی تعاریف و توابع قابل استفاده در dll است، می باشد.



procedure TFormComPort.ComboBoxDeviceNameChange(Sender: TObject);
begin
SetDeviceName(ComPort, PChar(ComboBoxDeviceName.Text));
end;

procedure TFormComPort.ComboBoxBaudRateChange(Sender: TObject);
begin
SetBaudRate(ComPort, TBaudRate(ComboBoxBaudRate.ItemIndex));
end;

procedure TFormComPort.ComboBoxDataBitsChange(Sender: TObject);
begin
SetDataBits(ComPort, TDataBits(ComboBoxDataBits.ItemIndex));
end;

procedure TFormComPort.ComboBoxStopBitsChange(Sender: TObject);
begin
SetStopBits(ComPort, TStopBits(ComboBoxStopBits.ItemIndex));
end;

procedure TFormComPort.ComboBoxParityChange(Sender: TObject);
begin
SetParity(ComPort, TParity(ComboBoxParity.ItemIndex));
end;



SetActive(ComPort, not GetActive(ComPort));
این قسمت از کد ، پورت سریال را با تنظیماتی مثل نام پورت ، stopbit,databit,parity,baudrate و باز میکند و با استفاده از توابعی که در اختیار شما قرار می دهد اجازه خواندن و نوشتن روی پورت را به شما میدهد



procedure ReadString(ComPort: PComPort; const Value: PChar; var Size: Integer); stdcall; external ComPortDLL;
procedure WriteString(ComPort: PComPort; const Value: PChar); stdcall; external ComPortDLL;
function ReadChar(ComPort: PComPort): Char; stdcall; external ComPortDLL;
procedure WriteChar(ComPort: PComPort; Value: Char); stdcall; external ComPortDLL;
function ReadByte(ComPort: PComPort): Byte; stdcall; external ComPortDLL;
procedure WriteByte(ComPort: PComPort; Value: Byte); stdcall; external ComPortDLL;
function ReadWord(ComPort: PComPort): Word; stdcall; external ComPortDLL;
procedure WriteWord(ComPort: PComPort; Value: Word); stdcall; external ComPortDLL;
function ReadDWord(ComPort: PComPort): DWord; stdcall; external ComPortDLL;
procedure WriteDWord(ComPort: PComPort; Value: DWord); stdcall; external ComPortDLL;

توابعی که در بالا اشاره شد جهت خواندن و نوشتن روی پورت می باشد که میتواند به صورت
رشته (ascii) ،کاراکتری(ascii)،بایت(8bit) ، ورد(16bit)، دابل ورد(32bit) باشد که بسته به کاری که میخوای انجام بدی متفاوت خواهند بود

البته همانطور که گفتم شما باید به اندازه کافی از سخت افزاری که قراره به پورت سریال وصل بشه اطلاعات داشته باشی تا بتونی پورت را با تنظیمات صحیح بازکنی

* البته این رو هم بگم که این مثال اطلاعاتی که به پورت ارسال و دریافت میکنه به صورت کاراکتری می باشد و شما بایستی براساس سخت افزار و نرم افزار اینترفیس خودتون نوع اطلاعات رو انتخاب کنید




procedure ComPortRxChar(ComPort: PComPort);
var Text: String;
begin
Text := '';
while InputCount(ComPort) > 0 do
Text := Text + ReadChar(ComPort);
FormComPort.Memo.SelText := Text;
FormComPort.AddReadBytes(Length(Text));
end;

این قسمت برای خواندن اطلاعات روی پورت می باشد که تابع inputcount به ما میگه که چه تعداد اطلاعات روی بافر پورت موجود می باشد (البته به بایت)




procedure TFormComPort.SpeedButtonSendClick(Sender: TObject);
begin
WriteString(ComPort, PChar(Edit.Text + #13));
end;



این قسمت هم برای نوشتن اطلاعات روی پورت میباشد








یه توصیه دیگه


برای شروع پین شماره 2 و3 پورت سریال کامپیوتر رو به هم وصل کن ، برنامه رو اجرا کن و ببین ارسال و دریافت روی پورت چگونه صورت میگیره (هرچی بفرستی ، همونو میگیری)، انواع مختلف دیتا رو برای ارسال و دریافت استفاده کن



نکته : برای ارتباط موفق با سخت افزار باید یک پروتکل مناسب بین اینترفیس و کامپیوتر تعریف کرد



موفق باشی


البته صحبت راجع به این ابزار و پورت سریال رو نمیشه به این چند خط خلاصه کرد :لبخندساده:

lena abbaszadeh
شنبه 05 بهمن 1387, 08:53 صبح
mersiiiiiiiiiiiiiiiiiiiiiiiiii
توضیحاتت خیلی کامل بود.قبل ازینکه تو راهنماییم کنی یکی از دوستام اکتیویکس ocx پیشنهاد کرد و من کارمو شروع کردم ولی ای توضیحات خیلی کامله
حالا می خوام این component رو امتحان کنم
بازم مرسی

lena abbaszadeh
پنج شنبه 10 بهمن 1387, 10:19 صبح
سلام
من یه سوال دیگه هم داشتم
اینکه گفتین از یه اینترفیس خوب باید استفاده کنم یعنی چی؟
میشه یکم توضیح بدین؟
tnx:خجالت:

mossaferin
شنبه 12 بهمن 1387, 19:41 عصر
نگفتم


اینکه گفتین از یه اینترفیس خوب باید استفاده کنم یعنی چی؟
گفتم

نکته : برای ارتباط موفق با سخت افزار باید یک پروتکل مناسب بین اینترفیس و کامپیوتر تعریف کردتعریف پروتکل مناسب یعنی حداقل ارسال و دریافت

به این معنی هست که مثلا برای ارسال گروهی اطلاعات و اطمینان از اینکه این اطلاعات صحیح میباشد یا اینکه مطمئن شویم که اطلاعت فرستاده شده است ، بعد از هر بایت ارسال منتظر دریافت یک کد به معنی دریافت اطلاعات از سمت گیرنده باشیم ، به شدت زمان بر می باشد که بهتر است به تعداد اطلاعات بسنده کرد(ویا از روش های CRC استفاده کرد)

ویا اینکه تعریف کنیم
بایت اول کد فرمان است
بایت دوم تعداد اطلاعات
بایت سوم الی اخر دیتا

ویا تعریف کردن timeout به این معنی که اگر بعد از X ms به تعدادی که در بایت تعداد اعلام شده بود ، دیتا نیامد ، باید دوباره درخواست دیتا کرد

و از همه مهمتر تعریف مستر و اسلیو برای PC و اینترفیس

البته همه این تعاریف قراردادی و توسط خود شما تعریف میشوند ، مگر اینکه خواسته باشید از پروتکل های استاندارد برای ارتباط تان استفاده کنید

موفق باشید

lena abbaszadeh
یک شنبه 13 بهمن 1387, 09:13 صبح
سلام
تو نصب comport.dll مشکل دارم
error میده
میشه روند کلی نصب رو بهم بگی؟:لبخندساده:

lena abbaszadeh
یک شنبه 13 بهمن 1387, 09:19 صبح
سلام

توصیه من، همراه با یه مثال ، و اطمینان از اینکه کارشو درست انجام میده ، در سرعت های بالاهم استفاده کردم جواب میده هیچ مشکلی نداره


اگه باز هم مشکلی بود ، بگید

موفق باشی
واقعا ممنون از این sample
فقط من یه مشکل دارم اونم اینه که قسمت comportRxchar اصلا نمی فهمم !!! این procedure مربوط به خواندن از پورته ولی مربوط به کدوم button هست؟

mossaferin
یک شنبه 30 فروردین 1388, 16:20 عصر
فقط من یه مشکل دارم اونم اینه که قسمت comportRxchar اصلا نمی فهمم !!! این procedure مربوط به خواندن از پورته ولی مربوط به کدوم button هست؟

این تابع یک event هست که به محض دریافت اطلاعات روی پورت اجرا می شود.

seyed_farid
یک شنبه 20 اردیبهشت 1388, 00:26 صبح
mossaferin گفته:
برای شروع پین شماره 2 و3 پورت سریال کامپیوتر رو به هم وصل کن ، برنامه رو اجرا کن و ببین ارسال و دریافت روی پورت چگونه صورت میگیره (هرچی بفرستی ، همونو میگیری)، انواع مختلف دیتا رو برای ارسال و دریافت استفاده کن


يه راه ديگه :
اگه بخواهي از پورت مودم استفاده كني يه پيام (ATE1) بفرست تا مودمت هرچي بهش ميفرستي رو براي خودت برگرداند و براي لغوش هم ATE0 بفرست.:لبخندساده:

skflower
جمعه 26 تیر 1388, 02:17 صبح
با سلام خدمت دوستان عزیز.
من مدتیه که میخوام با استفاده از kdtel یا apro با پورت سریال ارتباط برقرار کنم. ولی هرجای این سایت یا سایت های دیگه که جستجو میکنم، فقط راجه به تلفن گویا و اینجور چیزا میبینم. درحالیکه پورت سریال هم در کنار تلفن و ... یکی از امکانات این دو کامپوننته. اگه میشه کمکم کنید.
با تشکر

pezhvakco
شنبه 03 مرداد 1388, 08:50 صبح
کسی می تونه فایل یا لینک دانلود کامپونت kdtele3.6 رو قرار دهید .
به همراه کرک .
لطفا و تشکر ...

ب- تات
پنج شنبه 08 مرداد 1388, 17:30 عصر
با كامپوننت cport 3 تمام نيازهاي شما براي ارتباط و ارسال و دريافت با سربال برطرف خواهد شد. كاملا عملي. فقط در كار با پورت سريال بايد دقت كتيد هر 2 سمت بايد مشخصات تنظيمات سريالشان يكسان باشند. در ضمن مراقب ظول سيم در rs232 باشيد كه بيشتر از 200 متر نشه . حتما از پروتكلهاي كنترل صحت ديتاي دريافتي و ارسالي استفاده كنيد(توسط خودتان بايد ساخته شود). در سريال مخصوصا اگر طرف مقابل شما يك تراشه ميكرو كنترل هست دقت كنيد كه در شرائط مختلف بايد يا استفاده ار وقفه در برنامتون (sleep = x) به ميكرو اجاره بدين كارشو انجام بده.
cport مخصوصا در دريافت به خاطر trigger كردن سريال خطا و مرگ نداره. در ضمن حتما بر حسب نياز rts, dtr رو هم استفاده كنيد . اينها در كار با ميكرو كاربرد دارند.
كارخانه هاي زيادي هستند كه توسط همين كامپوننت و دلفي و ميكرو در حال حاظر در رقابت با PLC خيلي راحت دارن كنترل ميشن و من از اين ارتباط بين سريال و نرم افزار لذت ميبرم...

skflower
پنج شنبه 08 مرداد 1388, 17:42 عصر
کسی می تونه فایل یا لینک دانلود کامپونت kdtele3.6 رو قرار دهید .
به همراه کرک .
لطفا و تشکر ...

سلام دوست عزیز. قرار دادن لینکهای کرک شده خلاف قوانین سایت هستش.
موفق باشید.

skflower
پنج شنبه 08 مرداد 1388, 17:47 عصر
با كامپوننت cport 3 تمام نيازهاي شما براي ارتباط و ارسال و دريافت با سربال برطرف خواهد شد. كاملا عملي. فقط در كار با پورت سريال بايد دقت كتيد هر 2 سمت بايد مشخصات تنظيمات سريالشان يكسان باشند. در ضمن مراقب ظول سيم در rs232 باشيد كه بيشتر از 200 متر نشه . حتما از پروتكلهاي كنترل صحت ديتاي دريافتي و ارسالي استفاده كنيد(توسط خودتان بايد ساخته شود). در سريال مخصوصا اگر طرف مقابل شما يك تراشه ميكرو كنترل هست دقت كنيد كه در شرائط مختلف بايد يا استفاده ار وقفه در برنامتون (sleep = x) به ميكرو اجاره بدين كارشو انجام بده.
cport مخصوصا در دريافت به خاطر trigger كردن سريال خطا و مرگ نداره. در ضمن حتما بر حسب نياز rts, dtr رو هم استفاده كنيد . اينها در كار با ميكرو كاربرد دارند.
كارخانه هاي زيادي هستند كه توسط همين كامپوننت و دلفي و ميكرو در حال حاظر در رقابت با PLC خيلي راحت دارن كنترل ميشن و من از اين ارتباط بين سريال و نرم افزار لذت ميبرم...

سلام دوست عزیز.
Cport رایگانه یا تجاری؟ اگه رایگانه لینکشو میخواستم و اگه تجاریه نسخه ی Trial رو برای امتحان پیش از خریدش میخواستم.
با تشکر

ب- تات
جمعه 09 مرداد 1388, 08:29 صبح
سلام دوست عزیز.
Cport رایگانه یا تجاری؟ اگه رایگانه لینکشو میخواستم و اگه تجاریه نسخه ی Trial رو برای امتحان پیش از خریدش میخواستم.
با تشکر

اينهم cport رايگان همراه كليه متعلقاتش در delphi 3-7 از مثالهاش ميشه امكاناتش رو فهميد.