解决arm开发板直连电脑与连接 emqx cloud 许多问题

网络问题

电脑能ping通arm板,arm却ping不通电脑

将电脑防火墙关闭再试试能否ping通

arm板能ping通pc却ping不通外网

折腾很久,最后发现是arm不能通过电脑wifi网口与外界连接,必须得打开wlan适配器的共享功能:控制面板->网络和共享中心->
更改适配器
在这里插入图片描述

会发现以太网ip被强制配置成以上
所以arm板也要配置ip
1、配置IP
ifconfig eth0 192.168.137.2 up
2、配置网关
route add default gw 192.168.137.1

尝试ping 8.8.8.8 可以ping通

能ping ip但是不能ping 网址

ping baidu.com
发现无法连接

这是因为dns没有配置

将文件 /etc/resolv.conf 修改成以下内容

nameserver 114.114.114.114

nameserver 8.8.8.8

ping baidu.com
在这里插入图片描述
这样arm板才能有连接emqx云服务器的基础

连接emqx cloud失败问题

paho_mqtt_c 的 ssl 连接

由于我是最基础emqx云,要用ssl方式连接
在这里插入图片描述

  1. 修改 连接服务器地址部分

#define BROKER_ADDRESS "ssl://个人服务器地址:8883"

  1. 修改 创建客户端部分
   MQTTClient client;
   int rc;
   MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
   MQTTClient_willOptions will_opts = MQTTClient_willOptions_initializer;
   MQTTClient_message pubmsg = MQTTClient_message_initializer;
   	
   	/* 创建mqtt客户端对象 */
   /* ssl连接*/
   MQTTClient_SSLOptions ssl_opts=MQTTClient_SSLOptions_initializer;
   	/* 创建mqtt客户端对象 */
   if (MQTTCLIENT_SUCCESS !=
   		(rc = MQTTClient_create(&client,BROKER_ADDRESS, CLIENTID, MQTTCLIENT_PERSISTENCE_NONE, NULL)) )
   		{
   	printf("Failed to create ssl client, return code %d\n", rc);
   	rc = EXIT_FAILURE;
   	goto exit;

  1. 修改 创建连接部分
/* 连接MQTT服务器 */
	will_opts.topicName = WILL_TOPIC;	//遗嘱主题
	will_opts.message = "Unexpected disconnection";//遗嘱消息
	will_opts.retained = 1;	//保留消息
	will_opts.qos = 0;		//QoS0

	conn_opts.will = &will_opts;
	conn_opts.keepAliveInterval = 60;	//心跳包间隔时间
	conn_opts.cleansession = 0;			//cleanSession标志
	conn_opts.username = USERNAME;		//用户名
	conn_opts.password = PASSWORD;		//密码
	/* ssl连接*/
	ssl_opts.enableServerCertAuth=0;
	ssl_opts.sslVersion=MQTT_SSL_VERSION_DEFAULT;
	conn_opts.ssl=&ssl_opts;
	
	if (MQTTCLIENT_SUCCESS !=
			(rc = MQTTClient_connect(client, &conn_opts))) {
		printf("Failed to connect, return code %d\n", rc);
		rc = EXIT_FAILURE;
		goto destroy_exit;
	}

	printf("MQTT服务器连接成功!\n");

创建客户端返回错误代码-14

MQTTClient_create() return error(MQTTCLIENT_BAD_PROTOCOL:-14)

这是由于未链接启用 TLS 的库版本(paho-mqtt3cs,而不是 paho-mqtt3c),则会返回此错误代码

修改CMake
target_link_libraries(mqttClient PRIVATE paho-mqtt3cs)
重新CMake->make->上传可执行文件

在这里插入图片描述
最感动的一集😭(有解决问题的话点个👍吧🤔)

参考文章:
https://blog.youkuaiyun.com/guangtou7588/article/details/124030624

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值