初级会员

- 积分
- 181
- 金钱
- 181
- 注册时间
- 2019-5-12
- 在线时间
- 35 小时
|
本帖最后由 早起的达仙僧 于 2019-9-12 16:33 编辑
近期在学习HAL库的串口收发,用在实际GPS定位项目中。
首先进行模块测试,电脑与GPS模块ME3616直接串口通信(经232-ttl转换),在下发一句单次定位命令后,模块会不断回传定位信息直至定位成功。并且如果超过60s,模块会回传time out信息。
然后写了个单片机的程序,目的是通过单片机发送一句单次定位命令给模块,然后接收信息并通过串口助手打印出来,代码片段如下:
- <P>void ME3616_GNSS()
- {
- char buf[256];
- char str_len[5];
- volatile uint8_t status;
- int size;
- char ch[90];
- //启动单次定位模式
- HAL_Delay(250);
- char at_zgrun[]="AT+ZGRUN=1\r\n";
- HAL_UART_Transmit(p_hlpuart1, at_zgrun, strlen(at_zgrun), 1000);
- </P>
- <P> </P>
- <P>//不断读取接收数据
- while(1)
- {
- memset(ch,0,90);
- HAL_Delay(1000);
- status=HAL_UART_Receive(p_hlpuart1, ch, 90, 100);
- printf("zgrun:%s,%d\r\n",ch,status);//自定义过了,可以通过串口助手监控
- }
- }</P>
复制代码 但是串口助手上面显示的内容却是断断续续,有时甚至没有收到信息,请问这是为什么?
之前像模块的初始化配置,单片机向模块发一条指令然后读一条信息都正常的。
但是当前发一条指令,然后不断读取模块发回的信息就存在收不到数据的现象,有没有大神能指点一下?
|
-
PC与模块直接通信时接收的数据(正常)
-
PC监控单片机读取模块回传的数据(异常)
|