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

    文章

    256

    浏览量

    35209
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195988
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    并行与串行的基本通信方式

    1、并行通信方式:将数据字节的各位多条数据线同时进行传输,每位数据都需要一条传输线。 2、串行通信方式:
    发表于 11-24 06:36

    Xilinx FPGA串行通信协议介绍

    Xilinx FPGA因其高性能和低延迟,常用于串行通信接口设计。本文深入分析了Aurora、PCI Express和Serial RapidIO这三种在Xilinx系统设计中关键的串行通信
    的头像 发表于 11-14 15:02 1940次阅读
    Xilinx FPGA<b class='flag-5'>串行</b><b class='flag-5'>通信</b>协议介绍

    PLC联网有什么通信设备

    PLC(可编程逻辑控制器)联网时,可使用的通信设备涵盖多种类型,以下从有线通信设备、无线通信设备
    的头像 发表于 11-10 17:54 405次阅读

    通信接口模块的设计

    和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU控制器的系统总线上。在USB主机方式下,CH375还提供了串行通信方式,通过串行输入、
    发表于 10-29 07:00

    串行通信相关的基础知识

    串行通信是电子设备中数据交换的基石。最常见的串行通信协议有UART,SPI,I2C
    的头像 发表于 10-15 10:53 1694次阅读
    <b class='flag-5'>串行</b><b class='flag-5'>通信</b>相关的基础知识

    串行通信和并行通信的区别是什么

    串行通信和并行通信是数据传输的两种基本方式,它们在数据传输方式、线路设计、传输效率、应用场景等方面存在显著差异。以下是两者的详细对比: 一、数据传输方式 串行
    的头像 发表于 07-22 10:55 1793次阅读

    全面了解串行通信

    串行通信是一种数据传输方式,它将数据按 逐位顺序 (bit by bit)在一条传输线上发送和接收,与并行通信(同时传输多位数据)形成对比。以下是其核心概念、工作原理、特点及应用的详细解释: 一
    的头像 发表于 07-19 14:13 1160次阅读

    RS485串行通信协议介绍

    在上期我们介绍了RS232串行通讯,本期我们将进一步深入探讨另一种广泛应用于工业自动化和数据通信领域的串行通信标准——RS485。
    的头像 发表于 05-15 11:42 1158次阅读
    RS485<b class='flag-5'>串行</b><b class='flag-5'>通信</b>协议介绍

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    的发展,在Arduino出现以前,虽然也有很多公司在推广一些简单易用的可编程控制器,但是由于开发平台种类繁多,而且使用这些控制器基本上都需要对电子技术、数字逻辑、寄存器内容进行多方面的了解和学习,才能
    发表于 05-13 09:28

    串行通信接口SPI与QSPI的区别

    在嵌入式系统的世界里,选择正确的通信技术可以对项目的性能和可扩展性产生重大影响。让我们比较两个流行的串行通信接口:SPI(串行外设接口)和QSPI(四路SPI)。
    的头像 发表于 04-09 15:24 2574次阅读
    <b class='flag-5'>串行</b><b class='flag-5'>通信</b>接口SPI与QSPI的区别

    串行接口的工作方式有几种,串行接口的RXD1和TXD1是什么端口

    在数字通信领域,串行接口作为一种高效的数据传输方式,广泛应用于各种电子设备之间的数据交换。串行接口不仅具有结构简单、传输距离远、抗干扰能力强
    的头像 发表于 01-29 16:51 2100次阅读

    ad0804怎样得到2.5V基准电压?

    怎样得到2.5V基准电压 ,自己TL431得到2.5V后 接入参考端口,为什么测量数据不准确。
    发表于 01-10 06:38

    韩国企业Mythosia发布面向嵌入式行业的脚本驱动串行通信

    专注于嵌入式与固件开发的韩国企业Mythosia全新推出了一款基于脚本运行的串行通信监控程序“CRMT”。   CRMT设计为可应用于包括Arduino在内的多种嵌入式行业,能够同时提供串行
    的头像 发表于 12-30 11:20 1092次阅读
    韩国企业Mythosia发布面向嵌入式行业的脚本驱动<b class='flag-5'>串行</b><b class='flag-5'>通信</b>

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

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

    MTK6737M设置VREF输出2.5V,测试是否建立通信,VREF脚位没有电压变化,为什么?

    主控平台为MTK6737M,主控端自环测试正常。设置VREF输出2.5V,测试是否建立通信。上图是往07地址写入0x3c的波形。VREF脚位没有电压变化。 图二为ads7871各引脚电压 图三为ads7871硬件原理图
    发表于 12-23 08:23