新手上路
- 积分
- 34
- 金钱
- 34
- 注册时间
- 2020-7-24
- 在线时间
- 4 小时
|
5金钱
串口接收到数据 [09:55:55.853] 1- [09:55:55.853] 1- [09:55:55.853] 1- [09:55:55.853] 1- [09:55:55.853] 1- [09:55:55.853] 1- [09:55:55.853] [09:55:55.885] 接收到数据 [09:55:55.885] 数据长度68 [09:55:55.885] 服务器推送:68 [09:55:55.905] 服务器推送:48 [09:55:55.905] 服务器推送:72 [09:55:55.905] 服务器推送:8 [09:55:55.905] 服务器推送:47 [09:55:55.905] 服务器推送:110 [09:55:55.905] 服务器推送:106 [09:55:55.905] 服务器推送:103 [09:55:55.905] 服务器推送:47 [09:55:55.905] 服务器推送:99 [09:55:55.905] 服务器推送:97 [09:55:55.905] 服务器推送:114 [09:55:55.905] 服务器推送:123 [09:55:55.905] 衿魍扑34 [09:55:55.916] 服务器推送:109 [09:55:55.916] 服务器推送:97 [09:55:55.916] 服务器推送:99 [09:55:55.916] 服务器推送:73 [09:55:55.916] 服务器推送:100 [09:55:55.916] 服务器推送:34 [09:55:55.916] 服务器推送:58 [09:55:55.916] 服务器扑34 [09:55:55.926] 服务器推送:67 [09:55:55.926] 服务器推送:74 [09:55:55.926] 服务器推送:88 [09:55:55.926] 服务器推送:77 [09:55:55.926] 服务器推送:49 [09:55:55.926] 服务器推送:57 [09:55:55.934] 服务器推送:48 [09:55:55.934] 服务器推送:56 [09:55:55.934] 服务器推送:48 [09:55:55.934] 服务器推送:48 [09:55:55.934] 服务器推送:34 [09:55:55.934] 服务器推送:109 [09:55:55.934] 服衿魍扑101 [09:55:55.945] 服务器推送:115 [09:55:55.945] 服务器推送:115 [09:55:55.945] 服务器推送:97 [09:55:55.945] 服务器推送:103 [09:55:55.945] 服务器推送:101 [09:55:55.945] 服务器推送:34 [09:55:55.955] 服务器推送:58 [09:55:55.955] 服务器推送:123 [09:55:55.955] 服务器推送:34 [09:55:55.955] 服务器推送:119 [09:55:55.955] 服务器推送:34 [09:55:55.955] 服务器推送:58 [09:55:55.955] 服务器推送:49 [09:55:55.955] 服务器推送:125 [09:55:55.965] 服务器推送:44 [09:55:55.965] 服务器推送:34 [09:55:55.965] 服务器推送:116 [09:55:55.965] 服务器推送:121 [09:55:55.965] 服务器推送:34 [09:55:55.965] 服务器推送:58 [09:55:55.976] 服务器推送:48 [09:55:55.976] 服务器推送:44 [09:55:55.976] 服务器推送:111 [09:55:55.976] 服务器推送:116 [09:55:55.976] 服务器推送:34 [09:55:55.976] 服务器推送:58 [09:55:55.976] 服务器推送:51 [09:55:55.983] 服务器推送:44 [09:55:55.983] 服务器推送:34 [09:55:55.983] 服务器推送:119 [09:55:55.983] 服务器推送:34 [09:55:55.983] 服务器推送:58 [09:55:55.983] 服务器扑48 [09:55:55.994] 服务器推送:125 [09:55:55.994] 数据直接显示 0H/njg/car{"macId":"CJXM190800"message":{"w":1},"ty":0,ot":3,"w":0} [09:55:55.994]
各位大神,请帮帮忙,我在串口中断中做了以下处理 /**
* 串口中断
**/
void DEBUG_USART2_IRQHandler()
{
if(USART_GetITStatus(DEBUG_USART2, USART_IT_RXNE) != RESET)//½óêÕμ½êy¾Y
{
if(mqttDatas.Connect_flag == 0)//±íê¾»1Î′ᬽó·tÎñÆ÷£¬′|óúÖ¸áîÅäÖÃ×′ì¬
{
if(DEBUG_USART2->DR)
{
uDatas.USART2_RX_BUF[uDatas.USART2_RX_COUNT] = DEBUG_USART2->DR;
uDatas.USART2_RX_COUNT++;
}
}
else
{
uDatas.USART2_RX_BUF[uDatas.USART2_RX_COUNT] = DEBUG_USART2->DR;
if(uDatas.USART2_RX_COUNT == 0)
{
TIM_Cmd(TIM4,ENABLE);
}
else
{
TIM_SetCounter(TIM4,0);
}
uDatas.USART2_RX_COUNT++;
if(uDatas.USART2_RX_BUF[uDatas.USART2_RX_COUNT-1] == 0x30 || uDatas.USART2_RX_COUNT == USART2_MAX_RECV_LEN)
{
printf("1-\n");
}
}
}
}
/**
* 定时器4
**/
void TIM4_IRQHandler(void)
{
if(TIM_GetITStatus(TIM4,TIM_IT_Update) != RESET)
{
memcpy(&mqttDatas.MQTT_RxDataInPtr[1],uDatas.USART2_RX_BUF,uDatas.USART2_RX_COUNT);
mqttDatas.MQTT_RxDataInPtr[0] = uDatas.USART2_RX_COUNT;
mqttDatas.MQTT_RxDataInPtr+=BUFF_UNIT;
if(mqttDatas.MQTT_RxDataInPtr == mqttDatas.MQTT_RxDataEndPtr)
{
mqttDatas.MQTT_RxDataInPtr = mqttDatas.MQTT_RxDataBuf[0];
}
//uDatas.USART2_RX_COUNT = 0;
TIM_SetCounter(TIM3,0);
TIM_Cmd(TIM4,DISABLE);
TIM_SetCounter(TIM4,0);
TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
}
}
为什么要
if(uDatas.USART2_RX_BUF[uDatas.USART2_RX_COUNT-1] == 0x30 || uDatas.USART2_RX_COUNT == USART2_MAX_RECV_LEN)
{
printf("1-\n");
}
才能显示 /njg/car{"macId":"CJXM190800"message":{"w":1},"ty":0,ot":3,"w":0},但是数据会丢失1-3位数
如果将printf("1-\n");去掉就只能显示D0H,数据位数不会丢失,但是没办法直接在程序上直接转换json数据。
|
最佳答案
查看完整内容[请看2#楼]
最后的处理方式是
int table[4];
char buff[1024];
memcpy(table,mqttDatas.MQTT_RxDataOutPtr,4);
strcpy(buff, (char*)table);
memset(buff, 0, sizeof(buff));
|