מערכת אוטומצית בניין eHouse – אנדרואיד תוכנה כדי לקבל המעמד של בקרים באמצעות UDP

אתרנט בית אוטומציה eHouse מאפשר לך לשלוח באופן אוטומטי מעמד broadcastu UDP (User Datagram Protocol) , שתוכל לקבל את כל ההתקנים ברשת המקומית שלך או WiFi ו-IP עונה לתנאי – מצא במסכה המקומית 255 . 255 . 255 . 0 , המשודר מהמצב את כתובות ה-IP של הבקרים 192 . 168 . 0 . x . UDP שידור מאפשר לך להשבית את מצב ההורדה של לקוח TCP / IP , אשר דורש חיבור לבקר . UDP שידור הוא פרוטוקול חסר חיבור , לנתוני ריבוי וללא תלות במספר המכשירים שקבלו אינו נטען יותר CPU או קישורים ברשת .
פשוט פונקצית קבלת שידור UDP עם טלפונים חכמים , לוחות אנדרואיד ו טבליות מוצגים להלן .
לכן לולאה אינסופית על בסיס פונקציה זו , אתה צריך ליצור חוטים (חוט) עובדים ברקע , נותן לו את עבודת העדיפות הנמוכה ביותר .
אחרת , ביצועו של תפקיד זה לחסום את הביצוע של פעילויות אחרות של התכנית .
קוד המקור לקבלת פלטפורמת אנדרואיד שידור UDP:
החלל UDP הציבור (int port) / יציאה / פרמטר להרים את ברירת המחדל לשדר 6789 – מעמד בבקר בינארי
{
בתים [] = broadcastadr בתים חדשים [4] ;
בתים [] = localadr בתים חדשים [4] ;
getSystemService WifiManager wifi = (WifiManager) (Context . WIFI_SERVICE) ; / / מנהל Wifi
DhcpInfo DHCP = wifi . getDhcpInfo () ; / / קבל מידע מwifi dhcp
אם (DHCP == null) / / מקבל ערך ברירת מחדל מנוטרל אם DHCP רשת של eHouse
{/ / לא DHCP או שגיאה למכשיר
broadcastadr [0] = (בית) 192 ;
broadcastadr [1] = (בית) 168 ;
broadcastadr [2] = (בית) 0 ;
broadcastadr [3] = (בית) 255 ;
}
אחר / / DHCP
{
שידור = int (DHCP . IPAddress & ; ; DHCP . מסכת רשת) | ~ dhcp . מסכת רשת ; / / לUDP שידור – אם אתה רוצה לשדר את הנתונים בפונקציה
בקר מקבל מעמד רק
עבור (int k = 0 ; k < ; 4 ; K + +) broadcastadr [יא] = (בית) ((שודר> ; > ; k * 8) & ; 0xFF) ;
מקומי int = (DHCP . IPADDRESS) ; / כתובת / מקומית ip dhcp
עבור (int k = 0 ; k < ; 4 ; K + +) localadr [יא] = (בית) ((מקומי> ; > ; k * 8) & ; 0xFF) ; / / לכתובת ה-IP המקומית
}
לנסות
{
DS = DatagramSocket החדש (נמל) ; / / / האזנה על נתוני ה-UDP מכל IP
בתוך מסכה – UDP שקע כדי ליצור מופע של מספר היציאה המקומית
}
לתפוס (דואר חריגה)
{
/ / Ehousecommunication . אני ( ” INET שגיאה: לקבל את הכתובת ” + E . getMessage ()) ; למבחן
}
לנסות
{
DS . setBroadcast (אמיתי) ; / / אפשר לשלוח הודעת שידור – לשידור
DS . setReuseAddress (אמיתי) ; / / אפשר שקע מרובה להשתמש באותה הכתובה IP
/ / DS . setSoTimeout (400) ; / / קבלת פסק זמן
}
לתפוס (החריגה io)
{/ / התעלם טעויות אבל אנחנו להגן מפני שגיאות ביישום ומערכת
}
* מבחן / / UDP שידור – broadcastu המבחן UDP לשדר מהטלפון או מחשב לוח – תקשורת עתיד עם היישום של
/ * נסה
{
DatagramPacket dd = DatagramPacket החדש ( ” שלום Word מבדיקת UPD אנדרואיד ” . getBytes () , 0 , ” שלום Word מבדיקת UPD אנדרואיד ” . אורך () ,
InetAddress . getByAddress (broadcastadr) , יציאה) ;
DS . לשלוח (dd) ; / / שולח DatagramPacket
}
לתפוס (דואר חריגה)
{
ehousecommunication . אני ( ” שידור שגיאת מנות Datagram: ” + E . getMessage ()) ;
}
* /
MulticastLock מ"ל = wifi . createMulticastLock ( ” מנעול מופעל Multicast ” ) ;
/ / יצירת מופע של הבלוק בשידור ובbroadcastu
מ"ל . לרכוש () ; קבלה / / Multicast מנעול אפשר UDP שידור – זה יכול להיות נכת טלפונים חכמים אנדרואיד מסוימים למטרות חיסכון batery –
תמיכת UDP broadcastu מפעילה את הטלפון אם הוא נעול ונכים בלבד
זמן (! ehousecommunication . לסיים) לולאה / אינסופית / לקבלת UDP
{לולאה / / אינסופי קבלת מעמד UDP
DatagramPacket dp = DatagramPacket החדש (הודעה , הודעה . אורך) ; / / יצירת מאגר מנות Datagram UDP שימוש בנתונים – עושה שימוש במנות UDP
בלם ” הודעה ”
תנסה {
DS . תקבל (DP) ; קבלה / / UDP מנות ממערכת eHouse – מקבל מנות UDP היציאה של UDP שקע
אם (dp . getLength ()> ; 0) / / אם הגודל של חבילות גדולה מאפס – משהו התקבל
{
EhouseTCP . QueryBuff = dp . getData () ; / / הקצאת UDP שידור recepition querybuffer – נטען לתוך eHouse מעמד החיץ
/ / עקור . setLength (0) ; – גודל מנה מוגדר לאפס כדי לא לעבד את אותם נתונים שוב ושוב
EhouseTCP . QueryReceived () ; / / לפענח מערכי נתוני שאילתא ולמלא מכשירים – מפענח את המצב של בקרים ועומסי שולחן מעמד היישום
}
}
לתפוס (החריגה OS)
{/ / התעלם טעויות
/ / Ehousecommunication . אני ( ” asdfasdfsafsa ” + אוס . getMessage ()) ; / / למבחן יחיד
}
}
מ"ל . שחרור () ; / / Multicast UDP נעילה חופשיה לקליטה של ​​יישום eHouse – משחרר את מנעול השידור
DS . לסגור () ; / / סגור את שקע Datagram בסוף – סוגר את השקע בסוף
}
מנעול Multicast ייתכן שיהיה צורך בכמה מכשירי אנדרואיד .
UDP שידור המקומי במקרה של טלפונים ניידים ניתן להפעיל או לא תלוי בהקושחה הטלפון הניידת .
זה גם יכול להיות נכים לצמיתות לחיסכון בסוללה ומטעמי בטיחות או כדי להפחית את העומס על מעבד הרשת בעבודה .
(שים לב לתצורת הליבה: CONFIG_IP_MULTICAST אינו מוגדר) .
בנוסף , בחלק מהדגמים יכולים להיות חסומים על ידי חומת אש מקומית וצריך להפעיל את השידור ביציאה קבלה (ברירת מחדל 6789) .
מחוץ שידור בעת שימוש בחיבורי GPRS אינטרנט , קצה , 3G , 4G יכול להיות נעול או נעול על ידי מפעיל הרשת . לעתים קרובות יותר , אולם , צריך להיות צפוי , שהוא קבוע במטרה לצמצם את השימוש בקישור .
בחלק מהדגמים של טלפונים ניידים , סטטוס יישום תוכנה של הבקרים מקבלים UDP יכול להיות קשה מאוד ואף בלתי אפשרי . עשוי לדרוש שימוש בniebrandowanego הקושחה המיוחדת או טלפון חכם .
בנוסף , יש להקפיד בעת upgradowaniu הקושחה ולבדוק שכל התכונות פועלות כראוי מחוץ לקופסה , אחרת האבחון של השגיאות יהיה קשה מאוד .
בהתבסס על כמה טלפוני HTC ומוצרים אחרים המכילים את גרסת מערכת הפעלת אנדרואיד נמוך מ 2 . 3 . 3 נצפו בלוק כולל UDP קבלת broadcastu .
זו הייתה הגרסה של אנדרואיד (2 . 1 – 2 . 3 לתקופה של 01 . 01 . 2010 – 14 . 06 . 2011)
אם אתה לא יכול לקבל UDP broadcastu להוריד ולהתקין , גרסת ROM אנדרואיד החדש של מינימום 2 . 3 . 3 (14 ביוני , 2011) , שבדק את נכונות שידור UDP עומס העבודה .
גרסת הליבה 2 . 6 . 35 . 10 – htcg3ef43272 – הקרנל @ ו -18 – 2 # 1 .
לא . 3software . 14 . 405 . 1 .
עבור מותגים אחרים של טלפונים עם בעיות דומות , בבקשה להוריד רום אנדרואיד קושחה מהיצרן , גרסה של לפחות 2 . 3 . 3 .
שימו לב גם את המאפיינים המהותיים של UDP מנות .
הם אסינכרוני ודורשים שקראו על מה שעשוי לגרום לשגיאות קריאת נתונים , הפסד שלהם (שפיכה) , במיוחד עם ציוד איטי , קישורים , לשלב עומס גבוה וטלפונים חכמים וטאבלטים כיבוש CPU .
נתוני מצב UDP הוא מצויד בבדיקה כדי לבדוק את תוקפו של נתונים .
מפיק אוטומצית בית eHouse בית אוטומציה eHouse
בקרי eHouse – בית אוטומציה eHouse