עבור לתוכן

הדבקת מחרוזות בארדואינו

Featured Replies

פורסם

שלום

אם אני משתמש ב:

Serial.print()

ואני רוצה לכתוב מחרוזת, ולאחריה עוד מחרוזת,

האם יש דרך לעשות את זה בלי להשתמש פעמיים ב-print()?

כמו שב-++C אפשר לעשות cout, ואז לחבר כמה דברים עם >>

ועוד משהו,

בכל פעם שאני עושה Upload לתוכנית, מסך התקשורת הסריאלי("Serial Monitor") נסגר, וצריך לפתוח אותו מחדש..

יש איזה אפשרות שהוא לא ייסגר בכל Upload?

תודה

card

פורסם

מה מונע ממך להשתמש פעמיים בprint ?

אם אתה מאוד רוצה אתה יכול להמיר את כל המחרוזות שלך למחרוזת אחד גדולה ואז לשלוח אותה לprint, אבל זה סתם זמן עיבוד מיותר ושימוש מיותר בזכרון.

פורסם
  • מחבר

מה מונע ממך להשתמש פעמיים בprint ?

אם אתה מאוד רוצה אתה יכול להמיר את כל המחרוזות שלך למחרוזת אחד גדולה ואז לשלוח אותה לprint, אבל זה סתם זמן עיבוד מיותר ושימוש מיותר בזכרון.

נתתי דוגמא ל-2, אבל לפעמים זה יכוללהיות גם 5..

לדוגמא משהו כזה:

"The Results is: "&Number1&","&Number1&"."

זה לא נורמלי לכתוב שורת קוד בשביל כל חלק שבסטרינג..

לגבי אופרטור,

קראתי עוד בכתבה אחת, שאפשר לעשות +

הכתבה היא זו:

http://wiki.animusoft.com/tutorials/arduino-tutorials/arduino-working-with-strings-tutorials/arduino-concatenation-example/

הם עושים שם למשל:

// adding a constant integer to a string

29 stringThree = stringOne + 123;

30 Serial.println(stringThree); // prints "stringThree = 123"

ניסיתי את זה אצלי, וזה פשוט לא פועל..

למה אצלי האופרטור לא פועל?

פורסם

מסכים עם מייק, תקרא ל-print כמה פעמים, מה זה משנה אם זה 2 או 10?

אם אתה רוצה, תבדוק מה לוקח יותר זמן, לחבר בין הסטרינגים או לקרוא לפונקצית print כמה פעמים.

ה-serial של סביבת הפיתוח בגלל שלכרטיסי הארדואינו (חוץ מהלאונרדו) יש רק ערוץ תקשורת אחד עם המחשב וכשאתה עושה upload הערוץ הזה תפוס לטובת הצריבה, ואתה בטח לא רוצה לראות את כל הג'יבריש מופיע בטרמינל...

פורסם
  • מחבר

תקרא ל-print כמה פעמים, מה זה משנה אם זה 2 או 10?

זה פשוט עניין של סידור הקוד..

אם אתה צריך להדפיס שורה, אבל בקוד שלך היא מופיעה כ-10 שורות, זה מאריך וגורם לזה להראות מסורבל.

אבל ברור, זה עניין של נוחות, פחות השפעה חיצונית על התוצאה.

אבל כיוון שלאף אחד כאן לא הייתה תשובה לזה, אני מבין שב-C של ארדואינו פשוט אין דרך..

אז טוב נקבל את זה כך עם המגבלה הזו.

ה-serial של סביבת הפיתוח בגלל שלכרטיסי הארדואינו (חוץ מהלאונרדו) יש רק ערוץ תקשורת אחד עם המחשב וכשאתה עושה upload הערוץ הזה תפוס לטובת הצריבה, ואתה בטח לא רוצה לראות את כל הג'יבריש מופיע בטרמינל...

האמת שהם היו יכולים לעשות לחלון disable, ולא להציג את הנתונים שעוברים בזמן העתקת התוכנית לבקר..

ואז לשחרר את ה-disable מייד בסיום.

זה היה הרבה יותר נוח, מאשר שהוא יסגר והמשתמש יצטרך לפתוח אותו כל פעם מחדש..

זה במיוחד היה שימושי, בגלל שתמיד כשפותחים את חלון ה-Serial Monitor במחשב,

זה גורם לבקר לעשות restart..

פורסם

אם ה10 שורות במקום שורה אחת מפריע לך, תעביר את הקוד לפונקציה.

פורסם

אתה יכול להמיר כל char array לString ולהשתמש באופרטורים הידועים (+, במקרה שלנו)


Serial.print(String(sometext) + String(Sosomemore text))

פורסם
  • מחבר

הי runny

תודה רבה

זה אכן עושה את העבודה, אבל זה עדיין יותר מסורבל מכתיבה של תוכנית שרצה על מחשב

(שם אפשר לכתוב פשוט +, או &..)

בקיצור, להבין שזה בקר, ולכן מוגבלים פה יותר..

טוב..

פורסם

הי runny

תודה רבה

זה אכן עושה את העבודה, אבל זה עדיין יותר מסורבל מכתיבה של תוכנית שרצה על מחשב

(שם אפשר לכתוב פשוט +, או &..)

בקיצור, להבין שזה בקר, ולכן מוגבלים פה יותר..

טוב..

רק לשם הבהרה, אין קשר לבקר.

זה הקומפיילר בלבד.

פורסם
  • מחבר

הממ

יכול להיות שיש קומפיילרים אחרים למעבד הזה? (או בכלליות למעבדים ATmega של Atmel?)

פורסם

לAVR GCC (לא יודע אם הארדואינו משתמש בקומפיילר הזה, ניראה לי שכן) יש יכולת לעשות printf כמו שאתה רגיל, יש בסיפריה הרבה גרסאות של הפונקציה כדי למנוע ביזבוז משאבים מיותר, כדאי לקרוא פה:

http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html

פורסם
  • מחבר

מעניין מאד..

אתה יודע אולי האם זה יתמוך בקוד שנכתב עבור הקומפיילר הרגיל?

כך שיהיה אפשר לקחת נגיד ספרייה קיימת כלשהי ולא להצטרך לגעת בה כדי שהיא תתקמפל גם פה?

פורסם

הבחור צודק.

רק צריך להפנות את הSTD output לSerial.

אבדוק לך את הנושא מחר.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים