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

    文章

    237

    浏览量

    33852
  • Arduino
    +关注

    关注

    188

    文章

    6470

    浏览量

    187120
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino实现CAN总线通信

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 162次阅读

    基于Arduino的串口通信项目

    Arduino Mega。 USB数据线 :用于将Arduino开发板连接到计算机。 串口设备 :可以是另一个Arduino开发板、传感
    的头像 发表于 11-22 09:24 560次阅读

    如何使用Arduino实现CAN总线通信

    CAN总线(Controller Area Network)是一种多主控制的串行通信协议,广泛应用于汽车电子、工业自动化领域。它以其高可靠性、实时性和灵活性而受到青睐。Arduino
    的头像 发表于 11-12 10:09 891次阅读

    怎样用THS3201实现输出功率可调?

    怎样用THS3201实现输出功率可调?
    发表于 08-26 08:28

    OPA735加OPA333,怎样用TINA TI去仿真?

    当输入信号VG1从7.06V慢慢变化到7.22V时。 输出电压Vout的变化必须是接近线性变化的。我想知道我该怎样用TINA TI去仿真?怎样设置那个输入信号VG1才能达到我的目的。因为这个电压源好像
    发表于 08-02 08:39

    怎样用Arduino测试锂电池容量

    本文详细介绍了如何用Arduino测量锂电池的容量。并附有电路图和Arduino的程序代码。
    的头像 发表于 07-30 09:14 909次阅读
    <b class='flag-5'>怎样用</b><b class='flag-5'>Arduino</b>测试锂电池容量

    PLC如何与其他设备进行通信

    与其他设备进行通信,以实现数据的交换和指令的传递。本文将详细探讨PLC如何与其他设备进行通信,包
    的头像 发表于 06-27 14:07 1993次阅读

    PLC可以与哪些设备进行通信

    在工业自动化领域中,PLC(可编程逻辑控制器)扮演着至关重要的角色。它不仅可以通过内部存储的程序执行各种逻辑运算、顺序控制、定时、计数和算术操作,还具备强大的通信能力,能够与各种外部设备进行
    的头像 发表于 06-15 11:23 1375次阅读

    高速串行通信协议都有哪些

    高速串行通信协议是现代电子设备中用于数据传输的关键技术。这些协议在各种应用中发挥着重要作用,如计算机、移动设备、网络设备
    的头像 发表于 05-31 16:11 1109次阅读

    简单认识UART串行通信协议

    的数据通信,特别是在嵌入式系统、计算机外设以及微控制器场景中。本文将对UART串行通信协议进行详细的介绍,包括其基本原理、工作方式、参数设
    的头像 发表于 05-27 16:09 2128次阅读

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?
    发表于 05-07 06:55

    stm32f100怎样用重映射功能?

    的是stm32f100c8t6b芯片,现在想用将PB1映射为TIM1_CH3N,在调用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)时, GPIO_PinAFConfig和GPIO_AF_TIM1都没定义,stm32f100
    发表于 05-07 06:06

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

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

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

    串行通信是一种通过单个传输线按照顺序传送数据的通信方式。在串行通信中,每个数据位按照顺序依次传输,一个接一个地发送到目标
    的头像 发表于 03-05 16:38 1324次阅读
    常见<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>的区别

    怎样用CAD绘制漂亮电气图?

    线条采用多段线,线宽设为0.25。知道为什么?ISO在制图标准中规定,所有的图符都必须是2.5的倍数。这里的倍数可以是整数,也可以是小数,例如0.5、0.2、0.1等等。所以我绘图时将多段线的线宽设为0.25。
    的头像 发表于 01-02 15:15 764次阅读
    <b class='flag-5'>怎样用</b>CAD绘制漂亮电气图?