安信可Ca-01 4G模块调试

背景

最近项目开发4G模块MQTT网关,采用的是安信可的4G Ca-01.
因为与之前的2G开发流程还是有些许不一样和独特之处,故而留此调试记录。

调试记录

1.初始化
模块会一直自查SIM卡状态,此可作为模块是否初始化成功完成标志,
以及空闲状态监测是否SIM卡异常;

若输出:“SIM REMOVED” 表示卡没插或者坏掉也是一种;
若输出:“SMS READY” 表示可以进行联网附着了;

2.联网附着,此步与普通AT联网有差异。
采用通用的那种,虽然会附着并登陆成功,但是订阅指令一直不成功,后来问官方技术支持,才知是如下联网流程。

AT+SAPBR=3,1,”CONTYPE“,"GPRS";
--> OK
AT+SAPBR=3,1,"APN","CMIOT";
--> OK
AT+SAPBR=1,1;
--> OK

3.TCP握手连接,MQTT配置登陆

AT+MIPSTART="123iot.com",1883;
--> CONNECT OK
AT+MCONFIG="1234567890","username","password";
--> OK
AT+MCONNECT=0,360;
--> OK

4.订阅主题

AT+MSUB="sub_topic_theme",0;
--> OK
5.发布主题
AT+MPUB="pub_topic_theme",0,0,"payload_data"
--> OK

根据手册内容提醒,注意发布的payload数据的双引号需要做转化为\22.
在这里插入图片描述
这也是使用这个模块遇到的一个相对棘手的问题,不过后来经同事提醒,在这样的一些文章标题中得到解决思路《替换一个字符数组中的所有空格符为“%20”》。

//**我做了更改并使用的是这个**
void str_replace(char *str)
{
	int len = strlen(str);//计算当前输入字符串长度
	
	int replace_num = 0;//
	
	char *end = NULL;
	char *end_new = NULL;
	char *pstr = str;//p指向字符串
	
	while (*str++ != '\0')//遍历字符串
	{
		if (*str == '\"')//索引到目标字符
		{
			replace_num++; //目标字符计数器+1
		}
	}
	end = str;//字符串指向p
	end_new =end + 2 * replace_num;//计算新长度 
	str=pstr;

	while (end != end_new)//当新结束指针和原结束指针不相等时 
	{
		if (*end == '\"')//发现"\"",变为"\22"
		{
			*end_new-- = '2';
			*end_new-- = '2';
			*end_new-- = '\\';
			 end--;
		}
		else
		{
			*end_new-- = *end--;
		}
	}
}

在这里插入图片描述
至此完成…OK!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值