سلام دوستان
من یه پوروژه دارم که باید اطلاعات از پورت rs232 بگیره و اطلاعات به این پورت ارسال کنه
لطفا راهنماییم کنین که اصلا باید از کجا شروع کنم؟در چه زمینه ای باید مطالعه کنم؟
راستش واقعا گیج شدم
سلام دوستان
من یه پوروژه دارم که باید اطلاعات از پورت rs232 بگیره و اطلاعات به این پورت ارسال کنه
لطفا راهنماییم کنین که اصلا باید از کجا شروع کنم؟در چه زمینه ای باید مطالعه کنم؟
راستش واقعا گیج شدم
ابتدا باید یه ابزار برای ارسال و دریافت اطلاعات از پورت سریال در دلفی باید انتخاب کنی.
کامپوننت هایی برای اینکار وجود دارند که اگه Search کنی در سایت هست
با کد نویسی هم میشه که کدش رو با جستجو با گوگل میتونی پیدا کنی
از مجموعه کامپوننت apro هم میتونی استفاده کنی
KDTELE هم ابزاری برای این کار داره
موفق باشی
اطلاعات کاملی باید بدید که مشکل شما حل بشهمن یه پوروژه دارم که باید اطلاعات از پورت rs232 بگیره و اطلاعات به این پورت ارسال کنه
1 - آیا سخت افزار شما پورت سریال را داره ؟
2 - اگر نداره شما از یک تراشه MX232 استفاده کردید؟
3 - این اطلاعات در دلفی می خواهید بخونید یا دیگر زبانه ها؟
4 - اگر در دلفی می خواهید بخونید 2 تا ابزار هست 1 - کامپونت Cport و 2 - از اکتیو ایکس که می تونید در بیشتر زبانها استفاده کنید که خودم در سایت قرار دادم
موفق وموید باشید
سلام valadi
پروژه اینجوریه که گروه r&d شرکت یه بورد طراحی کردن که با یه پورت rs232 به کامپیوتر وصل میشه
من باید یه برنامه با دلفی بنویسم که اطلاعات ارسالی رو بخونه ودر ضمن بتونه به این بورد اطلاعات بفرسته
در مورد cport مشه بگی دقیقا چیه یا انکه یه link مفید بهم بدی؟
mer3000000000000000000000000000000000
خوب حالا تا حدودی جواب سوالاتم رسیدم
این اطلاعات از جنس چیه ؟
کاراکتر ؟
اطلاعات از جنس عدده که وارد این نرم افزار میشه و روی اون تصمیم گیری میشه
باز هم مرسی
اگر در دلفی می خواهید بخونید 2 تا ابزار هست 1 - کامپونت Cport و 2 - از اکتیو ایکس که می تونید در بیشتر زبانها استفاده کنید که خودم در سایت قرار دادم
موفق وموید باشید
دوست عزیز mscom32.ocxبا Baudrate بالا درست عمل نمی کند بدین مفهوم که چون ردو بدل اطلاعات خیلی سریع صورت می گیرد overflow رخ می دهد.
tanx valadi
تلاشم می کنم
پیشنهاد شما چیه؟
سلام
دوستان میشه بگین کامپوننت cport رو باید از کجا پیدا کنم؟
من هیچی راجع به این کامپوننت نمیدونم
plz راهنماییم کنین
tanx
یعنی واقعا کسی نیست که بخواد به من کمک کنه؟
من فقط 10 روز وقت دارم
لطفا کمک کنین
از دلفی چه version استفاده می کنید؟
سلام
توصیه من، همراه با یه مثال ، و اطمینان از اینکه کارشو درست انجام میده ، در سرعت های بالاهم استفاده کردم جواب میده هیچ مشکلی نداره
اگه باز هم مشکلی بود ، بگید
موفق باشی
آخرین ویرایش به وسیله mossaferin : پنج شنبه 03 بهمن 1387 در 20:53 عصر دلیل: ویرایش پیوست
mossaferin خیلی ممنون
ولی میشه یکم توتیح بدی؟
راستش بخوای من اصلا نفهمیدم
سلام
برای برنامه نویسی روی پورت 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;
این قسمت از کد ، پورت سریال را با تنظیماتی مثل نام پورت ، stopbit,databit,parity,baudrate و باز میکند و با استفاده از توابعی که در اختیار شما قرار می دهد اجازه خواندن و نوشتن روی پورت را به شما میدهد
SetActive(ComPort, not GetActive(ComPort));
توابعی که در بالا اشاره شد جهت خواندن و نوشتن روی پورت می باشد که میتواند به صورت
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 پورت سریال کامپیوتر رو به هم وصل کن ، برنامه رو اجرا کن و ببین ارسال و دریافت روی پورت چگونه صورت میگیره (هرچی بفرستی ، همونو میگیری)، انواع مختلف دیتا رو برای ارسال و دریافت استفاده کن
نکته : برای ارتباط موفق با سخت افزار باید یک پروتکل مناسب بین اینترفیس و کامپیوتر تعریف کرد
موفق باشی
البته صحبت راجع به این ابزار و پورت سریال رو نمیشه به این چند خط خلاصه کرد
mersiiiiiiiiiiiiiiiiiiiiiiiiii
توضیحاتت خیلی کامل بود.قبل ازینکه تو راهنماییم کنی یکی از دوستام اکتیویکس ocx پیشنهاد کرد و من کارمو شروع کردم ولی ای توضیحات خیلی کامله
حالا می خوام این component رو امتحان کنم
بازم مرسی
سلام
من یه سوال دیگه هم داشتم
اینکه گفتین از یه اینترفیس خوب باید استفاده کنم یعنی چی؟
میشه یکم توضیح بدین؟
tnx
نگفتم
گفتماینکه گفتین از یه اینترفیس خوب باید استفاده کنم یعنی چی؟
تعریف پروتکل مناسب یعنی حداقل ارسال و دریافتنکته : برای ارتباط موفق با سخت افزار باید یک پروتکل مناسب بین اینترفیس و کامپیوتر تعریف کرد
به این معنی هست که مثلا برای ارسال گروهی اطلاعات و اطمینان از اینکه این اطلاعات صحیح میباشد یا اینکه مطمئن شویم که اطلاعت فرستاده شده است ، بعد از هر بایت ارسال منتظر دریافت یک کد به معنی دریافت اطلاعات از سمت گیرنده باشیم ، به شدت زمان بر می باشد که بهتر است به تعداد اطلاعات بسنده کرد(ویا از روش های CRC استفاده کرد)
ویا اینکه تعریف کنیم
بایت اول کد فرمان است
بایت دوم تعداد اطلاعات
بایت سوم الی اخر دیتا
ویا تعریف کردن timeout به این معنی که اگر بعد از X ms به تعدادی که در بایت تعداد اعلام شده بود ، دیتا نیامد ، باید دوباره درخواست دیتا کرد
و از همه مهمتر تعریف مستر و اسلیو برای PC و اینترفیس
البته همه این تعاریف قراردادی و توسط خود شما تعریف میشوند ، مگر اینکه خواسته باشید از پروتکل های استاندارد برای ارتباط تان استفاده کنید
موفق باشید
سلام
تو نصب comport.dll مشکل دارم
error میده
میشه روند کلی نصب رو بهم بگی؟
این تابع یک event هست که به محض دریافت اطلاعات روی پورت اجرا می شود.فقط من یه مشکل دارم اونم اینه که قسمت comportRxchar اصلا نمی فهمم !!! این procedure مربوط به خواندن از پورته ولی مربوط به کدوم button هست؟
mossaferin گفته:
برای شروع پین شماره 2 و3 پورت سریال کامپیوتر رو به هم وصل کن ، برنامه رو اجرا کن و ببین ارسال و دریافت روی پورت چگونه صورت میگیره (هرچی بفرستی ، همونو میگیری)، انواع مختلف دیتا رو برای ارسال و دریافت استفاده کن
يه راه ديگه :
اگه بخواهي از پورت مودم استفاده كني يه پيام (ATE1) بفرست تا مودمت هرچي بهش ميفرستي رو براي خودت برگرداند و براي لغوش هم ATE0 بفرست.
با سلام خدمت دوستان عزیز.
من مدتیه که میخوام با استفاده از kdtel یا apro با پورت سریال ارتباط برقرار کنم. ولی هرجای این سایت یا سایت های دیگه که جستجو میکنم، فقط راجه به تلفن گویا و اینجور چیزا میبینم. درحالیکه پورت سریال هم در کنار تلفن و ... یکی از امکانات این دو کامپوننته. اگه میشه کمکم کنید.
با تشکر
کسی می تونه فایل یا لینک دانلود کامپونت kdtele3.6 رو قرار دهید .
به همراه کرک .
لطفا و تشکر ...
با كامپوننت cport 3 تمام نيازهاي شما براي ارتباط و ارسال و دريافت با سربال برطرف خواهد شد. كاملا عملي. فقط در كار با پورت سريال بايد دقت كتيد هر 2 سمت بايد مشخصات تنظيمات سريالشان يكسان باشند. در ضمن مراقب ظول سيم در rs232 باشيد كه بيشتر از 200 متر نشه . حتما از پروتكلهاي كنترل صحت ديتاي دريافتي و ارسالي استفاده كنيد(توسط خودتان بايد ساخته شود). در سريال مخصوصا اگر طرف مقابل شما يك تراشه ميكرو كنترل هست دقت كنيد كه در شرائط مختلف بايد يا استفاده ار وقفه در برنامتون (sleep = x) به ميكرو اجاره بدين كارشو انجام بده.
cport مخصوصا در دريافت به خاطر trigger كردن سريال خطا و مرگ نداره. در ضمن حتما بر حسب نياز rts, dtr رو هم استفاده كنيد . اينها در كار با ميكرو كاربرد دارند.
كارخانه هاي زيادي هستند كه توسط همين كامپوننت و دلفي و ميكرو در حال حاظر در رقابت با PLC خيلي راحت دارن كنترل ميشن و من از اين ارتباط بين سريال و نرم افزار لذت ميبرم...