سؤال

أنا ألعب مع راديو XBEE ، وأنا أستخدم Linux (Ubuntu 9.10) ولا يبدو أن Xbee يرسل قيمًا فارغة من خلال المنفذ التسلسلي عند استخدام الكود الخاص بي. عندما أستخدم برنامج XCTU (محاكي مصطلح الأسهم الذي يأتي مع XBEE على مربع Windows منفصل) ، أرى هذا الإخراج من خلال المنفذ التسلسلي عندما ينضم XBee الجديد إلى الشبكة:

7E 00 20 95 00 13 A2 00 40 3B

الخ ... مثالية. ولكن ، باستخدام الكود الخاص بي ، عندما ينضم Xbee الجديد إلى الشبكة ، أرى هذا:

7E 20 95 13 A2 40 3B

إليكم كيف أفتح المنفذ التسلسلي

struct termios options;
int port;

port = open("/dev/ttyUSB0", O_RDWR | O_NONBLOCK);
tcgetattr(port, &options);
bzero(&options, sizeof(options));

options.c_cflag = B9600 | ~CRTSCTS | CS8 | CLOCAL | CREAD;

tcsetattr(port, TCSANOW, &options);

لدي نظرياتي حول ما يفعله هذا الرمز ، لكن نظريتي خاطئة بشكل واضح. أحاول فتح المنفذ مع 9600 ، 8n1 ، لا يوجد التحكم في التدفق. يمكنك أن ترى أنني أستخدم أيضًا برنامج تشغيل Serial-> USB ، لكن بما أنني يبدو أنني أحصل على بيانات ، فأنا متأكد من أن الجزء يعمل.

تخميني عندما أقوم بخيارات Bzero ، أقوم بعمل 0x00 عنصر تحكم؟ لست متأكدا. عندما لا أقوم بخيارات Bzero ، لا يمكنني قراءة 5 بايت إلا في وقت واحد وأفقد البيانات. يبدو الأمر وكأنني أواجه التحكم في التدفق أو مشكلة في معدل الباود ، لذلك أنا Bzero () والآن لا أحصل على خالية.

لقد استخدمت أيضًا minicom على نظام Linux الخاص بي واستولت على الإخراج. أحصل على نفس المعلومات ، لا توجد خالية (هذا يفسد أحجام الحزم لأولئك الذين لا يعرفون البروتوكول). هل كان من الممكن أن يضع رمزتي المنفذ التسلسلي في حالة مفادها أن Minicom لا يتغير؟ أنا تائه.

شكرا للمساعدة!

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

المحلول

تهيئة c_cflags يبدو خطأ ، باستخدام النفي bitwise الذي قمت بتعيينه بشكل أساسي الكل البتات بجانب CRTSCTS:

options.c_cflag = ... | ~CRTSCTS | ...;

يجب عليك فقط الخروج CRTSCTS إذا لم يتم تعيين هذا العلم.

نصائح أخرى

وقد أصدر ديجي xbee_ansic_library, ، مكتبة مفتوحة المصدر (MPL 2.0) من رمز ANSI C للتواصل مع وحدات XBEE في وضع API. وهو يدعم Posix (Linux ، BSD ، Mac OS X ، Cygwin) ، Windows (Mingw/MSYS) ، DOS (OpenWatcom) وبعض المنصات المضمنة.

قد يكون من المهم إذا كنت لا تزال تكتب رمز C في Ubuntu.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top