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

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

3天内不再提示

Linux上位机开发

瑞萨MCU小百科 来源:瑞萨MCU小百科 2025-01-08 15:28 次阅读

第13章 Linux上位机开发

13.1 功能分析与最终源码

最终源码在如下目录里:

879321c0-cd76-11ef-9310-92fbcf53809c.png

13.1.1 硬件连接

参考《11.5 Modbus RTU客户端编程与实验》连接TTL转485模块,连接Modbus RTU传感器。在板子上先插上USB鼠标,连接HDMI显示器,然后启动开发板。

13.1.2 运行程序

把网盘中如下可执行程序放到板子上,假设放在/mnt目录下:

87ac29ea-cd76-11ef-9310-92fbcf53809c.png

解压后,它里面有2个目录:mnt里存放应用程序,usr目录下存放库文件。在板子上执行如下命令:

左右滑动查看完整内容

# cd /mnt
# tar xjf apps.tar.bz2
# ls
mnt usr
# cd apps
# cp -rfd * /

移除出厂自带的GUI,在开发板执行如下命令:

左右滑动查看完整内容

# mv /etc/systemd/system/myir.service /home/root
# reboot

然后运行如下命令启动程序:

左右滑动查看完整内容

# cd /mnt
# echo 0 > /proc/sys/kernel/printk // 关闭内核打印信息
# ./modbus_server_tcp 127.0.0.1 & // 运行模拟 modbus rtu 协议传感器的程序
# ./control_center server & // 运行后台程序
# ./demo_lv_modbus_tool & // 运行前台程序
# ./mqtt_client_app // 运行 MQTT 程序

执行上述命令后,可以在HDMI界面看到操作界面。参考《13.1.4界面》,使用鼠标在控制界面上添加点、设置MQTT信息。然后就可以通过界面观察、控制传感器了。

要使用MQTT,需要先学习《13.6 MQTT开发基础》:

①在开发板界面设置MQTT信息

②启动MQTT Broker

③MQTT客户端可以如下设置:

87c44cfa-cd76-11ef-9310-92fbcf53809c.png

在MQTT客户端,订阅“iot/up”主题的信息。

要控制传感器,需要在显示屏控制界面添加“点”,才能发布“iot/down”主题的信息去控制这个点,信息格式如下(注意大小写):

左右滑动查看完整内容

{"port_info": "/dev/ttySC4,115200,8N1","dev_addr": 3,"reg_addr": 0,"reg_type": "0x",
"value": 0}

13.1.3 从源码编译程序

先配置环境,在Ubuntu执行:

左右滑动查看完整内容

$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux

1. 编译libev库

操作命令如下:

左右滑动查看完整内容

$ tar xjf libev.tar.bz2
$ cd libev/
$ ./configure --prefix=$PWD/tmp --host=aarch64-poky-linux CFLAGS="-mtune=cortex-a55
-fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-s
ecurity -Werror=format-security --sysroot=/opt/remi-sdk/sysroots/a
arch64-poky-linux"
$ make -j 16
$ make install
$ ls tmp/
include lib share
$ sudo cp -rf tmp/include/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/include/
$ sudo cp -rfd tmp/lib/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/lib64/

把库复制到开发板上,在Ubuntu上执行如下命令:

左右滑动查看完整内容

$ scp tmp/lib/*so* root@192.168.5.9:/usr/lib64/

2. 编译jsonrpc库

操作命令如下:

左右滑动查看完整内容

$ tar xjf jsonrpc-c.tar.bz2
$ cd jsonrpc-c/
$ autoreconf -i
$ ./configure --prefix=$PWD/tmp --host=aarch64-poky-linux CFLAGS="-mtune=cortex-a55
-fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-s
ecurity -Werror=format-security --sysroot=/opt/remi-sdk/sysroots/a
arch64-poky-linux"
$ make -j 16
$ make install
$ ls tmp/
include lib
$ sudo cp -rf tmp/include/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/include/
$ sudo cp -rfd tmp/lib/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/lib64/

把库复制到开发板上,在Ubuntu上执行如下命令:

左右滑动查看完整内容

$ scp tmp/lib/*so* root@192.168.5.9:/usr/lib64/

3. 编译libmodbus库

参考《11.4.1 编译安装》。

4. 编译MQTT库

参考《13.6.5 MQTT测试程序上机实验》。

5. 编译LVGL程序

操作命令如下:

左右滑动查看完整内容

$ tar xjf demo_lv_modbus_tool.tar.bz2
$ cd demo_lv_modbus_tool/
$ mkdir build
$ cd build
$ cmake ..
$ make -j 16
$ ls ../bin/
demo_lv_modbus_tool

6. 编译后台程序

操作命令如下:

$ tar xzf control_center.tar.bz2
$ cd control_center
$ make

生成“control_center”可执行程序。

7. 编译MQTT程序

操作命令如下:

$ tar xjf mqtt_client.tar.bz2
$ cd mqtt_client
$ make

生成“mqtt_client_app”可执行程序。

8. 编译Modbus TCP程序

操作命令如下:

左右滑动查看完整内容

$ tar xjf modbus_client.tar.bz2
$ cd modbus_client
$ make

生成“modbus_server_tcp”可执行程序。

13.1.4 界面

在前台程序,可以增加、修改、删除“点”(“点”是工业控制领域的概念,参考《13.2.2前后台的交互》)。可以读取“点”、写“点”。还可以设置MQTT参数、升级某个传感器程序。

1. 整体界面

运行程序后,会根据“/etc/control.cfg”生成界面。第1次运行程序是没有“/etc/control.cfg”文件,你在屏幕上看到的是空白界面。如果“/etc/control.cfg”内容如下:

左右滑动查看完整内容

{"port_info": "/dev/ttySC4,115200,8N1", "dev_addr": 3, "reg_addr": 0, "reg_type": "0x
", "period": 300}
{"port_info": "/dev/ttySC4,115200,8N1", "dev_addr": 3, "reg_addr": 1, "reg_type": "3x
", "period": 300}
{"port_info": "/dev/ttySC4,115200,8N1", "dev_addr": 3, "reg_addr": 0, "reg_type": "3x
", "period": 300}
{"broker": "192.168.5.10", "port": 1883, "client_id": "dev_019999", "user": "100ask99
", "password": "100asktech99", "publish": "/iot/up", "subcribe": "
/iot/down"}

则可以看到如下界面:

87dfdaa6-cd76-11ef-9310-92fbcf53809c.png

2. 添加/设置点位

点击右上角的加号,可以添加一个“点位”,界面如下(可以选择使用RTU协议或TCP协议,可以设置读取周期,可以设置设备地址、寄存器地址、寄存器类别):

88015078-cd76-11ef-9310-92fbcf53809c.png

3. MQTT设置界面

点击“MQTT Setting”后,设置界面如下:

882acf84-cd76-11ef-9310-92fbcf53809c.png

3. 升级传感器

点击“Update”后,界面如下:

88473e26-cd76-11ef-9310-92fbcf53809c.png

本界面仅供演示,并未实现升级功能:因为传感器如何升级,取决于传感器内部实现,我们无法得知升级方法。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2552

    文章

    51219

    浏览量

    754616
  • Linux
    +关注

    关注

    87

    文章

    11320

    浏览量

    209834
  • 源码
    +关注

    关注

    8

    文章

    646

    浏览量

    29280
  • 上位机
    +关注

    关注

    27

    文章

    944

    浏览量

    54882

原文标题:Linux上位机开发 - RZ MPU工业控制教程连载(47)

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    linux环境下使用QT开发上位控制CH9326的io口,代码编译不通过是为啥呢?

    本人最近遇到了这个问题。根据官方文档中的步骤来进行Linux上位开发,代码编译不通过提示【undefined reference to ch9326_find()】还有就是在使用链
    发表于 07-11 07:03

    上位应用开发与综合实训(上)

    上位应用开发与综合实训(上)
    发表于 09-28 10:03 0次下载

    上位应用开发与综合实训(下)

    上位应用开发与综合实训(下)
    发表于 09-28 10:05 0次下载

    linux的驱动开发——基于linux的单片开发简介

    1.基于linux的单片开发和裸机开发的区别\qquad单片的裸机开发和基于
    发表于 11-13 11:21 7次下载
    <b class='flag-5'>linux</b>的驱动<b class='flag-5'>开发</b>——基于<b class='flag-5'>linux</b>的单片<b class='flag-5'>机</b><b class='flag-5'>开发</b>简介

    纳米软件分享:上位软件是什么?快速上手上位开发软件分享

    上位软件在测试测量行业应用十分广泛,但对于很多新人来说上位软件是什么,他们可能不甚了解。今天就和大家来聊一聊上位
    的头像 发表于 11-28 17:03 4339次阅读
    纳米软件分享:<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>软件分享

    上位软件开发流程是怎样的?上位开发软件分享

    随着科技的发展,上位软件开发已经成为当今社会的一个重要组成部分。上位软件开发是一种技术,它可
    的头像 发表于 03-28 16:20 3063次阅读
    <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><b class='flag-5'>开发</b>软件分享

    上位开发新手指南(二)上位通信

    上位开发中,串口通信和TCP通信是两种常见的通信方式。串口通信是指通过串口将数据发送和接收到控制器或其他外设中,TCP通信则是通过网络将 数据传输到远程设备中。下面介绍一下为什么学习串口通信和TCP通信在
    发表于 05-08 11:37 8次下载
    <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>通信

    上位和下位有什么区别 常用上位软件开发工具介绍

    上位和下位分别指的是什么呢?又有哪些区别呢?以及上位和下位之间的关系又是怎样的呢?常用的
    发表于 05-08 10:21 0次下载
    <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>软件<b class='flag-5'>开发</b>工具介绍

    VS上位开发之曲线显示

    VS上位开发——曲线显示目录VS上位开发——曲线显示 一、新建项目 二、添加ZedGraph
    发表于 05-08 09:48 2次下载
    VS<b class='flag-5'>上位</b><b class='flag-5'>机</b><b class='flag-5'>开发</b>之曲线显示

    上位开发要学什么 上位开发是做什么的

    上位开发需要学习以下技术:   编程语言:常用的编程语言包括C/C++、Python、Java等,不同的编程语言适用于不同的应用场景。在工控行业中,C/C++是主流语言,精通C/C++语言
    的头像 发表于 05-08 15:18 1.2w次阅读

    上位开发是什么意思 上位开发工作主要内容

    上位开发是为了实现工控设备的控制、实时数据采集和处理等功能,使用计算机、各种传感器和执行器等智能设备,开发出一套可靠、高效的自动化控制系统。通常
    的头像 发表于 05-08 15:20 1.5w次阅读

    上位软件定制开发如何选择服务商

    的执行。 上位的硬件一般是工业电脑或者叫工控上位机上运行的操作系统一般可以是Windows、WinCE、linux等,根据不同的性能
    发表于 05-09 10:02 0次下载
    <b class='flag-5'>上位</b><b class='flag-5'>机</b>软件定制<b class='flag-5'>开发</b>如何选择服务商

    上位和FPGA开发板--串口通信实验

    首先,上位发送数据给FPGA开发板;然后,FPGA开发板收到数据,再回发给上位
    发表于 05-11 18:26 12次下载
    <b class='flag-5'>上位</b><b class='flag-5'>机</b>和FPGA<b class='flag-5'>开发</b>板--串口通信实验

    上位软件开发培训

    上位开发要学什么 上位开发主要是指针对某个硬件或设备,使用软件
    发表于 06-05 09:58 1725次阅读

    上位软件开发用什么语言

    上位软件开发是指开发用于与下位(如PLC、单片等)进行通信、控制和数据处理的计算机软件。
    的头像 发表于 06-06 10:44 1970次阅读