التواصل التسلسلي بين الكمبيوتر الشخصي واردوينو عبر RS232 باستخدام C ++

StackOverflow https://stackoverflow.com//questions/25020887

سؤال

أحاول التواصل مع بلدي arduino duemilanove عبر سلك RS232. أريد ببساطة أن أكون قادرا على إرسال البايت (أو char) إلى Arduino الخاص بي من تطبيق سطح المكتب. يعمل Arduino في USB Com5 على جهاز الكمبيوتر الخاص بي. لدي موصول RS232 في COM1، ثم لدي دبابيس 2 3 و 5 في الطرف الآخر من RS232 المتصل ب Arduino Pins TX و RX و GND، على التوالي.

وجدت فئة بلسم تسلسلي ل C ++ على الرابط التالي:

p> http://playground.arduino.cc/interfacing/cppwindows

لقد أضفت ملفات .h و .cpp من المثال أعلاه مثل التسلسل. h serial.cpp (أعتقد أن المثال يستخدم serialclass.h و serialclass.cpp، أنا فقط يغير الأسماء).


على بلدي Arduino، لدي التعليمات البرمجية التالية:

giveacodicetagpre.


وبرنامج C ++ الخاص بي هو ما يلي:

giveacodicetagpre.


عندما أستخدم عارض المنفذ التسلسلي Arduino لمعرفة ما يجلب المطبوع، أحصل على قيم غريبة للغاية لا تتطابق مع ما أرسله (بقدر ما أستطيع أن أقول).

عندما أرسل "Hello Arduino!"، يطبع Arduino ما يلي:

giveacodicetagpre.

هذا لا يبدو أن HEX الصحيح ل "Hello Arduino!"، لكن ليس لدي أي فكرة عن سبب عدم صواب. هل لدى أي شخص أي دليل ما أفعله خطأ؟

هل كانت مفيدة؟

المحلول

arduino مستعملة TTL Logic للاتصال التسلسلي.تتوقع القيم في 0 و 5V.استخدم RS232 جهد مختلف إلى + v.قد تحتاج إلى محول.

نصائح أخرى

ehm ... لا! سحب صعودا وهبوطا ليس لهذه السبب ..

  • ttl= Low: 0V، High: 5V

  • rs232= منخفض: +3: + 15V، مرتفع: -3: -15V

نتيجة لذلك .. تحتاج إلى محول الجهد (والعاكس)، مثل ديفيد سكوجان أشار بشكل صحيح.

أمثلة:

  1. باستخدام مكونات منفصلة (يحتوي على ميزة Echo التلقائية، أي على جهاز الكمبيوتر سترى البيانات التي ترسلها): http://project.irone.org/simple-rs232-to-ttl-level-converter.html أو
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top