怎样用ClickteamFusion2.5与Arduino等串行设备进行通信

发表于 2019-08-02 10:42:05 已收藏
赞(0) •  评论(0

怎样用ClickteamFusion2.5与Arduino等串行设备进行通信

发表于 2019-08-02 10:42:05

串行对象

尽管是一个旨在创建游戏的软件包,但Clickteam Fusion 2。5具有通信功能,包括TCP(MooSock)和串行端口(串行对象)。串行端口提供了一种简单而有效的通信方法,用于在主机PC和外部设备(如微控制器)之间传输数据。但是,串行端口大部分已从主板上移除,并由现在常见的USB端口(通用串行端口)取代。虽然USB支持高速和寻址技术,但它也非常复杂,只有少数业余爱好者敢于在项目中使用USB。实现USB的许多障碍之一是需要驱动程序,这在基于Windows的计算机上可能会非常棘手。然而,一些非常聪明的人创建了桥接IC,它实质上将一种总线协议转换为另一种。一种常用的桥接器是串行到USB转换器,允许串行设备通过USB端口与PC通信。

在Windows中,当串行到USB桥接器连接到USB端口时,它将其识别为虚拟串行端口。您可以通过设备管理器》端口找到串行端口名称。

怎样用ClickteamFusion2.5与Arduino等串行设备进行通信

如果您无法识别哪个PORT设备是Arduino,您可以断开设备,记下剩余的端口,然后重新连接设备。应该出现一个新端口,这是Ardunio的串口。就我而言,端口是COM7(USB-SERIAL CH340)。

现在我们知道了串口的名称,现在是时候进行融合应用了。首先加载Clickteam Fusion 2.5并创建一个新的空项目。加载第一帧,然后添加串行对象。如果找不到串行对象,则需要将其安装到扩展文件夹中。为此,首先单击此处下载串行对象,然后将zip文件的内容拖到Clickteam Fusion 2.5安装文件夹中。现在我们的框架中有一个串行对象,我们需要进入事件编辑器,然后创建新条件“Start of Frame”,然后添加事件“Open Serial Port”。

第一个此事件所需的参数是要打开的端口 - 在我们的示例中,这将是7(您不需要添加COM,只需要添加COM编号)。第二个参数是波特率,对于我们的项目,我们将使用9600的波特率。串行对象不允许其他功能,如奇偶校验和停止位,但这不应该是一个问题,因为默认值似乎是8位数据,一个停止位,没有奇偶校验位。虽然这适用于我们的简单项目,但更高级的项目可能希望能够动态连接到串行设备。执行此操作的最佳方法是使用计数器并按顺序连接到每个端口号。下一个事件是检查COM端口是否打开,如果是,发送一条简单的消息,例如“你的ID是什么?”我们想要连接的设备将被编程为使用唯一的ID进行响应当它收到这样的消息。我们的MMF2.5程序将检测到此响应,如果ID与预期的匹配,则它知道它已连接到正确的设备。如果没有,它可以递增计数器并继续连接到所有可能的端口,直到找到它所寻找的端口。

随着Arduino的连接,我们当按下其中一个按钮时,需要通过串口发送数据。通过在所需条件下使用“发送数据”事件,可以轻松完成此操作。我们发送的两个不同的数据包是“LED On Please”用于打开LED,“LED Off Please”用于关闭它。

当Arduino完成命令后,它将响应LED的状态。但是,println()函数还在字符串的末尾添加换行符,因此如果我们尝试使用该字符串,我们将永远无法使其正常工作。因此,我们必须清理数据并删除换行符(0x0D 0x0A)。为此,我们首先从串行对象条件“数据正在等待”开始(只要通过串行端口接收数据,就会触发此条件)。当这个条件触发时,我们执行三个事件:获取缓冲区中等待的字节数并存储该数字,存储接收到的字符串,并清理字符串。前两个很容易做,但清理数据需要一些计算。首先,我们使用Mid $(中间字符串),它可以从字符串中获取片段。字符串源设置为通过串行端口接收的字符串,起始字符设置为0(因为我们希望消息的开始),但字符数设置为接收的字节数减去2.这样,换行符被忽略!

我们程序的最后一步是将这个已清理的字符串与两条消息中的一条进行比较,结果,使LED图标显示或消失。/p》

Arduino

Arduino代码非常简单并使用Arduino提供的免费IDE(用C ++编写)编写。当我们的Arduino启动时,它会运行void setup()中的代码,这就是我们将LED端口配置为输出,设置串口以使用9600的波特率,然后关闭LED 。当主循环启动时,Arduino会不断检查串行缓冲区以查看是否有可用的数据。一旦数据可用,它就会将这些数据传输到一个名为“message”的字符串中,我们将其用于比较。第一次比较检查是否应该打开LED,第二次比较检查LED是否应该关闭,并且两次比较都相应地发送有关LED状态的信息。

声明:本文由入驻电子说专栏的作者撰写或者网上转载,观点仅代表作者本人,不代表电子发烧友网立场。如有侵权或者其他问题,请联系举报。侵权投诉

收藏

相关话题

评论(0)

加载更多评论
AG亚游集团相关的文章

分享到

QQ空间 QQ好友 微博
取消