מי שמתקשה לקרוא את כל הפוסט, אציין בקצרה כי אני צריך לחבר בקר שמדבר סריאלית לאנדרואיד. ומחפש חומרה ו/או תוכנה שיעזרו לי.
לעת עתה אני משתמש במתאם Rs232 to USB שמבוסס על צ'יפ של חברת wch.cn שנקרא CH340. זה הצ'יפ שקיים גם בארדואינו הסיני.
יש להם איזושהי אפליקציית דמה שמציגה מונה של סך הבייטים שהתקבלו. כמובן אפשר להגדיר באפליקציה את ה baud rate ושאר הדברים.
בנוסף, בניתי אפליקציה פשוטה באנדרואיד שמציגה את הנתונים המתקבלים.
עד כאן פשוט מאוד.
למעשה, כשאני מחבר את הבקר הנ"ל למחשב עם המתאם הנ"ל, אני מצליח לקרוא את התקשורת בצורה מעולה. וגם לכתוב (ברגע שאני כותב בייט עם ערך מסויים, המערכת שמחוברת לבקר מגיבה בצורה ברורה).
אבל כשאני מחבר את הבקר לאנדרואיד אני מקבל תוצאות מוזרות מאוד:
אני יודע שעל פעולה מסויימת שמתבצעת במערכת, אני אמור לקבל פידבק מסויים מהבקר, באורך 7 בייטים. (הפידבק הוא מחרוזת "08 01" + תו ירידת שורה).
וזו התוצאה שמקבלת במחשב.
אבל באנדרואיד אני מקבל תוצאה באורך 10 בייטים. שלא יכולה להזכיר את המחרוזת הנ"ל. (כי הייתי מצפה לקבל שני בייטים עוקבים אחד אחר השני, בשביל ה- "0" וה- "1").
וכן בפעולה אחרת במערכת שאמורה להחזיר לי מחרוזת באורך 10 בייטים, אני מקבל באנדרואיד 15 בייטים. (כמדומני).
הכי מוזר זה שחשבתי שזו בעיה של baude rate או הגדרות אחרות. ניסיתי לשנות את ההגדרות, אבל כל אפשרות הביאה את אותם תוצאות בדיוק! מה שנשמע מופרך ולא הגיוני בעליל.
כמובן שעשיתי השוואות בשביל לאמת את כל הבעיות. פשוט לקחתי ארדואינו, פתחתי איתו פורט סריאל, וכל 3 שניות שלחתי מחרוזות ובייטים פשוטים. כמו 0,1 "123", "345".
חיברתי לאנרואיד במקום הבקר, את הארדואינו. והתוצאות היו טובות. כלומר קיבלתי את הנתונים שציפיתי לקבל. וכמובן שכששניתי את ה baud rate והגדרות אחרות, קיבלתי נתונים שגויים כמו שאני אמור לקבל.
אגב, אולי זה קשור. המתח שמוציא הבקר הוא 8V. אולי זה קשור? אבל לא מדדתי אחרי המתאם (כלומר את יציאת ה USB).
אשמח לפתרונות. זה פרוייקט דחוף. תודה ושבוע טוב.