3.3.3关键代码1解析传递参数。2初始化CAN FD接口。3发送端。4接收端。5校验接收到的数据信息。6打印接收到的数据信息。3.4 tcp_udp案例3.4.1案例功能本案例主要实现客户端(client)与服务端(server)的文本数据相互收发功能。本案例包含4个程序1tcp_serverTCP服务端测试程序。2tcp_clientTCP客户端测试程序。3udp_serverUDP服务端测试程序。4udp_clientUDP客户端测试程序。程序流程如下图所示。服务端和客户端程序均可在单板机、PC机Ubuntu系统上运行。本章节采用单板机本地回环测试即服务端与客户端程序均在单板机上运行通过127.0.0.1进行本地回环测试无需经过路由器。案例bin目录下的4个文件均为ARM端可执行程序。3.4.2 操作说明将本案例bin目录下的4个可执行程序拷贝至单板机文件系统。在Ubuntu中执行如下命令使用OpenSSH登录单板机文件系统如下图所示。Host# sudo ssh root192.168.12.9 //192.168.12.9为单板机IP地址请根据实际情况修改1TCP通信测试在可执行程序所在目录执行如下命令分别在单板机运行TCP服务端和客户端程序。2233为服务端程序指定的端口号客户端程序端口号参数需与服务端程序一致。Target# ./tcp_server 2233 //TCP服务端命令Host# ./tcp_client 127.0.0.1 2233 //TCP客户端命令程序执行后客户端将会连接服务端。在服务端(Target)输入字符串Tronlong按下回车键即可在客户端显示对应内容。在客户端(Host)输入字符串Hello Tronlong按下回车键即可在服务端显示对应内容如下图所示。2UDP通信测试在可执行程序所在目录执行如下命令分别在单板机运行UDP服务端和客户端程序。2233为服务端程序指定的端口号客户端程序端口号参数需与服务端程序一致。Target# ./udp_server 2233 //UDP服务端命令Host# ./udp_client 127.0.0.1 2233 //UDP客户端命令程序执行后客户端将不会自动连接服务端。服务端在收到客户端信息前无法得知客户端的存在因此需要客户端先向服务端发送信息。在客户端(Host)输入字符串Tronlong按下回车键即可在服务端显示对应内容。在服务端(Target)输入字符串Hello Tronlong按下回车键即可在客户端显示对应内容如下图所示。如需在PC机Ubuntu系统运行服务端或客户端程序请将案例src源码目录拷贝至Ubuntu工作目录。进入源码目录后执行make命令即可在当前目录下生成x86端可执行程序。在不同终端运行服务端或客户端程序的命令类似但127.0.0.1需使用服务器IP地址替代。Host# make cleanHost# make CCgcc3.4.3 关键代码以TCP通信程序为例。1tcp_client.c注意源码中的struct sockaddr_in、socket、connect、fgets、send、recv等数据结构和系统调用的使用。2tcp_server.c注意源码中的struct sockaddr_in、socket、connect、fgets、send、recv、bind、listen、accept等数据结构和系统调用的使用。4 Python开发案例我司提供的Python开发案例位于产品资料“4-软件资料\Demo\”路径下的python-demos目录下。案例脚本文件无需编译可基于我司提供的系统直接运行。4.1 Python开发案例本章节以简单案例演示Python的使用方法。系统支持Python3.10相关库位于文件系统/usr/lib/python3.10/目录下。4.2 led_flash案例4.2.1 案例功能本案例通过向单板机用户可编程指示灯LED设备节点反复交替写入1、0数值实现LED闪烁效果。LED点亮与熄灭时间均为0.5s。程序流程如下图所示。LED设备节点为/sys/class/leds/user-ledX/目录下的brightness。4.2.2 操作说明将案例目录下的led_flash.py脚本文件拷贝至单板机文件系统并在脚本文件所在目录执行如下命令查看程序参数信息。Target# ./led_flash.py -h执行如下命令运行脚本程序即可看到单板机上的LED进行闪烁。Target# ./led_flash.py可按下Ctrl C终止程序。4.2.3 关键代码1查找所有LED设备。2控制LED亮灭。5 MQTT通信案例我司提供的MQTT通信协议开发案例主要包括mqtt_client和mqtt_sinewave_pub位于产品资料“4-软件资料\Demo\mqtt-demos\”目录下。5.1 MQTT概述MQTTMessage Queuing Telemetry Transport消息队列遥测传输协议是一种基于发布/订阅(Publish/Subscribe)模式的“轻量级”通讯协议该协议构建于TCP/IP协议上由IBM在1999年发布。MQTT最大优点在于可以极少的代码和有限的带宽为连接远程设备提供实时可靠的消息服务。MQTT是轻量、简单、开放和易于实现的同时作为一种低开销、低带宽占用的即时通讯协议使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT具有如下特点1轻量可靠MQTT的报文格式精简、紧凑可在严重受限的硬件设备和低带宽、高延迟的网络上实现稳定传输。2发布/订阅模式(Publish/Subscribe)发布/订阅模式的优点在于发布者与订阅者的解耦实现异步协议。即订阅者与发布者无需建立直接连接亦无需同时在线。3为物联网而生提供心跳机制、遗嘱消息、QoS质量等级 离线消息、主题和安全管理等全面的物联网应用特性。4生态更完善覆盖范围广已成为众多云厂商物联网平台的标准通信协议。5.2 应用场景MQTT作为一种低开销低带宽占用的即时通讯协议可以极少的代码和带宽为联网设备提供实时可靠的消息服务适用于硬件资源有限的设备及带宽有限的网络环境。常见的应用场景如下1物联网M2M通信物联网大数据采集。2移动即时消息及消息推送。3智能硬件、智能家居、智能电器。4车联网通信电动车站桩采集。5智慧城市、远程医疗、远程教育。6电力能源、石油能源。5.3 Mosquitto工具安装Mosquitto是一款开源的MQTT消息代理服务器软件提供轻量级的、支持可发布/可订阅的的消息推送模式。我司提供的单板机文件系统已支持Mosquitto工具本文mqtt_client案例采用Mosquitto工具演示MQTT通信协议的通信功能。由于上位机Ubuntu系统作为通信对象因此需在Ubuntu终端执行如下命令安装Mosquitto工具出现提示时输入Y并按下回车即可。Host# sudo apt-get install mosquitto-clients5.4 mqtt_client案例5.4.1 案例说明本案例使用libmosquitto的API与MQTT代理服务器通信。基于MQTT通信协议实现发布和订阅消息功能。程序流程图如下图所示。5.4.2 案例测试本案例使用公网MQTT服务器与上位机Ubuntu Mosquitto工具通信。请通过网线将单板机千兆网口LAN1和上位机连接至公网确保可正常访问互联网。下表提供了可用的在线公共MQTT服务器可根据需要自行切换。单板机启动将案例bin目录下mqtt_client可执行文件拷贝至单板机系统的任意目录下执行如下命令查看程序参数说明。Target# ./mqtt_client --help1单板机发布/上位机订阅在上位机执行如下命令使用mosquitto_sub工具订阅MQTT主题。Host# mosquitto_sub -h broker-cn.emqx.io -p 1883 -t test/data参数解析-h指定MQTT服务器-p指定MQTT服务器端口-t定义MQTT主题可自定义命名在单板机系统执行如下命令发布消息至MQTT服务器。Target# ./mqtt_client -h mosquitto_sub -h broker-cn.emqx.io -p 1883 -t test/data -p 1883 -M publish -t test/data -m www.tronlong.com参数解析-hMQTT服务器-pMQTT服务器端口-M模式publish为发布subscribe为订阅-tMQTT主题可自定义命名-m发布的MQTT消息消息发布成功后上位机将从MQTT服务器接收到对应的消息。2单板机订阅/上位机发布在单板机文件系统执行如下命令订阅MQTT主题。Target# ./mqtt_client -h broker-cn.emqx.io -p 1883 -M subscribe -t test/data在上位机执行如下命令发布消息至MQTT服务器。Host# mosquitto_pub -h broker-cn.emqx.io -p 1883 -t test/data -m www.tronlong.com消息发布成功后单板机将从MQTT服务器接收到对应消息。由于篇幅过长等原因部分内容均不逐一展示如需获取完整版详细资料请关注创龙科技或者评论区留言感谢您的支持​