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

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

重点是我遇到的问题。

  • 其实大家完全可以参考
    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;
}

你可能感兴趣的:(stm32)