Page Title

第十课 WU-Link之间的互联互控——抽签与抢答程序


2019-08-01 14:01:38

WU-Link不仅可以与Scratch互联互控,也可以在WU-Link之间互联互控。今天我们将使用两块甚至多块WU-Link学习制作抽签抢答程序。

 

模块与指令


要制作本课的范例作品,需要使用以下新的指令:

物联网-发送字符串指令:

blob.png

属于物联网类别指令;使用这个指令可以将指定的字符串发送给指定MAC地址的WU-Link

指令的第一个参数是需要发送的字符串;第二个参数是接收字符串的另一块WU-LinkMAC地址。

 

物联网-发送数值指令:

blob.png

属于物联网类别指令;使用这个指令可以将指定的数值发送给指定MAC地址的WU-Link

指令的第一个参数是需要发送的数值;第二个参数是接收数值的另一块WU-LinkMAC地址。

 

物联网-从消息中读取数指令:blob.png

属于物联网类别指令;使用这个指令可以从获取的物联网消息中读取数。

指令的参数就是从物联网获取的消息,一般使用物联网类别中的物联网读取消息指令。


 

作品制作


我们将通过制作三个范例来了解如何在WU-Link之间进行互联互控。范例一是一块WU-Link作为发送端,向另一块接收端WU-Link发送消息;范例二也是一块WU-Link作为发送端,但可以向多块接收端WU-Link发送消息;范例三则是多块WU-Link作为发送端,向一块接收端WU-Link发送消息。

 

第一步:一块WU-Link向另一块WU-Link发送消息

要编写一块WU-Link向另一块WU-Link发送消息的程序,需要两块WU-Link:一块运行发送端程序,将消息发送出去;另一块运行接收端程序,接收并将消息显示出来。

具体可以按以下步骤编写程序:

1.  编写发送端初始化脚本。

使用点阵屏清除指令清除WU-Link点阵屏、使用点阵屏显示文本指令显示“Go!”,表明程序已经开始运行。具体初始化程序代码如下图所示:

blob.png

2.  编写发送端主程序脚本。

重复执行指令中进行条件判断:如果按下了板载的按键“B”,就通过网络向指定MAC地址的另一块WU-Link发送字符串“Hello”;然后清除点阵屏、显示“OK”,表明消息已经发送完成;最后延时1秒、重新清除点阵屏、显示“Go!”,重新处于判断有没有按下按键的状态。


注意:实际编写程序时,必须将物联网发送字符串指令中的第二个参数,更改为实际用于接收信息那块WU‐

LinkMAC地址。


具体主程序代码如下图所示:


blob.png

 


 

3.  编写接收端初始化脚本。

同样也是清除WU-Link点阵屏、显示“Go!”,表明程序已经开始运行。具体初始化程序代码如下图所示:

blob.png

4.  编写接收端主程序脚本。

重复执行指令中进行条件判断:如果检测到网络上有发给自己的消息,就清除点阵屏、显示从服务器上读取的消息;然后延时1秒、重新清除点阵屏、显示“Go!”,重新处于判断有没有检测到消息的状态。

具体主程序代码如下图所示:

blob.png

试一试:

1.  将以上程序分别下载到用于发送和用于接收的两块WU-Link中,然后按下发送端”WU-Link的按键“B”看看接收端”WU-Link上是否显示了1秒的“Hello”?

2.  除了发送文本信息,能不能发送数字信息?程序应该如何修改?

 

第二步:一块WU-Link向多块WU-Link发送消息

一块WU-Link向多块WU-Link发送消息,最典型的应用就是抽签程序。

下文步骤中制作的这个抽签程序共使用了四块WU-Link:其中一块WU-LinkWU-Link由教师使用,运行发送端序,将随机产生的数——也就是抽中学生的编号消息发送出去;另外三块WU-Link由三位学生使用,运行接收

程序,接收并显示教师WU-Link发送过来的编号消息。

1.  编写教师使用的发送端”“初始化脚本。

首先单击变量类别中的创建变量按钮,创建一个名为“SN”的变量,用于存贮学生的编号;然后在初始化脚本中清除WU-Link点阵屏、显示“Go!”,使用声明并赋值指令声明“SN”变量的数据类型为整数、赋值 “0”

具体初始化程序代码如下图所示:

blob.png

2.  编写教师使用的发送端”“主程序脚本。

重复执行指令中进行条件判断:如果按下了板载的按键“B”,就在“123”这三个数中产生一个随机数(也就是在三个学生中抽中一个学生)并将这个数赋值给“SN”变量;然后在点阵屏上显示这个数并将这个数  发送到三块指定MAC地址的WU-Link上;最后延时1秒以后清除点阵屏、重新显示“Go!”,等待重新按“A”按键   再次抽签。


注意:实际编写程序时,应该根据具体参与抽签的WU‐Link数量修改随机数指令参数、增删物联网发送数指    令的数量、将这些指令中的第二个参数更改为实际用于接收消息WU‐LinkMAC地址。


具体主程序代码如下图所示:


blob.png

 

 

3.  编写学生使用的接收端初始化脚本。

同样也是先创建“SN”变量,用于存贮从网络上接收到编号消息;然后在初始化脚本中清除WU-Link点阵屏、显示“Go!”、声明SN”变量的数据类型为整数并赋值为“0”


 

具体初始化程序代码如下图所示:

blob.png

4.  编写学生使用的接收端”“主程序脚本。

重复执行指令中进行条件判断:如果检测到网络上有发给自己的消息,就使用物联网-从消息中读取数值物联网-读取消息指令,从网络上读取的消息中读取数值,并把这个数赋值给“SN”变量;然后再对“SN”变量进行判断,当它不等于”“0”时(说明从网络上接收到的是抽中的学生编号),清除点阵屏、显示“SN”变量。

具体主程序代码如下图所示:

 

blob.png

试一试:

与两个以上的同学合作(合作的人数越多越有趣),确定一块WU-Link用于抽签、发送抽中的数,另外几块WU-Link用于接收、显示抽中的数,然后根据实际情况修改范例中的指令参数、将修改后的程序分别下载到  这些WU-Link中,看看发送端接收端WU-Link是否运行正常。

第三步:多块WU-Link向一块WU-Link发送消息

多块WU-Link向一块WU-Link发送消息,最典型的应用就是抢答程序。

下文步骤中制作的这个抢答程序也使用了四块WU-Link:其中三块WU-Link由三位学生使用,运行发送端程序,当学生按下发送按键时向教师所用的WU-Link发送信息、参与抢答;最后一块WU-Link由教师使用,运行接收端程序,用于接收判断学生发送过来的消息、显示抢答成功的学生编号。

1.  编写学生使用的发送端”“初始化脚本。

也是先创建一个名为“SN”的变量,用于存贮学生编号;然后在初始化脚本中清除WU-Link点阵屏、显“Go!”、声明变量SN”的数据类型为整数并赋值为“1”


 


注意:实际在将以上程序下载到WU‐Link之前,还必须修改“SN”变量的赋值。第一块学生使用的WU‐Link“SN”变量赋值为“1”、第二块学生使用的WU‐Link“SN”变量赋值为“2”……(依次类推)


具体初始化程序代码如下图所示:


blob.png

 

2.  编写学生使用的发送端”“主程序脚本。

重复执行指令中进行条件判断:如果按下了板载的按键“B”,就将“SN”变量值发送到指定MAC地址的WU-

Link上(也就是教师所用的WU-Link),然后清除点阵屏、显示所发送的“SN”信息;如果按下了板载的按“A”,就清除点阵屏、显示“Go!”,重新开始参与抢答。

具体主程序代码如下图所示:


注意:实际编写程序时,必须将物联网发送字符串指令中的第二个参数,更改为实际用于接收信息那块WU‐

Link(也就是教师所用的WU‐Link)的MAC地址。


blob.png

 

3.  编写教师使用的接收端”“初始化脚本。

先创建两个变量——“SN”变量和“Flag”变量,“SN”变量用于存贮从学生WU-Link上接收到的编号消息、“Flag”变量用于标记当前是否处于学生抢答环节;然后在初始化脚本中清除点阵屏、显示“Go!”文本信息、声明  所创建的两个变量的数据类型都是整数、同时都赋值为“0”

具体初始化程序代码如下图所示:


 

blob.png

4.  编写教师使用的接收端”“主程序脚本。

重复执行指令中进行条件判断:如果检测到网络上有发给自己的消息,就使用物联网-从消息中读取数值物联网-读取消息指令,从读取的消息中读取出数值,并把这个数赋值给“SN”变量;然后再进行条件  判断:如果SN”变量的值不等于”“0”(说明接收到的消息中有学生编号)、同时Flag”变量的值等于”“1”(说明当前处于抢答状态),那么清除点阵屏、显示SN”变量(也就是成功抢答学生的编号)、赋“Flag”变量为“0”(也就是结束抢答、不接收学生发过来的消息)。最后再增加一个条件判断指令:如果按  下了板载的按键“A”,就清除点阵屏、显示“Go!”,重新赋值“SN”变量为“0”(清除原有消息数据)、“Flag”变量为“1”(设置处于抢答状态),重新开始抢答。

具体主程序代码如下图所示:

blob.png

试一试:

与两个以上的同学合作(合作的人数越多越有趣),确定一块WU-Link接收消息、判断抢答结果,另外几块WU-Link用于发送消息、参与抢答;然后根据实际情况修改范例中的指令参数、将修改后的程序分别下载到这些WU-Link中,看看抢答程序是否运行正常。


拓展与思考


能不能对抢答程序进一步完善,由教师统一控制整个抢答过程:

1.  教师端和学生端初始化完成后都在点阵屏上显示“REDY”,同时蜂鸣器鸣叫一声表明程序初始化完成;

2.  教师端按板载按键“A”以后,教师端和学生端WU-Link点阵屏都显示“Go!”、蜂鸣器鸣叫两声表明可以开始抢答;

3.  开始抢答以后,学生端可以按板载按键“B”参与抢答,按下后点阵屏显示“OK”、蜂鸣器鸣叫一声表明抢答完成,已经向教师端发送消息;

开始抢答以后,教师端接收学生发送的消息并进行判断,当接收到第一个有效抢答学生的编号时结束抢答,  在教师端和学生端WU-Link点阵屏都显示抢答成功学生的编号,同时蜂鸣器鸣叫三声表明抢答结束。