Linux上位机开发

描述

第13章 Linux上位机开发

13.1 功能分析与最终源码

最终源码在如下目录里:

上位机

13.1.1 硬件连接

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

13.1.2 运行程序

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

上位机

解压后,它里面有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客户端可以如下设置:

上位机

在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"}

 

则可以看到如下界面:

上位机

2. 添加/设置点位

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

上位机

3. MQTT设置界面

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

上位机

3. 升级传感器

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

上位机

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

 

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分