华为摄像头(海思3519A/3516D)编译安装:paho.mqtt.embedded-c

1、简介

介绍如何使用Paho提供的嵌入式C语言MQTT开源工程交叉编译(海思3519A/3516D),并进行消息收发测试。https://github.com/eclipse/paho.mqtt.embedded-c

2、解压sdk

unzip paho.mqtt.embedded-c-master.zip

目录 /media/sf_share/code/mqtt 下得到解压后文件:paho.mqtt.embedded-c-master

3、建立编译目录

进入目录:/media/sf_share/code/mqtt/paho.mqtt.embedded-c-master
建立编译文件:mkdir build

4、编译执行脚本

进入目录:/media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build
建立脚本:touch cmake.sh
编辑脚本:vi cmake.sh
脚本内容:

cmake -DCMAKE_C_COMPILER=arm-himix200-linux-gcc -DCMAKE_CXX_COMPILER=arm-himix200-linux-g++ ..

执行脚本:./cmake.sh

5、代码编辑、编译与执行

编译代码位置:/media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build
编译命令:make
重编译清除命令:rm -rf !(cmake.sh)
代码编辑位置:/media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/MQTTClient/test
执行文件位置:/media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build/MQTTClient/test
注意:执行文件是只能在目标机(海思3519A/3516D)运行的文件。

6、目标机(海思3519A/3516D)运行库建立

在目录 /home/nfs 下建立文件:mkdir lib_mqtt
进入目录:/home/nfs/lib_mqtt
拷贝运行库:

cp /media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build/MQTTPacket/src/libMQTTPacketClient.so ./
cp /media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build/MQTTPacket/src/libMQTTPacketServer.so ./
cp /media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build/MQTTPacket/src/libpaho-embed-mqtt3c.so ./
cp /media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build/MQTTClient-C/src/libpaho-embed-mqtt3cc.so ./

获得4个运行库:

libMQTTPacketClient.so  
libMQTTPacketServer.so  
libpaho-embed-mqtt3cc.so  
libpaho-embed-mqtt3c.so

7、目标机(海思3519A/3516D)验证测试

mosquitto代理主机准备:
代理主机地址:192.168.1.77
检查mosquitto是否启动:ps ax
得到:

632 ?        Ss     0:04 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

目录 /etc/mosquitto/conf.d 下编辑文件 mosquitto.conf
设置代理端口为:1813
重启mosquitto
目录 /media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/MQTTClient/test 下文件 test1.cpp:

    344 int test1(struct Options options)
    345 {
    346         MQTT::QoS subsqos = MQTT::QOS2;
    347         int rc = 0;
    348         const char* test_topic = "C client test1";
    349 
    350         fprintf(xml, "<testcase classname=\"test1\" name=\"single threaded client using receive\"");
    351         global_start_time = start_clock();
    352         failures = 0;
    353         MyLog(LOGA_INFO, "Starting test 1 - single threaded client using receive");

获知订阅主题是:“C client test1”
代理主机打开订阅命令,用于目标机发送过来的消息:

mosquitto_sub -h localhost -p 1813 -t "C client test1" -v

目标机准备:
目录 /media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/MQTTClient/test 下编辑 test1.cpp,修改代理主机地址和端口:

    44 struct Options
     45 {
     46         char* host;         /**< connection to system under test. */
     47   int port;
     48         char* proxy_host;
     49   int proxy_port;
     50         int verbose;
     51         int test_no;
     52         int MQTTVersion;
     53         int iterations;
     54 } options =
     55 {
     56 //      (char*)"localhost",
     57 (char*)"192.168.1.77",
     58   1813,
     59         (char*)"localhost",
     60   1885, 
     61         0,
     62         0,
     63         4,
     64         1,
     65 };     

回到目录 /media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build 下,重新编译:

rm -rf !(cmake.sh)
./cmake.sh
make

目录 /media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build/MQTTClient/test 下执行文件是:
testcpp1,把它拷贝到目标机nfs挂载目录:cp testcpp1 /home/nfs/
此时执行文件在目标机的位置是:192.168.1.69:/mnt/nfs
测试:
目标机配置执行加载库环境:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs/lib_mqtt

执行:./testcpp1
此时,如果正常的话,订阅端收到如下消息:

C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long
C client test1 a much long

大功告成!!

mqtt环境的搭建记录,为后面做铺垫:mqtt + protobuf

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Paho.mqtt.embedded-c是一个开源的嵌入式C语言MQTT工程,用于在嵌入式设备上进行MQTT消息的收发。你可以在GitHub上找到该项目的代码和文档\[2\]。要使用Paho.mqtt.embedded-c,你需要进行交叉编译,并在目标机(如海思3519A/3516D)上进行测试。首先,在目录/home/nfs下创建一个名为lib_mqtt的文件夹,并进入该目录\[1\]。然后,将所需的运行库文件复制到该目录中,包括libMQTTPacketClient.so、libMQTTPacketServer.so、libpaho-embed-mqtt3c.so和libpaho-embed-mqtt3cc.so\[1\]。接下来,解压Paho.mqtt.embedded-c的SDK文件,并进入解压后的目录\[2\]。在编译代码之前,你需要确保你的代码位于/media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/MQTTClient/test目录下\[3\]。然后,使用make命令编译代码\[3\]。执行文件将生成在/media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build/MQTTClient/test目录下\[3\]。请注意,执行文件只能在目标机(如海思3519A/3516D)上运行\[3\]。最后,你需要在目标机上建立运行库\[3\]。 #### 引用[.reference_title] - *1* *2* *3* [华为摄像头海思3519A/3516D编译安装paho.mqtt.embedded-c](https://blog.csdn.net/weixin_41783910/article/details/111935434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值