TinyOS Programming
Received packet sequence number 6 Sending packet 4 Received packet sequence number 7 Received packet sequence number 8 Sending packet 5 Received packet sequence number 9 6.2 ´®¿ÚÖúÊÖ£ºPCÉÏÏÔʾ´Ó´®¿Ú¶ÁÈ¡µÄÊý¾Ý
ÎÒÃÇ¿ÉÒÔÖ±½ÓÓÃTinyOS×Ô´øµÄһЩ¹¤¾ß²é¿´´®¿ÚÊÕµ½µÄÊý¾Ý£¬Ò²¿ÉÒÔÏÂÔØÒ»Ð©µÚÈý·½´®¿ÚÈí¼þ¶ÁдÈí¼þ£¬ÉõÖÁ×Ô¼º±àд¡£
1£©ÓÃTinyOS×Ô´øµÄ¹¤¾ß£¬Ê×ÏÈÒªÖªµÀÄãµÄTelosb½ÚµãËùÕ¼ÓõĶ˿ڣ¬ÒªÖªµÀËùÕ¼ÓõĶ˿ڣ¬´ò¿ªCygwin£¬ÊäÈëmotelistÃüÁî¼´¿É£¬ÀýÈ磺COM17¡£È»ºó£¬ÊäÈ룺java net.tinyos.sf.SerialForwarder ¨Ccomm serial@COM17:57600£¬Èçͼ6.1Ëùʾ£¬×¢ÒâÕâ¸öCOM17£¬¼´¿ÉÆô¶¯TinyOS×Ô´øµÄ´®¿ÚÊý¾Ý²é¿´¹¤¾ßÖ®Ò»¡£ÆäÖÐ7D֮ǰ£¨°üÀ¨7D£©ÊÇһЩÐÒé»òÆäËüÊý¾Ý£¬ÕæÕý·¢Ë͵ÄÊý¾ÝÖ»ÓÐ7DºóÃæµÄÊý¾Ý¶øÒÑ£¡
ͼ6.1 ʹÓÃTinyOS×Ô´ø´®¿Ú¹¤¾ß
2£©ÓõÚÈý·½Èí¼þ£¬ÔÚ´ËÎÒÃÇʹÓÃÒ»¸ö½Ð×ö¡°´®¿ÚÖúÊÖ¡±£¨´ò¿ªºó±êÌâÀ¸Îª¡°´®¿ÚÖúÊÖ¡±£©µÄ´®¿Ú¶Áд¹¤¾ß£¬¸Ã¹¤¾ß¿ÉÒÔÔÚwindowsƽ̨ÔËÐУ¬ÏÂÔØµØÖ·ÔÚ¸½Â¼Ò»ÓÐ˵Ã÷¡£´®¿ÚÖúÊÖʹÓÃÒ²ºÜ¼òµ¥£¬Ê×ÏȽøÐС°´®¿ÚÅäÖá±£¬µ¥»÷¡°´®¿ÚÅäÖá±°´Å¥£¬µ¯³öÒ»¸ö¶Ô»°¿ò£¬Èçͼ6.2Ëùʾ£¬Ñ¡ÔñÏàÓ¦µÄ¶Ë¿Ú (port) ºÍ²¨ÌØÂÊ (Baud rate)£¬µ¥»÷¡°OK¡±¼´¿É¡£×¢Ò⣺²¨ÌØÂÊΪ57600£¡
ͼ6.2 ÅäÖô®¿Ú
Page 38 of 94
TinyOS Programming
È»ºóÑ¡Ôñ16½øÖÆÏÔʾ£¬¼´¡°HEXÏÔʾ¡±¡£¾Í¿ÉÒÔÒÔ16½øÖƵÄÐÎʽ²é¿´´Ó´®¿Ú½ÓÊÕµ½µÄÊý¾ÝÁË¡£Èçͼ6.3Ëùʾ£º
ͼ6.3 µÚÈý·½´®¿Ú¹¤¾ß½ÓÊÕÊý¾Ý
ÔÚµÚÈý·½´®¿Ú¶ÁдÈí¼þ¡°½ÓÊÕÇø¡±¿ÉÒÔ¿´µ½£¬½ÓÊÕTelosb½Úµã·¢Ë͹ýÀ´µÄÒ»¸öÊý¾Ý°ü£¬Êý¾ÝÁ¿ËƺõÒª±ÈTinyOS×Ô´øµÄ´®¿Ú¶Áд¹¤¾ßµÄÊý¾ÝÁ¿¶àºÜ¶à¡£Æäʵ£¬TinyOS×Ô´øµÄ¹¤¾ß¸úµÚÈý·½Èí¼þ¶ÁÈ¡µ½µÄÊý¾ÝÊÇÒ»ÑùµÄ£¡¶¼ÊǵÚÈý·½Èí¼þÏÔʾµÄÄÇЩÊý¾Ý£¬Ö»²»¹ýTinyOS×Ô´øµÄ¹¤¾ßÊÇÊìϤTinyOS´®¿ÚÊý¾ÝµÄÈËÔ±±àдµÄ£¬È¥µôÁËһЩÐÒéÊý¾Ý¶øÒÑ£¬ÀýÈç£ºÇ°ÃæµÄ7E 42¼°ºóÃæµÄ93 01 7EµÈÊý¾Ý¡£ÕæÕýµÄÊý¾ÝÊÇ5DºóÃæµÄijЩÊý¾Ý£¨±¸×¢£º×îºóÃæÈý¸öÊý¾Ý²»ÊÇ£©£¬¼´ºìÉ«·½¿òȦסµÄÊý¾Ý£¬¾ßÌåµÄÊý¾ÝÁ¿¸úÄã·¢Ë͵ÄÊý¾ÝÁ¿Ò»Ö¡£
6.3 Telosb´Ó´®¿Ú¶ÁÈ¡Êý¾Ý
Ò»°ãÀ´Ëµ£¬Ö»ÓиúPCÁ¬½ÓµÄTelosb½Úµã²ÅÐèÒª¶ÁÈ¡´®¿ÚµÄÊý¾Ý¡£ÕâЩÊý¾Ý²»»áÌ«¶à£¬Ò²²»»áÌ«¸´ÔÓ£¬ËùÒÔ±ÊÕßʹÓÃTelosb¶ÁÈ¡´®¿ÚÊý¾Ýʱ£¬Ê¹ÓÃHPLUART½Ó¿Ú£¬»òÕßʹÓñÊÕß×Ô¼º±àдµÄ´®¿Ú×é¼þ¶ÁÈ¡´®¿ÚÊý¾Ý¡£HPLUART½Ó¿Úÿ´Î½ÓÊÕ»ò·¢ËÍÒ»¸ö×Ö½ÚµÄÊý¾ÝÖÁ´®¿Ú¡£
ÏÖÔÚÀ´¿´¿´HPLUART½Ó¿Ú£¬Æä¶¨ÒåÈçÏ£¬´ó¼Ò¿ÉÒÔÔÚtinyos-2.x\\tos\\interfaces Ŀ¼ÏÂÕÒµ½¸Ã½Ó¿ÚµÄ¶¨ÒåÎļþ£º
interface HPLUART { /*³õʼ»¯´®¿Ú*/ async command result_t init(); /*Í£Ö¹´®¿Ú*/ async command result_t stop(); /*·¢ËÍÒ»¸ö8bitµÄÊý¾Ý*/ async command result_t put(uint8_t data); /*Èô´®¿Ú½ÓÊÕµ½Ò»¸ö×Ö½ÚµÄÊý¾ÝÔò´¥·¢´Ëʼþ*/ async event result_t get(uint8_t data); /*·¢ËÍÒ»¸ö×Ö½ÚÊý¾ÝÍê±Ï´¥·¢´Ëʼþ*/ async event result_t putDone(); } ´ÓÉÏÃæ´úÂë´ó¼Ò¿ÉÒÔ¿´µ½£¬¸Ã½Ó¿ÚÏ൱¼òµ¥£¬Ê¹Óúܷ½±ã£¬ÓÈÆäÊÇÊý¾ÝÁ¿²»¶àʱÊÇ×îºÃµÄÑ¡Ôñ£¡¸Ã½Ó¿ÚÓÉHPLUARTC×é¼þÌṩ£¬´ó¼Ò¿ÉÒÔÔÚ´ËĿ¼ÕÒµ½´ËÎļþ£ºtinyos-2.x\\tos\\platform\\telos¡£
Page 39 of 94
TinyOS Programming
ÏÂÃæÈÃÎÒÃÇ¿´Ò»¸öʹÓÃHPLUART½Ó¿Ú¶ÁÈ¡´®¿ÚÊý¾ÝµÄ·Ç³£¼òµ¥µÄʾ·¶³ÌÐò£ºtestHPLUART¡£¸Ã³ÌÐòÔÚtinyos-2.xĿ¼ÏÂÊÇÕÒ²»µ½µÄ£¬ÊDZÊÕß×Ô¼º±àдµÄ¼òµ¥³ÌÐò¡£
Ê×ÏÈ£¬¿´¿´testHPLUARTMÄ£¿éµÄ´úÂ룺 module testHPLUARTM { uses { interface HPLUART; interface Leds; } provides interface StdControl; }
implementation { command result_t StdControl.init() { call Leds.init(); call Leds.redOff(); call Leds.greenOff(); call Leds.yellowOff(); return SUCCESS; } command result_t StdControl.start() { call HPLUART.init(); return SUCCESS; } command result_t StdControl.stop() { call Leds.set(0); call HPLUART.stop(); return SUCCESS; } async event result_t HPLUART.putDone() { return SUCCESS; }
async event result_t HPLUART.get(uint8_t data) { uint8_t tmp; atomic tmp = data; if(1 == tmp) { call Leds.redToggle(); }
Page 40 of 94
TinyOS Programming
} } else if(2 == tmp) { call Leds.greenToggle(); } else if(3 == tmp) { call Leds.yellowToggle(); } return SUCCESS; Õâ¸öÄ£¿éʹÓÃHPLUART½Ó¿ÚÖеÄgetʼþ»ñÈ¡´®¿ÚµÄÊý¾Ý£¬´ó¼ÒÂÔΪעÒâһϼӴֵIJ¿·Ö¾ÍÐÐÁË£¬²»¹ýÖµµÃÖ¸³öµÄÊÇ£ºÊ¹ÓÃHPLUART½Ó¿Ú½Ó·¢Êý¾Ý֮ǰҪ³õʼ»¯´®¿Ú¡£
½ÓÏÂÀ´¿´¿´testHPLUARTÅä¼þµÄ´úÂ룺 configuration testHPLUART { } implementation { components Main ,LedsC ,HPLUARTC ,testHPLUARTM ; Main.StdControl -> testHPLUARTM; testHPLUARTM.Leds -> LedsC; testHPLUARTM.HPLUART ->HPLUARTC; } ÉÏÊö´úÂëÖУ¬ÐèҪעÒâµÄͬÑùÊÇ×ÖÌå¼Ó´ÖµÄÓï¾ä¡£
6.4 OscilloscopeÓ¦ÓóÌÐò¡ª¡ªÊý¾Ý¸ÐÖª
½ÚµãÉϵijÌÐòÔÚÎļþ¼Ð£ºtinyos-2.x\\apps\\Oscilloscope¡£´Ë³ÌÐò´ÓÄÚ²¿Î¶ȴ«¸ÐÆ÷ÿ¶Á10¸öÊý¾Ý¾Í°Ñ²É¼¯µ½µÄÊý¾Ý¹ã²¥³öÈ¥¡£¼´OscilloscopeÖÜÆÚÐԵĽ«´«¸ÐÆ÷¶ÁÈ¡µÄÊý¾Ý·¢Ë͵½»ùÕ¾½Úµã¡£
³ÌÐòʹÓõÄÊÇĬÈϵĴ«¸ÐÄ£¿é£¬ÎÒÃÇ¿ÉÒÔÓÃÈçÏÂÓï¾ä¶ÔÆä½øÐбàÒ룺 SENSORBOARD=
Ê×ÏÈ£¬ÈÃÎÒÃÇÂÔΪä¯ÀÀÒ»ÏÂOscolloscopeCÄ£¿éµÄ´úÂ룺
#include \#include \ module OscilloscopeC @safe()
Page 41 of 94
Ïà¹ØÍÆ¼ö£º