פורסם 2012 בדצמבר 912 שנים שלוםאיפה נמצא ה-Source של Class Serial?הקלאס שאנחנו משתמשים בו כדי לעשות למשל Serial.println("hi");תודהcard
פורסם 2012 בדצמבר 912 שנים תנסה לחפש פה: https://github.com/arduino/Arduinoלא יודע אם זה אותו הדבר ואפשר לתת למחלקה שם נוסף אבל מצאתי את הקובץ הבא: https://github.com/arduino/Arduino/blob/master/hardware/arduino/cores/arduino/HardwareSerial.cpp
פורסם 2012 בדצמבר 912 שנים מחבר תודה mikeשאלתי לגבי הקלאס, בגלל שיש איתו תופעה מעניינת.לקלאס Serial, יש event שנקרא serialEvent,וכדי להשתמש באיבנט הזה, כל מה שצריך הוא לכתוב פונקציה בתוכנית שלך, שנקראת ()serialEvent.מה שמוזר פה, זה שלא צריך "לרשום" את הפונקציה הזו כמאזינה של האיבנט,ובנוסף, מכיוון ההפוך, אם לא כוללים מימוש של הפונקציה הזו בקוד שלנו, אז אין שום התרעה ש"שכחת לממש פונקציה".לכן זה מוזר לי.איך שזה לא עובד, זה מאד שימושי,כי אז אפשר כך לבנות קלאסים לרכיבים/מודולים,ולאפשר לקלאס שבנינו להקפיץ איבנט,והמשתמש באיבנט, צריך רק לכתוב פונקציה עם שם מתאים, בקוד שלו.אני אנסה עכשיו להבין מהקוד שלהם איך הסיפור הזה מומש..
פורסם 2012 בדצמבר 912 שנים אולי בסגנון של ה-Virtual function של C++?אתה לא צריך להרשם, אתה פשוט דורס את המימוש הריק.אבל אני מסכים שרישום נשמע יותר הגיוני למקרה הזה.
פורסם 2012 בדצמבר 1012 שנים מחבר אולי בסגנון של ה-Virtual function של C++?אבל פונקציה וירטואלית זה בתוך קלאס.לעומת זאת כשאתה כותב בתוכנית ארדואינו את החלק הראשי, הוא לא קלאס..ממעבר על הקוד השתמשו שם במשהו שנקרא attribute(weak).זה כנראה זה..
פורסם 2012 בדצמבר 1012 שנים אני לא ממש יודע, אבל מי אמר שהחלק הראשי הוא לא קלאס?אין לך גישה ל-main, אתה מממש רק שתי פונקציות: setup ו-loop, שגם הן יכולות להיות סוג של פונקציות וירטואליות של הקלאס הראשי.
פורסם 2012 בדצמבר 1312 שנים אין "קלאס ראשי".תעיין בקוד שנמצא פה: https://github.com/arduino/Arduino/blob/master/hardware/arduino/cores/arduino/HardwareSerial.cppשים לב ש Serial הוא מחלקה דינמית. באותו הקובץ יש מימוש ריק של serial event שאתה בעצם דורס בקוד שלך. שים לב גם ל define שמגדיר שהפונקציה קיימת. לאחר מכן המחלקה הסטטית HardwareSerial קוראת ל serialEvent (אם ה define קיים, ובדרך כלל הוא כן, רק במקרים קיצוניים הם לא מממשים אותו בעצמם).Sent from my Nexus 7 using Tapatalk2
פורסם 2012 בדצמבר 1412 שנים מחבר באותו הקובץ יש מימוש ריק של serial event שאתה בעצם דורס בקוד שלך.אבל איך אני דורס אם לא כתבתי "override" כשאני מממש את הפונקציה?הרי ב-++C, כשאתה דורס פונקציה, אתה צריך לכתוב "override"..האם יכול להיות שזה קשור לכך שהפונקציה serialEvent() מוגדרת שם עם אטריביוט כזה?: void serialEvent() __attribute__((weak));שים לב ש Serial הוא מחלקה דינמית.אתה יכול להזכיר מה זה class דינמי?
פורסם 2012 בדצמבר 1412 שנים מדובר בסמל של הקומפיילר (Weak) - זה אומר שאם המתודה לא קיימת, הערך יהיה NULL.http://en.m.wikipedia.org/wiki/Weak_symbol#section_1בקשר למחלקה עצמה, התכוונתי לסטטי ולא לדינמי (גוגל..).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.