0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

454398 来源:工程师吴畏 2019-08-02 10:42 次阅读

串行对象

尽管是一个旨在创建游戏的软件包,但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

    文章

    230

    浏览量

    33529
  • Arduino
    +关注

    关注

    184

    文章

    6425

    浏览量

    184768
收藏 人收藏

    评论

    相关推荐

    STM32F412G-DISCO怎样用MX生成fatfs的代码?

    STM32F412G-DISCO怎样用MX生成fatfs的代码? SD卡例程能跑,但mx生成的代码不能正常运行,我生成代码后是不是还要配置一些东西?(我生成后只写了测试代码) 问题解决了,虽然我不知道我为什么不能直接使用mx生成的代码去操作sd卡,但我通过复制粘贴例程的代码完成了测试。
    发表于 03-12 08:15

    常见串行通信协议 串行通信和并行通信的区别

    串行通信是一种通过单个传输线按照顺序传送数据的通信方式。在串行通信中,每个数据位按照顺序依次传输,一个接一个地发送到目标
    的头像 发表于 03-05 16:38 434次阅读
    常见<b class='flag-5'>串行</b><b class='flag-5'>通信</b>协议 <b class='flag-5'>串行</b><b class='flag-5'>通信</b>和并行<b class='flag-5'>通信</b>的区别

    串行通信和以太网通信,该怎么选才好?

    串行通信和以太网通信都通过有线传输数据,但各自有不同的用途。串行通信和以太网通信的主要区别在于:
    的头像 发表于 12-22 08:20 531次阅读
    <b class='flag-5'>串行</b><b class='flag-5'>通信</b>和以太网<b class='flag-5'>通信</b>,该怎么选才好?

    无线通信怎样用电磁波表示1和0

    为什么频率越高,能携带的信息就越多?以数字信号为例,信息就是一串串的1和0,所以先搞清楚怎样用电磁波表示1和0。
    发表于 12-05 14:44 595次阅读
    无线<b class='flag-5'>通信</b>:<b class='flag-5'>怎样用</b>电磁波表示1和0

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41

    怎样用32单片机测电压?

    怎样用32单片机测电压
    发表于 10-31 07:09

    怎样用现成的Eclipse插件来调试AT32系列芯片以及SLIB的配置范例

    本篇应用指南主要描述怎样用现成的Eclipse插件来调试AT32系列芯片以及SLIB的配置范例。本文档仅以AT32F403A为例进行说明,关于AT32F403A SLIB的详细说明,请详阅《AT32F403ASecurity Library Application Not
    发表于 10-24 07:41

    怎样用现成的Eclipse插件来调试AT32系列芯片

    拥有很高的灵活性,软件可以以Eclipse为架构开发自己的IDE。这边文档主要描述怎样用现成的Eclipse插件来调试AT32系列芯片。
    发表于 10-24 07:12

    PLC中怎样用X和Y两个轴走出直线轨迹?

    PLC中怎样用X和Y两个轴走出直线轨迹呢?那么这两个轴需要配合成速度成线性比例,位置和速度应该如何云运算呢?
    发表于 09-12 09:58 344次阅读
    PLC中<b class='flag-5'>怎样用</b>X和Y两个轴走出直线轨迹?

    MCU如何使用串行通信与外部外围设备进行通信

    在本节中,我们将了解MCU如何使用串行通信与外部外围设备进行通信。MCU充当嵌入式设备的“大脑”
    的头像 发表于 07-10 09:22 865次阅读
    MCU如何使用<b class='flag-5'>串行</b><b class='flag-5'>通信</b>与外部外围<b class='flag-5'>设备</b><b class='flag-5'>进行</b><b class='flag-5'>通信</b>

    是否可以通过使用AT固件进行通信的ESP-01进行通信

    ESP8266WiFiMesh 示例找到了适用于 Arduino IDE 的 ESP-12E 的板管理器。是否可以通过使用 AT 固件进行通信的 ESP-01 进行
    发表于 06-06 06:51

    怎样用示波器测试lin总线的波特率呢?

    怎样用示波器测试lin总线的波特率呢?有什么方法吗?
    发表于 05-09 11:22

    怎样用FPGA实现FSK调制解调呢?

    最近想做这方面的,怎样用FPGA实现FSK调制解调?但是我一点头绪都没有,哪位高手帮帮忙,讲解一下什么的
    发表于 05-08 17:34

    请问Proteus仿真软件中怎样用探针测电压呢?

    请问Proteus仿真软件中怎样用探针测电压呢?
    发表于 04-26 15:55

    怎样用74LS00实现两位数据输入的奇偶校验电路?

    怎样用74LS00实现两位数据输入的奇偶校验电路?
    发表于 04-26 11:25