PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل با پورت سریال



ROBOMAN
02-08-2015, 20:57
سلام

من از یه میکرو به میکروی دیگه رطوبت رو ارسال میکنم با دستور
Print " > RH: " ; H ;
به یه میکروی دیگه دیتا میفرستم و با دستور
Input Data_rec
دیتا رو میگیرم و روی نمایشگر نشون میدم حالا اگه ارتباط قطع بشه همون عدد قبلی رو نمایشگر میمونه و من میخام بنویسم disconnect
و از If Ischarwaiting(#3) = 1 Then استفاده کردم ولی نبود دیتا روی خط سریال رو متوجه نمیشه

حالا منظور کلیم فهمیدن وجود اطلاعات در پورت سریال


ممنوون میشم با مثال بهم راهنمایی گنین

mj.vb.net
03-08-2015, 03:22
پورت سریال سخت افزاریه یا به صورت نرم افزاری تعریف کردید؟
چون اگه نرم افزاری باشه بافر هم نداره و این دستور جواب نمیده
ولی تو پورت سخت افزاری باید کار بکنه
مگه مشکل دیگه ای باشه!

ROBOMAN
04-08-2015, 10:11
سلام
سخت افزاری از mega2560 استقاده کردم من بین دو میکرو ارتباط سریال برقرار کردم یکی master و یکی client میخام هر موقع کلاینت قطع شد مستر بنویسه disconn این کار با دستور ischarwaitingفقط برای اولین بار انجام میشه وقتی یه بار وصل شد و قظع شد دیگه ج نمیده cry::
یه سوال دیگه
من 7 تا کلاینت دارم که با ید دما و رطوبت رو به یک میکرو که مستره بفرستن و اونجا پردازش و روی ال سی دی گرافیکی نشون بدم
1- رشته ارسالی چطور باشه که تداخل نداشته باشه؟
2- دستورات دریافت و ارسال در دو طرف چی باشن؟
ممنوون از بچه ها که کمک میکنن

Shapour_Ardebil
04-08-2015, 13:38
با سلام

میتوانید یک تایمر با سرریز بزرگتر از حداکثر زمان دریافت اطلاعات سریال تعریف بکنید
در تابع دریافت اطلاعات با دریافت اطلاعات سریال مقدار تایمر را صفر کنید
اگر اطلاعات سریال جدیدی تا سرریز تایمر دریافت نکردید ضمن توقف ادامه فعالیت تایمر , در تابع سر ریز اطلاعات سون سگمنت را به هر چه که دوست دارید تبدیل بکنید

ROBOMAN
04-08-2015, 13:53
سلام
ممنوون یه مثال میزنید؟

Shapour_Ardebil
04-08-2015, 17:59
با سلام

مثلا قرار است در هر 0.8 ثانیه مقداری اطلاعات از طریق ارتباط سریال توسط میکرو X به میکرو Y ارسال شود
پس:

1- ما تایمر T را طوری پیکر بندی میکنیم که با گذشت 1 ثانیه وارد تابع اینتراپت سرریز این تایمر بشود
2 - با دریافت اولین داده از ماژول سریال , تایمر T را Enable می کنیم
3 - با دریافت داده سریال (در هر 0.8 ثانیه) علاوه بر خواندن داده سریال , مقدار شمارنده تایمر را صفر می کنیم
( چون داده حداکثردر 0.8 ثانیه دریافت میشود تا وقتیکه داده ارسال شود مقدار تایمر سرریز نمی شود)
4 - در صورت عدم ارسال داده جدید ( در حداکثر یک ثانیه ) تایمر T سرریز میشود
4.1 - در اینجا ما اول تایمرT را Disable میکنیم
4.2 - حالا هرچه که میخواهیم در سون سگمنت مینویسیم


به همین راحتی

موفق باشید

ROBOMAN
07-08-2015, 20:56
سلام
ممنوون
میشه با یه مثال عملی تو بسکام بدی؟؟
متشکرم

ROBOMAN
08-08-2015, 20:15
سلام

hekp help help

ehsanbagheri
09-08-2015, 15:46
سلام یه راه ساده اینه که اولا ازتباط رو با rs485 برقرار کنی که با دو سیم و یه پورت سریال تا 32 تا دیوایس یا حداکثر 255 تا دیوایس رو ساپورت میکنه و رویه برد کلاینت هم دیپ سوییچ هشایی بزاری که با تنظیم اون به هر برد یه آدرس داده باشی و موقع دریافت دیتا با آدرس چک بشه مستر تو بازه هایه مشخص زمانی دستور ازسال دیتا به کلاینت ها رو بده و در صورت عدم دریافت دیتا میتونی تشخص بدی که کدوم کلاینت در مدار نیست و به راحتی کلاینت ها رو به هر تعداد که بخوای میتونی کم و زیاد کنی

ROBOMAN
09-08-2015, 21:18
سلام
من پروژم 90 درصد انجام شده فقط این قسمت منو اذیت کرده

mstkmn
10-08-2015, 10:57
سلام
اگه نمیخوای 485 استفاده کنی میتونی یه مولتی پلکسر بذاری.

ROBOMAN
10-08-2015, 11:40
سلام

فقط میتونم چند خط کد بزارم هیچ راه دیگه ای ندارم

mstkmn
10-08-2015, 18:32
شما باید برای هر کدوم از کلاینت ها یه آدرس در نظر بگیری و توسط مستر یه درخواست به کلاینت مورد نظر بفرستی و منتظر جواب اون بمونی. بعد هر کدوم از کلاینت ها که درخواست مربوط به اون بود باید جواب رو بفرسته. اینجوری دیگه تداخلی تو ارسال داده ها پیش نمیاد.
ولی ممکنه از نظر سخت افزاری به مشکل بخوری چون باید Tx همه کلاینت ها رو به هم وصل کرده باشی.

ehsanbagheri
10-08-2015, 19:24
شما چطور هشتا دیوایس رو با usart وصل کردی به میکرو مگه هشتا رابط سریال داره؟

ROBOMAN
10-08-2015, 21:12
سلام
من هنوز این کارو نکردم فعلا یه فرستنده دارم و یه گیرنده دارم روش کار میکنم اما تو این قسمت هنوز ج دلخواه نگرفتم

ehsanbagheri
11-08-2015, 12:39
برایه این کار ساده ترین راه و مطمین ترین راه همون rs485 هست و با rs232 فقط میشه دوتا میکرو رو به هم متصل کرد وبرایه ارتباط یا فاصله 15 متر بیشتر ممکنه جواب نده و این فاصله رو هم در شرایط بدون نویز میتونه جواب بده