MQTT 移植STM32+GPRS(串口透传)(六) +补充帖子

来源:互联网 发布:centos7 安装python 编辑:程序博客网 时间:2024/06/05 09:05

有点事情,赶快跟进,有童鞋在博客私信了,但是因为公司的有些….所以源码就不贴太多,,对于私信没回的,表示,对不起,对不起!

重点是我遇到的问题。

  • 其实大家完全可以参考
    https://github.com/eclipse/paho.mqtt.embedded-c/tree/master/MQTTPacket/samples 内的pub0sub1.c(用于接收)/qos0pub.c(用于发送)
  • 下面是具体文件
    https://github.com/eclipse/paho.mqtt.embedded-c/blob/master/MQTTPacket/samples/pub0sub1.c

  • https://github.com/eclipse/paho.mqtt.embedded-c/blob/master/MQTTPacket/samples/qos0pub.c

其实最大的问题可能就是transport_getdata()部分的移植问题,因为我们透传的方式不需要用到socket相关的东西,因此需要对recv()函数的进行重写,小凡我翻跑到linux下苦苦寻找,无奈没找到源码^…^ (可能自己太菜了,如果看到博客的有人能找到,十分感谢)
好了开始吧!

/*  处理方式简述:*   1、串口接收部分方式,串口中断接收,定时器超时认为是接收结束*   2、在串口中断处理函数中,每次进入串口中断都把定时器的计数值清零(注意一定是清零成功!)*   3、定时器向上计数,每隔50ms触发中断。中断函数中的处理:当进入中断处理函数后,改变全局变量(接收完成的标志位),关闭定时器中断*   4、在串口接收到数据时打开定时器的中断
*//**   函数名:transport_sendPacketBuffer()*   作用:替代原来的同名函数,修改参数去掉socket参数*       usart2_send_nbyte串口发送n个字节数*   返回值:无效(因为串口发送)*/int transport_sendPacketBuffer(unsigned char* buf, int buflen){    int rc = 0;    usart2_send_nbyte(buf, buflen);    return rc;}/**   作用: 替代原来的transport_getdata函数,因为没有用到socket*   说明:使用方式与原函数一致=recv();*   参数说明:*       USART2_RX_BUF[]是串口接收的缓存区*       read_buf_len 串口是读到的实际字节数*   返回值:非常重要!自行看源码吧*/int transport_getdata(unsigned char* buf, int count){    memcpy(buf, (void*)&USART2_RX_BUF[read_buf_len], count);    read_buf_len += count;    return count;}
0 0