资源描述:
《物联网实验报告 邵孟旋》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、物联网与信息系统前沿实验报告1120310217邵孟旋实验二1.分析/examples/hello-world/下的程序原码如下:PROCESS宏完成两个功能:(1)声明一个函数,该函数是进程的执行体,即进程的thread函数指针所指的函数(2)定义一个进程结构体 AUTOSTART_PROCESSES宏实际上是定义一个指针数组,存放Contiki系统运行时需自动启动的进程。PT_THREAD宏用于声明一个protothread,即进程的执行主体。PROCESS_BEGIN()进程的主体函数从这里开始
2、PROCESS_END()进程的主体函数从这里结束1.实验过程及结果编译hello_world仿真节点的运行实验三1.程序分析:UDPsever初始化RPLDAG//检查ADDR_MANUAL是否已经成功设置uip_ds6_addr_add(&ipaddr,0,ADDR_MANUAL);root_if=uip_ds6_addr_lookup(&ipaddr);if(root_if!=NULL){rpl_dag_t*dag;//将服务器的IP地址作为初始DAG的根dag=rpl_set_root(RPL
3、_DEFAULT_INSTANCE,(uip_ip6addr_t*)&ipaddr);uip_ip6addr(&ipaddr,0xaaaa,0,0,0,0,0,0,0);rpl_set_prefix(dag,&ipaddr,64);PRINTF("createdanewRPLdag");}else{PRINTF("failedtocreateanewRPLDAG");}创建UDP连接//向客户端的端口创建新的UDP连接server_conn=udp_new(NULL,UIP_HTONS(UDP
4、_CLIENT_PORT),NULL);if(server_conn==NULL){PRINTF("NoUDPconnectionavailable,exitingtheprocess!");PROCESS_EXIT();}udp_bind(server_conn,UIP_HTONS(UDP_SERVER_PORT));PRINTF("Createdaserverconnectionwithremoteaddress");PRINT6ADDR(&server_conn->ripaddr);PRIN
5、TF("local/remoteport%u/%u",UIP_HTONS(server_conn->lport),UIP_HTONS(server_conn->rport));包的接受和处理while(1){PROCESS_YIELD();//如果有包if(ev==tcpip_event){tcpip_handler();}elseif(ev==sensors_event&&data==&button_sensor){PRINTF("Initiaingglobalrepair");rpl_re
6、pair_root(RPL_DEFAULT_INSTANCE);}}//如果有包,调用这个函数staticvoidtcpip_handler(void){char*appdata;if(uip_newdata()){appdata=(char*)uip_appdata;appdata[uip_datalen()]=0;//printthedataofpacketPRINTF("DATArecv'%s'from",appdata);PRINTF("%d",UIP_IP_BUF->srcipaddr.u8
7、[sizeof(UIP_IP_BUF->srcipaddr.u8)-1]);PRINTF("");}UDPClient:建立UDP连接/*远程主机的新连接*/client_conn=udp_new(NULL,UIP_HTONS(UDP_SERVER_PORT),NULL);if(client_conn==NULL){PRINTF("NoUDPconnectionavailable,exitingtheprocess!");PROCESS_EXIT();}udp_bind(client_conn
8、,UIP_HTONS(UDP_CLIENT_PORT));PRINTF("Createdaconnectionwiththeserver");PRINT6ADDR(&client_conn->ripaddr);PRINTF("local/remoteport%u/%u",UIP_HTONS(client_conn->lport),UIP_HTONS(client_conn->rport));发包//根据SEND_INTERVAL设置时间间隔etime