物联网试验报告.docx

上传人:b****8 文档编号:27794962 上传时间:2023-07-05 格式:DOCX 页数:11 大小:648.97KB
下载 相关 举报
物联网试验报告.docx_第1页
第1页 / 共11页
物联网试验报告.docx_第2页
第2页 / 共11页
物联网试验报告.docx_第3页
第3页 / 共11页
物联网试验报告.docx_第4页
第4页 / 共11页
物联网试验报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

物联网试验报告.docx

《物联网试验报告.docx》由会员分享,可在线阅读,更多相关《物联网试验报告.docx(11页珍藏版)》请在冰豆网上搜索。

物联网试验报告.docx

物联网试验报告

.

物联网与信息系统前沿

实验报告

1120310217

邵孟旋.

.

实验二

1.分析/examples/hello-world/下的程序

原码如下:

宏完成两个功能:

PROCESS函数指该函数是进程的执行体,即进程的thread声明一个函数,

(1)

针所指的函数定义一个进程结构体

(2)

Contiki宏实际上是定义一个指针数组,AUTOSTART_PROCESSES存放.

.

系统运行时需自动启动的进程。

PT_THREAD宏用于声明一个protothread,即进程的执行主体。

PROCESS_BEGIN()

进程的主体函数从这里开始

PROCESS_END()

进程的主体函数从这里结束

2.实验过程及结果

编译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_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\n);

}else{

PRINTF(

ailedtocreateanewRPLDAG\n);

}

创建UDP连接

//向客户端的端口创建新的UDP连接

server_conn=udp_new(NULL,UIP_HTONS(UDP_CLIENT_PORT),

NULL);

if(server_conn==NULL){

PRINTF(NoUDPconnectionavailable,exitingtheprocess!

\n);

PROCESS_EXIT();

}

udp_bind(server_conn,UIP_HTONS(UDP_SERVER_PORT));

PRINTF(Createdaserverconnectionwithremoteaddress);

PRINT6ADDR(&server_conn->ripaddr);

PRINTF(

local/remote

port

%u/%u\n,

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\n);

rpl_repair_root(RPL_DEFAULT_INSTANCE);

}

}

//如果有包,调用这个函数

staticvoid

tcpip_handler(void)

{

char*appdata;

if(uip_newdata()){

appdata=(char*)uip_appdata;

appdata[uip_datalen()]=0;

//printthedataofpacket

PRINTF(DATArecv'%s'from,appdata);

.

.

PRINTF(%d,

UIP_IP_BUF->srcipaddr.u8[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!

\n);

PROCESS_EXIT();

}

udp_bind(client_conn,UIP_HTONS(UDP_CLIENT_PORT));

PRINTF(Createdaconnectionwiththeserver);

PRINT6ADDR(&client_conn->ripaddr);

PRINTF(local/remoteport%u/%u\n,

UIP_HTONS(client_conn->lport),UIP_HTONS(client_conn->rport));

发包

//根据SEND_INTERVAL设置时间间隔

.

.

etimer_set(&periodic,SEND_INTERVAL);

while

(1){

PROCESS_YIELD();

if(ev==tcpip_event){

tcpip_handler();

}

//每个时间间隔就发一个包

if(etimer_expired(&periodic)){

etimer_reset(&periodic);

ctimer_set(&backoff_timer,SEND_TIME,send_packet,NULL);

staticvoid

send_packet(void*ptr)

{

staticintseq_id;

charbuf[MAX_PAYLOAD_LEN];

seq_id++;

PRINTF(DATAsendto%d'Hello%d'\n,

server_ipaddr.u8[sizeof(server_ipaddr.u8)-1],seq_id);

sprintf(buf,Hello%dfromtheclient,seq_id);

//通过client_conn向UDP服务器发包

uip_udp_packet_sendto(client_conn,buf,strlen(buf),

&server_ipaddr,

.

.

UIP_HTONS(UDP_SERVER_PORT));

}

2.实验过程及结果:

编译/examples/ipv6/rpl-udp目录下的udp-server.c和udp-client.c

运行Cooja仿真环境

.

.

3.问题:

1.问:

节点获取ip地址了吗?

是什么?

获取了IP地址,为fe80:

0000:

:

0212:

7408:

0008:

0808;

2.节点之间有通讯吗?

有通讯,因为有DATAsend

3.udp-server收到其他节点发给它的packet了吗?

收到了,因为有DATArecv

4.节点执行dutycycle了吗?

节点执行了dutycircle

实验收获及问题

通过本次实验,加深了对物联网系统的理解,激发了我对物联网的兴.

.

趣,给我打开了一扇崭新的大门,让我看到了未来世界的无线可能。

.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1