xinxin开心小机器人开心大扫除 蓝牙配对

第十二章&遥控机器人&《App&Inventor--创建自己的安卓应用》
第十二章 遥控机器人
特别提示:,请访问&&。&
& & 本章将创建一个应用,将Android手机变成LEGO
MINDSTORMS NXT
机器人的遥控器。应用中用按钮来控制机器人前后移动、左右转动和停止,如果机器人遇到障碍物,它还会自动停止。应用中使用具有蓝牙功能的手机与机器人通信。
MINDSTORMS机器人不只是玩具,更是教具。After-school program
使用机器人来教小学和初中的孩子们掌握解决问题的能力,并引导他们了解工程和计算机编程。NXT机器人也用于FIRST LEGO
League 机器人竞赛,这项比赛允许9-14岁的孩子参加。
NXT可编程机器人套件中有一个“NXT智能积木”主单元,它可以控制三个电机及四个输入传感器。你可以用乐高的构造元件、齿轮、车轮、电机和传感器来组装机器人。该套件自带的软件可以对机器人进行编程,但现在我们将用App
Inventor来创建Android应用,通过蓝牙连接来控制NXT机器人。
应用中参与协作的机器人具有超声波传感器以及用于移动的车轮,如移动发射器(Shooterbot)机器人。图中所示,这款机器人通常是人们利用LEGO
MINDSTORMS NXT 2.0套件建造的第一个机器人。它的左车轮与输出端口C相连,右车轮与输出端口B相连,颜色传感器与输入端口3相连,超声波传感器与输入端口4相连。
本章用到了以下组件和概念:
& & ●
BluetoothClient组件:用于建立Android设备与NXT机器人之间的蓝牙连接;
●&ListPicker组件:为用户提供机器人选择列表,选中后开始建立机器人到Android的连接;
●&NxtDrive组件:用于驱动机器人的轮子;
●&NxtUltrasonicSensor组件:利用机器人的超声波传感器探测障碍物;
& ●&Notifier组件:显示错误消息。
& & 本章的应用需要Android
2.0或以上版本。此外,出于安全原因,蓝牙设备必须首先配对才能彼此连通。在开始构建应用之前,需要按以下步骤使Android设备与NXT机器人配对:
1.在NXT上单击向右箭头,直到显示“Bluetooth”,然后按下橙色方块;
2.点击向右的箭头,直到显示“Visibility”,然后按下橙色方块;
3.如果“Visibility”值已设定为可见,继续步骤4;如果不可见,请单击向左或向右箭头设置其值为可见;
4.在Android设备上,进入设置→无线与网络;
& & 5.确保打开蓝牙功能;
& & 6.点击“蓝牙”;
7.在“可用设备”中查找名为“NXT”的设备;
&注意:如果你曾经修改过机器人的名字,则寻找机器人现在的名字,而非“NXT”。
& & 8.如果机器人名字下显示“已配对但未连接”字样,则配对成功!否则,继续执行步骤9;
9.如果机器人名字下显示“与此设备配对”,则点击它;
10.在NXT上,要求输入密码,按下橙色方块接受1234为密码;
11.在Android上,也会要求输入PIN码,输入1234,然后按确定;
12.现在应该看到“已配对但未连接。”,说明配对成功!
&&连接到App Inventor网站,创建新项目“NXTRemoteControl”,将设置屏幕的标题为“遥控机器人”,并连接测试手机。
在创建用户界面之前,先来创建表12-1中的不可见组件,如图12-1所示,用来控制NXT。
& & 表12-1
NXT“机器人遥控”应用中的不可见组件
图12-1 在组件设计器底部显示的不可见组件
按以下方式设置组件的属性:
1.设置NxtDrive1及NxtUltrasonicSensor1的BluetoothClient属性为
BluetoothClient1;(说明轮子的驱动与障碍物的侦测都需要依赖蓝牙通信——译者注)
2.勾选NxtUltrasonicSensor1的BelowRangeEventEnabled属性(近距离侦测障碍物功能可用);
3.设置NxtDrive1的DriveMotors属性:
 ●如果机器人的左轮电机与输出端口C连接,右轮电机与输出端口B连接,则保持默认设置“CB”;
●如果机器人的配置与上述不同,则将DriveMotors属性设置为两个字母的文本,其中第一个字母是连接左轮电机的输出端口,第二个字母是连接右轮电机的输出端口。
4.设置NxtUltrasonicSensor1的SensorPort属性:
 ●如果机器人的超声波传感器与输入端口4连接,则保持默认值“4”;
 ●如果机器人的配置与上述不同,则将SensorPort设置为与超声波传感器连接的输入端口。
现在创建用户界面组件,如图12-2所示。
组件设计器中的应用
建立蓝牙连接时,Android设备需要访问NXT机器人具有唯一性的蓝牙地址,但蓝牙地址由8个用冒号分隔的2位数的十六进制数(二进制数的另一种表示方式)组成,输入起来异常麻烦,而且每次运行应用都要在手机上输入该地址。为了减少麻烦,使用ListPicker来显示已经与手机配对的机器人列表(列表项的值为机器人的名称及蓝牙地址),并从中选择一个。
使用按键来驱动机器人的前进、后退、左右转动、停止和断开连接,使用VerticalArrangement来放置除ListPicker以外的所有组件,用HorizontalArrangement来放置左右转向及停车按钮。
按照表12-2中列出的组件来创建图12-2所示的用户界面。
& & 表12-2
NXT机器人控制器应用中的可见组件
& & 按照图12-2所示来设置可视组件布局:将LeftButton、StopButton和RightButton放在HorizontalArrangement1中,将Forwaron、HorizontalArrangement1、Backwaron和DisconnectButton放在VerticalArrangement1中。
按下列方式设置组件属性:
1.取消勾选Screen1的Scrollable属性(滚屏功能);
2.设置ConnectListPicker和DisconnectButton的宽度为“Fill parent”;
3.设置VerticalArrangement1、Forwaron、HorizontalArrangement1、LeftButton、StopButton、RightButton及Backwaron的Width与Height为“Fill
parent”;
4.设置ConnectListPicker的Text属性为“连接”;
5.设置Forwaron的Text属性为“∧”;
6.设置LeftButton的Text属性为“&”;
7.设置StopButton的Text属性为“—”;
8.设置RightButton的Text属性为“&”;
9.设置Backwaron的Text属性为“∨”;
10.设置DisconnectButton的Text属性为“断开连接”;
11.设置ConnectListPicker和DisconnectButton的FontSize属性为30;
12.设置Forwaron、LeftButton、StopButton、RightButton及Backwaron的FontSize属性为40。
在这类应用中,当手机与NXT建立蓝牙连接之前,应该隐藏用户的操作界面,为此取消勾选VerticalArrangement1的Visible属性。不要担心,当NXT连通后,将重新显示用户界面。
为组件添加行为
本节将编程来设置应用的行为,包括:
用户从列表中选择机器人,并与之建立连接;
断开机器人与应用的连接;
使用控制按钮来操控机器人;
在机器人侦测到障碍物时,让它停下来。
连接到NXT机器人
& & 添加第一个行为:连接到NXT。点击
ConnectListPicker将显示已配对的机器人列表,选中一个,将在应用与机器人之间建立蓝牙连接。
显示机器人列表
使用ConnectListPicker组件来显示机器人列表。ListPicker的外表像按钮,被点击后则显示列表项,并允许进行单选。
使用BluetoothClient1.AddressesAndNames块来提供列表,列表项是已经与Android设备配对的蓝牙设备的名称及地址。由于NXT已经将轮驱动及超声波组件的BluetoothClient属性设定为BluetoothClient1,因此AddressesAndNames属性列表中的设备会自动限定为这类机器人,其他类型的蓝牙设备(如耳机)将不会出现在列表中。表12-3列出了所需要的块。
在应用中添加ListPicker列表所需要的块
点击ConnectListPicker将触发ConnectListPicker.BeforePicking事件,并显示可选项列表。将ConnectListPicker.Elements属性设置为
BluetoothClient1.AddressesAndNames块,来设定可选项;ConnectListPicker将显示已经与Android设备配对的机器人列表。
图12-3 显示机器人列表
& & 测试:在手机上点击“连接”,看看会发生什么,你会看到所有已经与手机配对的机器人列表。
如果只见黑屏,说明手机尚未与任何机器人配对;如果见到其他蓝牙设备,如蓝牙耳机,说明
NxtDrive1与
NxtUltrasonicSensor1的BluetoothClient属性设置有误。
建立蓝牙连接
从列表中选择一个机器人,应用将通过蓝牙与机器人连接。如果连接成功,用户界面将发生变化:隐藏ConnectListPicker,并显示用户界面的其余部分。如果机器人开关没有打开,则连接失败,会弹出错误信息。
& 使用call
BluetoothClient1.Connect块与机器人进行连接。ConnectListPicker.Selection属性提供了选中机器人的地址和名称信息。
& 使用ifelse块来测试连接是否成功。ifelse块需要连接三个不同的块:“if”、“then”及“else”。“if”与BluetoothClient1.Connect块连接,“then”区域放置连接成功时要执行的块;“else”区域放置连接失败时要执行的块。
& 如果连接成功,使用Visible属性来隐藏 ConnectListPicker并显示VerticalArrangement1(其中放置了除ConnectListPicker之外的所有组件)。如果连接失败,则使用Notifier1.ShowAlert块来显示错误信息。表12-4列出了设置上述行为所需的块。
表12-4与机器人建立蓝牙连接所需的块
选中机器人后将触发ConnectListPicker.AfterPicking事件,见图12-4,BluetoothClient1.Connect块用于建立与机器人之间的蓝牙连接。如果连接成功,执行“then”块:隐藏ConnectListPicker按钮并显示VerticalArrangement1内的所有组件,即,设置ConnectListPicker.Visible属性为false,设置VerticalArrangement1.Visible属性为true。如果连接失败,执行“else”块:用Notifier1.ShowAlert块弹出错误信息。
& & 图12-4
建立蓝牙连接
与NXT断开连接
& 让Android设备与NXT机器人连接着实让人兴奋,不过“断开连接”是我们下面要添加的行为,这样便于对连接与断开进行连续测试。
& 当点击DisconnectButton时,应用将关闭蓝牙连接,用户界面将发生变化:ConnectListPicker按钮将重新出现,而用户界面上的其余组件将被隐藏。
&&表12-5列出了构建BluetoothClient1.Disconnect(断开蓝牙连接)所需的块。设置Visible属性来显示
ConnectListPicker按钮并隐藏VerticalArrangement1中包含的所有组件。
与机器人断开连接所需的块
点击DisconnectButton将触发DisconnectButton.Clicked事件,如图12-5所示,断开蓝牙连接要用BluetoothClient1.Disconnect块,之后设置ConnectListPicker.Visible属性为true来显示
ConnectListPicker,设置VerticalArrangement1.Visible属性为false来隐藏VerticalArrangement1。
与机器人断开连接
测试:请确保机器人已经打开,点击手机上的“连接”按钮,并选择要连接的机器人。建立蓝牙连接需要一点时间。一旦连接成功,用户界面将显示机器人的控制按钮,以及“断开连接”按钮。
单击“断开连接”按钮:控制机器人的按钮会消失,“连接”按钮则重新出现。
操控机器人
下面是真正有趣的部分:添加前进、后退、左右转动及停止行为。不要忘记“停止”,否则你手中的机器人会失去控制!
NxtDrive组件提供了五个块,用来驱动机器人的电机:&
MoveForwardIndefinitely块:驱动两个电机前进;&
MoveBackwardIndefinitely块:驱动两个电机后退;&
TurnCounterClockwiseIndefinitely块:驱动机器人左转:让右侧电机向前而左侧电机后退;
TurnClockwiseIndefinitely块:驱动机器人右转:让左侧电机向前而右侧电机后退;&
Stop将停止电机。
每个移动及转向块都有一个Power参数,需要与数字块配合使用,来设定机器人电机的输出功率,取值范围可以从
0到100。但如果设置的功率太小,电机会发出吱吱声而不运转。在本例中建议使用90(百分比)。表12-6中列出了所需的块。
用于控制机器人的块
如图12-6所示,点击Forwaron按钮时触发Forwaron.Clicked事件,此时调用NxtDrive1.MoveForwardIndefinitely块,让机器人以90%的功率前进,其余按钮的事件处理程序与此类似,并以相同的功率驱动机器人后退及左右转动。点击StopButton时触发StopButton.Clicked事件,调用NxtDrive1.Stop块让机器人停止运动。
操控机器人
& & 测试:按照此前的“测试”说明,先连接NXT机器人。不要将机器人放在桌子上,以免跌落,然后测试以下行为:
点击前进按钮,机器人应该向前移动; 2.
点击后退按钮,机器人应该向后移动; 3.
点击左转按钮,机器人应逆时针转动; 4.
点击右转按钮,机器人应顺时针转动; 5.
点击停止按钮,机器人应停止。
如果机器人不动并发出吱吱声,可能需要加大电机的功率,可以用最大功率100。
用超声波传感器探测障碍物
使用超声波传感器的机器人可以侦测到30厘米范围内的障碍物,遇到障碍物时机器人会像罪犯一样停下来,如图12-7所示。
为NXT机器人设置障碍
& NxtUltrasonicSensor组件用于侦测障碍物,两个属性BottomOfRange和TopOfRange用来定义侦测范围(以厘米为单位)。默认设定BottomOfRange为30厘米,TopOfRange为90厘米。
& NxtUltrasonicSensor组件具有三个事件BelowRange、WithinRange及boveRange,当侦测到障碍物在BottomOfRange(下限)距离以内时,会触发BelowRange事件;当障碍物的距离在BottomOfRange与TopOfRange (上下限)之间时,会触发WithinRange事件;当障碍物的距离超过TopOfRange(上限)时,将触发AboveRange事件。
& 这里使用NxtUltrasonicSensor1.BelowRange事件块,用来侦测30厘米以内的障碍物,如果你想尝试侦测不同距离的障碍物,可以调整BottomOfRange属性。当BelowRange时间发生时,使用NxtDrive1.Stop块让机器人停下来。表12-7中列出了所需的块
使用NxtUltrasonicSensor需要的块
当机器人的超声波传感器侦测到30厘米以内的障碍物时,NxtUltrasonicSensor1.BelowRange事件被触发,如图12-8所示,此时NxtDrive1.Stop块让机器人停下来。
侦测障碍物
测试:按照此前的“测试”说明,先连接NXT机器人。引导机器人朝着障碍物(如猫)的方向前进,机器人将在距离猫30厘米时停下来。如果机器人没停下来,可能是猫已经远离了机器人,它们之间的距离一直大于30厘米。可以换一个静止的障碍物来进行测试。
应用运行起来,想必你已经花了大量时间来操控这个机器人,不过还是想继续其他的尝试:
调节驱动电机的输出功率:
-可以修改插入到前进(MoveForwardIndefinitely)、后退(MoveBackwardIndefinitely)、左转(TurnCounterclockwiseIndefinitely)及右转(TurnClockwiseIndefinitely)
块中的数字块的值。
当侦测到障碍物时,使用NxtColorSensor让红灯闪烁:
& & -可以使用NxtColorSensor组件及其GenerateColor属性;
& & -需要将DetectColor属性设置为false(或在组件设计器取消勾选该属性),因为颜色传感器无法同时检测和产生颜色。
使用Android的方向传感器OrientationSensor来控制机器人。
使用乐高的构造元件建立手机与机器人之间的物理连接,创建应用实现机器人的自主性。
以下是本章涵盖的内容:
ListPicker组件:让用户可以从已配对的机器人列表中进行选择;
BluetoothClient组件:使Android设备与机器人建立连接;
Notifier组件:用来显示错误消息;&
Visible属性:用于隐藏或显示用户界面中的组件;&
NxtDrive组件:可以控制机器人的移动、转向及停止;&
NxtUltrasonicSensor组件:用于侦测障碍物。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。热门日志推荐
人人最热标签
分享这篇日志的人常去
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场WowWee推出了双轮蓝牙控制可编程玩具机器人MiP
发表时间:
转载声明:尚品唛网最新产品信息均来自于网络,并采用客观描述方式整理编译,转载请注明出处。
近期新品资讯推荐
中国厂商昂达已经宣布推出一款Windows 10平板电脑,型号是V820W CH,它会在未来几周内上市,采用8英寸IPS电容式触摸屏, 英特尔凌动X5 Z8300四核处理器,工作频率1.84GHz ,2GB DDR3L内存,32GB存储的支持扩展到128GB,200万像素前后摄像头,内建蓝牙/ OTG...
三星已经宣布推出SE370显示器,世界上第一台内建无线充电功能的显示器,用户现在已经可以预购这款显示器。SE370显示器尺寸23.6英寸,采用运动型PLS面板,全高清80分辨率,250 cd/m2亮度,1000:1对比度。
这款显示器内建的无线充电功能支持Qi无线充电标...
LG已经正式公布了其全新系列——“V系列”的第一款手机LG V10,主打娱乐多媒体体验。LG V10只有8.6mm厚,重量为192g,中框采用不锈钢设计。不过,该机最大的特点就是其独具特色的屏幕顶端设计,双前置摄像头和彩色副屏。LG V10拥有的彩色副屏将显示时间、天气、日期和电...
GoPro推出了一款价格仅$199.99美元的Wi-Fi行动相机新品,它既是Hero+ Wi-Fi。顾名思义,该相机支持无线网络传输(Wi-Fi和蓝牙),定位介于$129.99美元的Hero+、以及$299.99美元的Hero+ LCD(有触屏无Wi-Fi)之间。从外观上来看,Hero+ Wi-Fi与基础型号无甚差别,但是...
今日新品推荐
VN:F [1.9.22_1171]please wait...Rating: 4.0/5 (1 vote cast)
中国厂商昂达已经宣布推出一款Windows 10平板电脑,型号是V820W CH,它会在未来几周内上市,采用8英寸IPS电容式触摸屏, 英特尔凌动X5 Z8300四核处理器,工作频率1.84GHz ,2GB DDR3L内存,32GB存储的支...
&载入中 ...
谷歌提供的广告图1 LabVIEW蓝牙控制乐高六足机器人
& & 上篇文章《Arduino与LEGO结合的六足机器人》中,讲解了使用32路舵机控制板的方法,该板自带了一款舵机控制软件,我用该软件控制着六足机器人的12个mini舵机做动作,通过&示教&法一步步地确定了前、后、左、右4个动作组,然后把动作序列文件下载到机器人身上舵机控制板的存储卡中,并在线运行,测试机器人的运行是否符合预期。
& & 《Arduino与LEGO结合的六足机器人》文章的网址:/zhang700309/blog/13-03/e9f.html。
& & 在这篇文章中,我用LabVIEW软件设计了一个六足机器人的人机控制界面,设置5个互动按钮。界面设计目的是,当按钮按下时,会把一行字符串命令通过蓝牙串口,无线发送到舵机控制板,执行事先下载到其存储卡中的前后左右及停止动作序列文件,让机器人&活&起来。
视频网址:
二、32路舵机控制板硬件设置和上下位机蓝牙联机
& & 控制这个机器人12个mini舵机的是DFRobot公司出品的USB SSC32舵机控制板,该控制板的各端口分布和功能说明图如下。
图2 &DFRobot公司的32路舵机控制板端口分布和功能说明
& & 六足机器人左侧6个舵机的输出端子分别插接在控制板的1到6舵机通道,而右侧6个舵机插接在17到22舵机通道。控制板的通信波特率,我设置为115200b/s,通过图2所示&7拨码开关&来设置,把两个拨码开关都拨到ON端即可。
& & 图2中标号为1、8、10和12的端口都可以供电,1号和10号端口供电给逻辑部分,8号和12号端口供电给舵机部分。由于机器人的电控仅用一块7.4V、900ma的锂聚合物电池供电,所以逻辑部分和舵机部分共用电源,于是&11 VL和VS1连通跳线&帽要插上,同时&2 USB供电选择跳线&帽不插上,断开,不采用电脑USB供电。
&&&舵机控制板与PC机的通信采用蓝牙模式,在控制板的&16数传接口&上插入蓝牙模块,蓝牙模块也要设置为波特率为115200b/s,并采用从机通信模式。在PC机的USB插座上插入蓝牙适配器,利用了IVT蓝牙管理软件进行上下位机的联机。这次用的笔记本电脑安装了win7操作系统,我发现低版本的IVT蓝牙驱动管理软件,连接失败,采用高版本V6.4版,成功了。操作生成的串口号为COM6。PC机蓝牙管理软件IVT_BlueSoleilv6.4(win7),请下载:。
& &&PC机与下位机的蓝牙联机过程,可以参看我的另一篇文章的后半部分内容。网址:/zhang700309/blog/12-09/c80.html。
图3& IVT软件的上下位机蓝牙通信连接
三、六足机器人的LabVIEW人机界面的前面板设计
& & LabVIEW程序由前面板和框图程序组成,前面板是人机交互的界面,界面上有用户输入和显示输出两类控件;框图程序则是用户编制的程序源代码,以定义和控制在前面板上的控件输入和输出功能。
图4 LabVIEW前面板
& &&在前面板中,有蓝牙串口号和波特率设置输入栏,有&退出程序&的按钮,还用界面设计的核心控件,前进、后退、左转、右转和停止按钮。这些按钮的&机械动作&,要通过右键快捷菜单,来设置为窄脉冲触发模式,如下图所示。
图5 LabVIEW前面板的按钮模式设置
& & 点击图5中右键快捷菜单中的&高级&自定义&选项,可以设计&按钮&控件的图形,我所设计的是&箭头&图示的按钮控件,关于前面板自定义控件和框图程序事件结构的应用方法,早期我曾经录制过视频教程,不妨看看。
视频网址:。
&&& 可以通过鼠标点击按钮来控制机器人,也可以把这些按钮与键盘上的快捷键关联起来,通过键盘来控制机器人。点选图5中的快捷菜单中的&高级&快捷键&选项。出现图6快捷键设置对话框。
图6 快捷键设置对话框
& & 例如,&左转&按钮的快捷键对话框中&切换&选择栏,我选择&Page Down&键,前面板中的&左转&按钮与键盘的&Page Down&键绑定在一起,这样按动键盘的按键与鼠标点击按钮控件的效果就一样了。
四、六足机器人的LabVIEW人机界面的框图程序编制
&& & 前后左右及停止控件按下时,会立即反馈到后台程序,即LabVIEW框图程序,这个程序会把字符串命令,通过无线串口下达给32路舵机控制板,进而控制机器人12个舵机动作。这次LabVIEW程序编制有两个要点:1、如何把字符串命令通过LabVIEW的VISA串口VI(子函数),写入到舵机控制板的存储卡;2、如何应用&事件结构&工具,把前面板的按钮触发事件与相应的字符串命令下达关联起来。(所有图片双击后,都可以放大看!)
图7 LabVIEW的框图程序
& & 图7的图形化编程设计是采用NI_VISA串口Serial函数来访问和控制串口的。VISA中的Serial函数库里包含VISA 配置串口、VISA 写入、VISA 读取、VISA 关闭等子函数。这些子函数的提取路径是:函数库&仪器I/O&串口,本设计用到的三个VISA串口VI是:VISA串口配置VI &VISA Configure Serial Port、VISA写入VI VISA Write、和VISA 关闭VI VISA Close。值得注意的是,您必须要安装了VISA串口驱动程序,这些VI才会起作用。
& & VISA串口配置函数的作用是完成串口参数的初始化设置,包括了串口号,波特率,奇偶校验、数据比特、是否启用终止符等。
& & VISA关闭函数VISA Close的作用是当程序停止之前,必须要把使用的串口号设备关闭,若不关闭,之后的其他程序就不能使用该设备。
& & VISA写入函数有三个输入端子,中间的输入端子是写入缓冲区入口,写入缓冲区支持的数据格式是字符串。
& &&那么到底什么样的字符串命令可以控制舵机控制板的存储卡中各动作组的动作序列文件?请先看看DF-USBSSC32控制板使用说明书。
说明书网址:。
& & 从说明书中,我学习到,如果要执行动作组0的文件,字符串命令是:PL 0 SQ 0&CR&,执行动作组1的文件,字符串命令是:PL 0 SQ 1&CR&,也就是SQ后面的数字就是动作组的编号。&停止&的字符串命令是:PL 0&CR&。&CR&表示回车符。
我把机器人前进、后退、左转和右转分成了4个动作组, &前进&动作组编号设为0,其它3个动作组的编号分别设置为1、2、3。
&& &从图7可以看出,在前面板中按下&前进&按钮,会执行&[1] 前进 值改变&事件分支,把字符串PL 0 SQ 0用&连接字符串&VI与回车符&CR&合并后,通过VISA写入VI,下达给舵机控制板。
&& &谈完字符串命令串口通信的问题,再来谈谈事件结构的应用方法。
事件结构是一个功能非常强大的编程工具,什么是事件呢?事件几乎可以是LabVIEW中&发生&的任何事情,例如,按下前面板布尔控件;数值控件值改变;鼠标光标进入程序窗口等。为啥需要事件结构,如果没有它的话,例如,为了检测用户是否按下按钮,就不得不在While循环中周期性地&轮询&按钮的值。使用它,就不需要&轮询&,因为LabVIEW程序会&知道&事件何时发生。软件的事件结构很像硬件的中断机制。
& & 在框图程序界面的空白处右击鼠标,就会出现函数库面板,接着在&编辑&&&结构&子面板里,找到&事件结构&模块,把它拖到程序编辑界面,再拉大模块方框,就可以建立一个初始事件结构。如8所示为事件结构的提取方法。
图8 事件结构的提取方法
& &&事件结构总是放在一个While循环结构中,如图7所示。为了可以连续处理事件,需要用While循环来一直执行事件结构。如果没有While循环结构,事件结构只能处理一次事件,就会退出程序。另外在程序中只能放置一个事件结构,如果想在程序中处理几种不同的事件,可以在单个事件结构中创建多个分支帧。
图9 添加事件分支
& & 在事件结构上右击鼠标,出现快捷菜单,选择&添加事件分支&&,随之会出现&编辑事件&对话框,如图10所示。
图10 编辑事件
&&&& 如果希望在&前进&按钮事件后,添加&后退&按钮事件,可以在图10里,找到&后退&事件源,选择事件触发条件是&值改变&。对于前面板中的前进、后退、左转、右转和停止按钮,我分别添加了对应的事件分支帧,在各分支帧里,把相应的字符串命令下达给下位机,32路舵机控制板。
& & 值得注意的是,要退出一个包含事件结构的While循环,必须把退出按钮放在事件结构中,如图11所示,还要为退出按钮配置专门的&值改变&事件分支帧。如果退出按钮放在事件结构外,事件结构将一直等待,无法退出程序运行。
图11 停止带事件结构的While循环的正确方法&
& & LabVIEW人机界面程序请下载:。
事件结构官方教学视频:。
五、结束语
& &LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。
& & LabVIEW采用逻辑线勾画出各函数图块之间的逻辑关系,来完成程序编写,所以用户感觉会十分直观生动,没有传统学术的距离感。而且LabVIEW也被称为虚拟仪器软件,因此您要编写一款人机界面软件,那用LabVIEW就再合适不过了。
旗下网站:
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号

我要回帖

更多关于 银辉智能蓝牙机器人 的文章

 

随机推荐