本帖最后由 hwluo 于 2018-8-17 11:30 编辑 第一次使用SIM7600 4G模块,用了商家配的例程里的代码,发现可以点亮野火32板上的LED灯,但是一旦把32收集到的数据通过串口相连的4G模块往指定服务器发送的函数加进代码里面,4G模块就感觉工作不正常,通过串口调试助手来测试时发现连之前可以通过上位机控制LED灯亮灭都做不到了,而且在网络调试助手上也没有看到有App_buffer收集到的数据返回(已用Keil5里的仿真调试观察过App_buffer数组里的确有值),有没有用过SIM7600这个模块的前辈指教指教? void Remote_Control(void) { if(strstr(Uart2_Buf,"+IPD")!=NULL) { Heartbeat=0; Heart_beat=0; delay_ms(100); if(strstr(Uart2_Buf,": Ligh#")!=NULL) { if(D_Status.breathing_light == Off) { LED1(ON); delay_ms(2000); D_Status.breathing_light = On; } else if(D_Status.breathing_light == On) { LED1(OFF); delay_ms(2000); D_Status.breathing_light = Off; } } } CLR_Buf2(); } void SIM7600_Data_Send(void) { Second_AT_Command("AT+CIPSEND=0,",">",2);//串口2 发数据到TCP服务器 说明 AT+CIPSEND=0, 不带数据长度的时候需要数据后面加1A结束 UART2_SendString((char*)APP_buffer);//发数据到服务器 USART_SendData(USART2,0x1A); //发送结束符 CLR_Buf2(); //清空BUF2 if(Heart_beat) { Send_OK();//发心跳包 Heart_beat=0; } } 注:unsigned char APP_buffer[APP_Size_Max]= {0,0}; // 用于存储APP显示信息 |
(1)STM32与USB串口调试工具;
(2)4G模块与USB串口调试工具。
评分
查看全部评分
评分
查看全部评分
4G模块SIM7600CE,先用串口助手试一下,每一句发送都要加回车来检测,转到STM32后查看、
评分
查看全部评分
void UART2_SendString(char* s)
{
while(*s)//检测字符串结束符
{
while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
USART_SendData(USART2 ,*s++);//发送当前字符
}
}
我把App_buffer数组里那些没用的空位填补了字符‘0’进去再往服务器发送就正常了,不过现在那个用上位机操控LED灯亮灭还是不理想,有的时候操控很灵敏,有的时候怎么操控都没反应,我个人想了想觉得有可能是因为我现在用的32是裸机,没有操作系统,只有单线程,开灯关灯的代码执行的时机与我自己手动在上位机发数据的时机不吻合,导致出现数据掉包的现象,不知道我自己的思考对不对,有没有前辈再指导指导?
评分
查看全部评分
这个函数发送任意数据是有问题的,就是楼主已经注意到的发送数值0的问题。建议再写个串口发送函数,串口发送的是定长数据,不管数据里面是否有0
790384799
这个命令发送定长数据 就解决了hex数据中间有0x1a的问题