Zigbee基础实验(6)—简单通信编程

时间:2019-05-15 05:12:33下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Zigbee基础实验(6)—简单通信编程》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Zigbee基础实验(6)—简单通信编程》。

第一篇:Zigbee基础实验(6)—简单通信编程

Zigbee基础实验(6)—简单通信编程

2011-07-25 20:06:19|分类: |字号 订阅

实验中两节点分别充当开关和电灯,通过在开关节点上的操作来控制电灯节点。

源代码: #include #include #include #include #include #include #include “hal_mcu.h” #include “hal_button.h” #include “hal_rf.h” #include “util_lcd.h”

#include “basic_rf.h”

#define RF_CHANNEL25// 信道选择。

// 定义各个参数的值

#define PAN_ID0x2007//网络ID

#define SWITCH_ADDR0x2520//开关节点的地址

#define LIGHT_ADDR0xBEEF//电灯节点的地址

#define APP_PAYLOAD_LENGTH1//负载字节的长度,信息的长度。#define LIGHT_TOGGLE_CMD0//被传送的开关命令。

//节点状态。0为空闲

#define IDLE0

#define SEND_CMD1

// 定义该节点所承担的任务(开关或电灯)

#define NONE0

#define SWITCH1

#define LIGHT2

#define APP_MODES2

static uint8 pTxData[APP_PAYLOAD_LENGTH];//发送数组

static uint8 pRxData[APP_PAYLOAD_LENGTH];//接收数组

static basicRfCfg_t basicRfConfig;

// 模式选择菜单 static menuItem_t pMenuItems[] = {

“Switch”,SWITCH,“Light”,LIGHT

};static menu_t pMenu = {

pMenuItems,N_ITEMS(pMenuItems)

};

static void appLight();//实现电灯功能

static void appSwitch();//实现远程开关功能

static uint8 appSelectMode(void);//功能选择

static void appLight()//实现电灯功能 {

halLcdWriteLine(HAL_LCD_LINE_1, “Light”);

halLcdWriteLine(HAL_LCD_LINE_2, “Ready”);

// 初始化射频模块

basicRfConfig.myAddr = LIGHT_ADDR;//网络地址

if(basicRfInit(&basicRfConfig)==FAILED){

HAL_ASSERT(FALSE);//初始化错误处理

}

basicRfReceiveOn();//打开接收功能。

//死循环

while(TRUE){

while(!basicRfPacketIsReady());

if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0){//如果接收到数据

if(pRxData[0] == LIGHT_TOGGLE_CMD){

halLedToggle(1);//开关改变状态

}

}

}

}

static void appSwitch()//实现远程开关 {

halLcdWriteLine(HAL_LCD_LINE_1, “Switch”);//屏幕输出

halLcdWriteLine(HAL_LCD_LINE_2, “Joystick Push”);

halLcdWriteLine(HAL_LCD_LINE_3, “Send Command”);

pTxData[0] = LIGHT_TOGGLE_CMD;//需要发送的数据

// 初始化

basicRfConfig.myAddr = SWITCH_ADDR;

if(basicRfInit(&basicRfConfig)==FAILED){

HAL_ASSERT(FALSE);//出错处理

}

basicRfReceiveOff();//关闭接收机

// 死循环

while(TRUE){

if(halJoystickPushed()){//当按键按下时触发

basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PAYLOAD_LENGTH);//发送命令

}

}

}void main(void)

{

uint8 appMode = NONE;//模式变量

// 设置网络ID和信道

basicRfConfig.panId = PAN_ID;

basicRfConfig.channel = RF_CHANNEL;

basicRfConfig.ackRequest = TRUE;

//初始化其他设备

halBoardInit();

halJoystickInit();

// 初始化射频模块

if(halRfInit()==FAILED){

HAL_ASSERT(FALSE);

}

halLedSet(1);//LED1灯亮,提示节点已上电

utilPrintLogo(“Light Switch”);

// 等待用户按下S1进入菜单

while(halButtonPushed()!=HAL_BUTTON_1);

halMcuWaitMs(350);//延时

halLcdClear();//清屏

// 设置该节点是开关还是电灯

appMode = appSelectMode();

halLcdClear();

// 模块开始工作

if(appMode == SWITCH){

appSwitch();

}

else if(appMode == LIGHT){

appLight();

}

//如果没有定义该节点的功能,则LED灯不断闪烁

HAL_ASSERT(FALSE);

}

static uint8 appSelectMode(void)//模式选择 {

halLcdWriteLine(1, “Device Mode: ”);

return utilMenuSelect(&pMenu);//通过调用头文件实现功能选择

}

实验总结:

这个实验虽然功能非常简单,只是通过按下开关节点的按键来控制电灯节点LED的亮或灭,但是通过这个实验可以了解节点间通信的基本思路。

原代码中有许多可有可无的冗余代码,上面的代码经过代码中很多都是调用头文件,在这里就不在一一罗列,只在代码注释中注明该调用的功能。这些调用都是一些非常简单的操作,写入头文件调用是为了增加代码可读性。

baseRF通信基本流程

1.初始化网络地址,打开接收机或关闭接收机。

2.初始化basicRfConfig,确定网络ID、信道、是否需要应答、是否采用加密机制等。

3.初始化周边设备,如时钟、各个I/O口等。

4.事件的处理,如发送报文或接受报文后的数据处理等。

第二篇:第4章 JavaScript 编程基础实验

第4章 JavaScript 编程基础

实验 1 猜数字游戏

实验说明:

这是一个经典的小游戏,由计算机随机生成一个 1 到 100 的数字,然后由玩家去猜,计算机给出提示。若玩家可以 10 次以内猜中,算玩家赢(图

4-1)。

4-1 猜数字游戏

实验目的:

1.学会编写 JavaScript 程序。

2.掌握访问网页中特定元素的方法。实验准备:

一台安装好 Visual Web Developer 的计算机 实验步骤:

1.使用 Visual Web Developer 创建一个网站,向网站中添加一个 GuessNumber.htm 网页。

2.根据图

4-2 设计网页,其内容如下:

注意两个设定了 id 的 HTML 元素“”和“

”,前者用于取出用户输入的数字,后者则用于显示提示信息。

3.请在网页的元素内编写 JavaScript 函数 Guess(),实现游戏功能,整个代码框架如下:

要点提示:

(1)整个游戏的判断逻辑需使用条件语句实现。

(2)可以使用 document.getElementById()方法访问文本框元素,通过其 value 属性取出用户所输入的数。

(3)使用 document.getElementById()方法访问

元素,利用其 innerHTML 属性显示提示信息。

(4)使用浏览器对象 location.Reload()方法重新刷新网页,以便重新开始游戏。

4.设置“对不对”按钮的单击事件响应函数为 Guess():

实验 2 动态样式设定

实验说明:

本实验将设计一个网页,网页上提供一个文字段落和四个单选钮,分别表示四种样式。用户点击选择一种样式,网页动态显示出样式应用于文字段落的效果(图

4-2)。

实验目的:

1.掌握给指定 HTML 元素动态设定样式的方法。2.能应用盒子模型正确地布局网页。

3.掌握为 HTML 控件编写事件响应函数的方法。实验准备: 安装好 Visual Web Developer 的一台计算机.2 阅读 4.7.3 节,了解如何编程动态设置 HTML 元素的样式类。实验步骤: 使用 Visual Web Developer 创 建 一 个 新 网 站,向 网 站 中 添 加 一 个 新 网 页 :

DynamicChangeStyleClass.htm。根据示例网页定出网页逻辑结构和主体元素:

请按照图 4-2 的显示将上述代码中“①”和“②”所代表的样式表规则填上,其中: ① :填写的样式规则要使 div 盒子宽度合适(指大小刚好可以将段落文字分为多 行)并在浏览器窗口中居中显示,由细实线边框包围。

② :填写的样式规则要使盒子中的四个单选钮在浏览器窗口中居中显示。给页面添加以下样式类,这些样式类将被动态地应用于文字段落。完成以下的 JavaScript 函数:

要点提示:

(1)使用 document.getElementById()获取对文本段落的引用,然后通过此引用设置其className 属性,就可以将指定的样式类应用于文字段落。

(2)要恢复默认的样式,只需将文字段落的 className 属性设为 null。5 将 changestyle()函数与四个单选钮的 onclick 事件挂接上(注意函数参数值的设定),一个示例如下: 在浏览器中打开网页,查看效果。

实验三 客户端表单基本验证

第三篇:简单数控编程练习

简单数控编程练习

华中数控简单的编程做练习

螺纹的宏程序

%5

G54 G0 Z50

M03 S1200

#111=#(“#” 为刀尖的实际回转半径)

G0 X0 Y0

Z1.5(Z轴的起刀点定在正1.5是方便螺纹加工,向下加工的深度位置)

G42 G1 X19 Y0 D111 F100

M98 P11 L9(调用子程序9次)

G40 G0 X0 Y0

Z50

M30

%11

G91 G02 I-19 Z-1.5 F100(联动加工铣削螺纹)M99

9圈就到了Z负12

第四篇:实验一简单的异步串行通信实验报告

实验一 简单的异步串行通信实验

一、实验目的及要求

1、了解掌握RS-232接口标准以及 DB9的主要引脚功能;

2、了解掌握串口通信的基本原理;

3、学习掌握RS-232电缆的制作和测试方法;

4、学习掌握使用串口调试程序进行串口之间的通信实验。

二、实验原理

1、异步串行通信原理

在计算机系统中,每个字符一般使用一个 8 位二进制代码表示。在数据通信中,通常将 传送的每个字符的二进制代码按照由低位到高位的顺序依次发送的方式称为串行通信。图 2-1 是串行通信的示意图。由于串行通信只需在发送方和接收方之间建立一条通信信道,因 此可以减小通信系统的造价。在远程通信中,一般采用串行通信方式。

图 1-1 串行通信示意图

同步是数据通信中必须解决的一个重要问题。所谓同步就是要求通信的收发双方在时间基准上保持一致。在串行通信中,“异步”是同步收发双方通信的重要方式。在异步串行通信中,每个字符作为一个独立的整体进行发送,字符之间的时间间隔可以是任意的。为了实现同步,需要在每个字符的第一位前加 1 位起始符(逻辑 1),并在字符的最后一位后加 1位、1.5 位或 2 位停止位(逻辑 0)。异步串行传输的比特流结构如图 2-2所示。

图 1-2 异步串行传输的比特流结构

常用的串行通信接口标准包括RS-232、RS-449、V.24、V.35等。其中,RS-232是最常 用的串行通信标准之一。个人计算机及终端系统中配备的串行接口几乎都符合 RS-232 标准。

2、RS-232 接口标准

串行口是一种最基本的通信接口,基本上所有的个人计算机及通信终端设备都配有这种接口。RS-232 的主要内容就 是定义数据终端设备DTE(data terminal equipment)和数据通信设备DCE(data circuit equipment)之间的接口标准。RS-232 是美国电子工业协会 EIA 推荐使用的串行通信标准。其初衷是为了促进利用电话网进行数据通信应用的发展,现在也普遍应用于各类计算机或终端设备之间的短距离连接。

RS-232 使用的连接器包括 DB-

25、DB-15 和 DB-9 等几种类型,不同类型连接器使用的引脚定义也各不相同。

计算机 RS-232 串行通信的基本过程。图 1-4 异步串行通信实验总体结构示意图

三、实验过程与实验步骤

1、使用制作的 RS-232电缆将 2台计算机的可用 COM 口连接起来。

2、复制串口调试助手到硬盘上。

3、直接双击 “串口调试助手 3.0”运行软件。检查串口线是否连接到计算机和设备上。确定串口(本机为com1)。在串口调试助手中打开串口:com1。

4、使用字符串收发

5、使用文件传输功能

使用文件传输功能,在 2 台电脑上传输文件,这对于某些特定场合可以用到该功能。首先由接收一端在打开串口后,按下接收文件按钮。

之后会弹出一个对话框,等待对方发送文件。

发送一端在打开串口后,先选择发送文件(如下图)

选择文件后,按下发送按钮,文件开始传输中,这时 2 端都可以看到发送的进度条。发送完毕后,软件会提示!

四、实验结果与分析:串口(com1)

1、正常发送:

(1)A机:波特率相同(9600)、校验位相同(none)、数据位相同(8)、停止位相同(1)

B机:波特率相同(9600)、校验位相同(none)、数据位相同(8)、停止位相同(1)结果:A机发“你好”,B机收“你好”,(图1); B机发“哈哈”,A机收“哈哈”,(图2);

图1

图2(2)、A机:波特率相同(19200)、校验位相同(ODD)、数据位相同(8)、停止位相同(2)

B机:波特率相同(19200)、校验位相同(ODD)、数据位相同(8)、停止位相同(2)结果:A机发“我很好”,B机收“我很好”;图3); B机发“你呢”,A机收“你呢”;图4);

图3

图4

2、波特率不同

A机:波特率相同(4800)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“01 02 03”,B机收“胉”;(图5); B机发“yjw”,A机收“?”;(图6); 分析: 图6

图5 波特率控制采样时间间隔,波特率不相同,收发双方在 相等时间内接收和发送数据 不一致。

3、数据位不同

A机:波特率相同(9600)、校验位相同(ODD)、数据位相同(6)、停止位相同(1)B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“040506”,B机收“?”,(图7); B机发“lys”,A机收“,9>”,(图8); 分析:数据位不相同,收发双方在相等时间内接收和发送数据不一致,所以结果不相同

图7

图8

4、奇偶校检不同

(1)A机:波特率相同(9600)、校验位相同(EVE)、数据位相同(8)、停止位相同(1)

B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“54 85 96 75”,B机收“54 85 96 75”;(图9)B机发“第五种”,A机收“第五种”;(图10)分析:因为校验位用于检验 接收和发送的数据的正确性的,在最终转换时会去除校验位,所以接收到的有效数据和发送的有效数据相同,发送与接收结果一样。

图9

图10(2)A机:波特率相同(9600)、校验位相同(NONE)、数据位相同(8)、停止位相同(1)

B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“54 85 96 75”,B机收“

”;(图11)

B机发“第六种”,A机收“第六种”;(图12)

分析:由于A机无校验位,B机有校验位,所以B机在收到数据并校检,后会自动去除校检位以致发双方的有校数据不一致,结果不一样。

相反的。当A机为接收方时,虽然A机无检验位,但是因为A机已接收到8位数据故不接收B机发送的校检位。结果一样。

图11

图12

5、停止位不同

A机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位不同(1)B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位不同(2)

图13

结果:A机发“B机收“B机发“

”,A机收“

”,”;(图13)”;(图14)

图14 分析:

5、发送文件

A机:波特率相同(9600)、校验位相同(NONE)、数据位相同(8)、停止位相同(2)B机:波特率相同(9600)、校验位相同(NONE)、数据位相同(8)、停止位相同(2)结果分析:

当有校检位时,不可以接收文件;波特率不同、校验位不同、数据位同或停止位不同时,文件无法接收;即唯有当波特率相同、数据位相同、停止位相同且无校检位时,方可以正确接收文件。

五、思考并回答以下问题:

(1)在本实验中,RS—232 串口电缆处于 OSI 参考模型的什么位置?它的作用是什么?

答:处于OSI 参考模型的物理层,其作用是作为传输介质,连接通信的网络节点,实现比特流的透明传输,为数据链路层提供数据传输服务。

(2)在本实验中,数据和信号分别体现在 OSI参考模型的什么位置?两者之间有何区别?

答:数据体现在数据链路层,信号体现在物理层。两者区别在:数据链路层:为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧。物理层:OSI模型的最底层。它提出了网络的物理特性,比如连接的电缆类型。这里是二进制值0和1的世界,也就是数据以信号的电特性(高低电平)来表示。

(3)什么是波特率?为何两台 PC 的波特率不同就不能正常通信?

答:波特率又称调制速率、传码速率,记为Nbd,是指在数据通信系统中,每秒钟传输信号码元个数,单位是波特。

在串口通信,一般包括起始位,数据位,校验位(可无)和停止位。以起始位为标志,通信双方进行同步,然后发送方以一个固定的时间间隔进行比特位的传输,接收方以一个固定的时间间隔进行比特位的接收,如果双方的波特率不同,就意味着发送方和接收方所采用的时间间隔不相等,就可能导致接收数据的错位。一般认为通信双方的波特率相差2.5%以内可保证正常通信。

第五篇:socket编程实验心得体会

实验心得体会

在本次实验中,我通过对网络课上所学知识的应用,学到了很多实践中的知识。并且加深了我对课本知识的理解和认识,在实验过程中,更容易记忆和深入理解各种协议的工作以及在网络编程中应该注意的一系列问题。

我们的第一个实验是对ARP、ICMP、FTP和HTTP协议的分析和验证。在利用软件Etherpeek抓取在主机通信中的报文,得到了很多的关于这些协议的具体参数。在课程学习过程中,书本和老师给我的感觉就是太枯燥,通过课本的学习根本没有办法理解各种协议的工作细节。有很多的细微之处是想不通的。但是,在本次实验中,我就通过各种报文的分析,看到了网络中不同层次协议之间的协做过程。对应不同层之间就是通过协议来使用,我对整个网路的大体架构有了一个统筹的了解,虽然对很多的更深入的知识不是很了解,但是比我在课上学的东西要更有趣,而且容易学习,更能够我学习的兴趣。

第二个实验是Socket编程实验。在编写网络程序之前,我对网路通信可以说一无所知,根本不知道那些网路上的程序是怎么通过网路进行通信的。在本次实验中,终于揭开了他们神秘的面纱。当然在实验中出现了很多的插曲,我是在Linux环境下编写的程序,很多技术方面的问题都无法解决。查阅书籍和网上咨询才弄懂了他们的来龙去脉,最终是将我的程序编写完了。开始接触网路编程时,那是一头雾水,根本不知从何下手。在看了辅导教员给我们程序之后才有了很多的起色,才能够自己编写程序。在网络编程中,我最深的体会就是对具体的内部细节不熟悉,导致在调试的过程中感觉到很无力。在很多函数的作用下,经常就是一团乱麻。之后,我每次编写之前就是将用到的函数的用法温习一下,最后还是能够解决很多的问题的。

本次试验是我们学习网路的第一次。以前的课程从来没有接触到网路方面的知识。这次的新知识对我们的挑战还算不是太大,通过我们的努力,所有的困难时被克服掉了。其实,实验应该是我们的重点,在以后的工作中要的就是我们的实际的动手能力,如果我们在学习期间就是只学了书本上的知识,那样对理论的了解是不够深刻的,只有通过实验才能激发我们的学习兴趣。总之,我觉得实验才是检验理论的唯一标准。

下载Zigbee基础实验(6)—简单通信编程word格式文档
下载Zigbee基础实验(6)—简单通信编程.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    实验三GUI编程

    实验三GUI编程 一、实验目的: 1、了解Java系统图形用户界面的基本工作原理和界面设计的步骤 2、了解图形用户界面的事件响应机制. 3、掌握图形用户界面各种常用的基本组件的......

    Android编程基础教学大纲

    《Android编程初级》教学大纲 2013-11-21修订版 一、 课程教学目标: (一) 知识目标 本课程要求学生熟练使用LinearLayout线性布局及RelativeLayout相对布局完成UI界面设计,灵......

    pascal编程基础练习题

    pascal编程基础练习题 一、不定项选择和填空题 1、下列关于程序语言的叙述,不正确的是( ) A、编写机器代码不比编写汇编代码容易 B、高级语言需要编译成目标代码或通过解释器解释......

    Java基础编程题

    【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的......

    通信实验心得体会

    在做实验之前以为并不难做像以前做过的实验一样完实验以 后两下子就可以把实验报告写完。直到做完了实验以后才真正的认识到其 实这并不容易一件很挑战的事情而学到的知识与......

    MFC编程实验个人总结报告

    MFC编程实验总结报告 知识总结+个人心得 2011年暑期MFC编程实验报告 1 / 6 MFC编程实验个人总结报告 一、MFC类、函数等知识小结: 1、SetTimer (1, m_intLevel, NULL); 在......

    Java编程语言基础总结

    第一章初识Java 1.程序是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。 2.Java包括编程语言和相关的技术。 3.Java主要用于开发,桌面应用程序和Int......

    编程入门基础知识点总结

    一、 常量  数字常量 i. 普通数字:1,35,2.7 ii. 指数形式:2.45e-2等价于2.45*10-2 注意e大小写皆可,e前面的数字不能省,就算是1也不能省,后面的数字一定要是整数 iii. 长整型,单精......