Commit 30678992 authored by 王佳伟's avatar 王佳伟

feat:修改串口

parent b7ced6a1
...@@ -48,7 +48,6 @@ uint8_t powerstdio = 0; ...@@ -48,7 +48,6 @@ uint8_t powerstdio = 0;
uint8_t get_num_buf[34]; uint8_t get_num_buf[34];
uint8_t comparestart; uint8_t comparestart;
uint8_t blename[5]; uint8_t blename[5];
uint8_t firstpowerflag = 0;
uint16_t lightnumber = 0; uint16_t lightnumber = 0;
void get_key(void) void get_key(void)
{ {
...@@ -65,6 +64,18 @@ void datacheck(void) ...@@ -65,6 +64,18 @@ void datacheck(void)
{ {
uint8_t dataopenBuff [ 11 ] ={0x07,0x36,0xAD,0x0F,0x0F,0x11,0x01,0x02,0x03,0x04,0xE6}; uint8_t dataopenBuff [ 11 ] ={0x07,0x36,0xAD,0x0F,0x0F,0x11,0x01,0x02,0x03,0x04,0xE6};
uint8_t datacloseBuff [ 11 ] ={0x07,0x36,0x33,0x0F,0x0F,0x11,0x01,0x02,0x03,0x04,0x6C}; uint8_t datacloseBuff [ 11 ] ={0x07,0x36,0x33,0x0F,0x0F,0x11,0x01,0x02,0x03,0x04,0x6C};
// if(memcmp(BarCode,dataopenBuff,11) == 0)
// {
// POWER_CTRL_KL15 = 1;
// }
// else
// {
// if(memcmp(BarCode,datacloseBuff,11) == 0)
// {
// POWER_CTRL_KL15 = 0;
// }
// }
memset(BarCode, 0, sizeof(BarCode));
} }
...@@ -148,10 +159,6 @@ void UART_Put1(uint32_t Value) ...@@ -148,10 +159,6 @@ void UART_Put1(uint32_t Value)
// RS485_TX_finish = 0; // RS485_TX_finish = 0;
// LINE_OUT_NEG_09 = 1; // LINE_OUT_NEG_09 = 1;
// RS485_TX_finish = 0; // RS485_TX_finish = 0;
if(firstpowerflag != 2)
{
firstpowerflag = 1;
}
return; return;
} }
...@@ -175,6 +182,7 @@ void UART_Put2(uint32_t Value) ...@@ -175,6 +182,7 @@ void UART_Put2(uint32_t Value)
RS485_send_time = 0; RS485_send_time = 0;
return; return;
} }
#define min(a, b) (((a) < (b)) ? (a) : (b))
void Recv_Byte(void) void Recv_Byte(void)
{ {
int i = 0; int i = 0;
...@@ -183,46 +191,54 @@ void Recv_Byte(void) ...@@ -183,46 +191,54 @@ void Recv_Byte(void)
readNum = Protocol_UartRead(mDataBufPtr + mDataBufLen, 1024 - mDataBufLen); readNum = Protocol_UartRead(mDataBufPtr + mDataBufLen, 1024 - mDataBufLen);
if ( readNum > 0 ) if (readNum > 0)
{ {
mDataBufLen += readNum; mDataBufLen += readNum;
while(mDataBufLen) while(mDataBufLen)
{ {
for(i = 0; i < mDataBufLen; i++) // 查找帧头0x07
{ i = 0;
if(i > 5) while(i < mDataBufLen && mDataBufPtr[i] != 0x07)
{ i++;
if((mDataBufPtr[i] == 0x4A ) && (mDataBufPtr[i + 1] == 0x4B))
// 如果没有找到帧头,处理全部剩余数据
if (i >= mDataBufLen)
{ {
if( i < 1) len = mDataBufLen;
// 复制数据到BarCode(可选)
memset(BarCode, 0, sizeof(BarCode));
memcpy(BarCode, mDataBufPtr, min(len, sizeof(BarCode)));
}
// 找到帧头但数据不足
else if (i + 11 > mDataBufLen)
{ {
// 数据不足,等待更多数据
break; break;
} }
// 找到帧头且数据足够
else
{
// 复制数据,确保不越界
memset(BarCode, 0, sizeof(BarCode)); memset(BarCode, 0, sizeof(BarCode));
for(j = 0; j < i+1; j++) for(j = 0; j < mDataBufLen; j++)
{ {
BarCode[j] = mDataBufPtr[j]; BarCode[j] = mDataBufPtr[i + j]; // 从帧头后一个位置开始复制
}
break;
}
} }
len = 11; // 处理11个字节(帧头+10字节数据)
} }
// 解析协议 // 移动剩余数据
len = i + 1; if (len > 0 && len <= mDataBufLen)
if ( (len > 0) && (len < mDataBufLen) )
{ {
memcpy(mDataBufPtr, mDataBufPtr + len, mDataBufLen - len); memcpy(mDataBufPtr, mDataBufPtr + len, mDataBufLen - len);
} }
mDataBufLen -= len; mDataBufLen -= len;
// 处理数据
datacheck(); datacheck();
} }
} }
return;
} }
static uint32_t Protocol_UartRead(uint8_t *pData, uint32_t len) static uint32_t Protocol_UartRead(uint8_t *pData, uint32_t len)
......
...@@ -34,7 +34,6 @@ extern uint8_t comparestart; ...@@ -34,7 +34,6 @@ extern uint8_t comparestart;
extern uint8_t connectbleFlag; extern uint8_t connectbleFlag;
extern uint8_t get_num_buf[34]; extern uint8_t get_num_buf[34];
extern uint8_t blename[5]; extern uint8_t blename[5];
extern uint8_t recvflag111; //extern uint8_t recvflag111;
extern uint8_t firstpowerflag;
extern uint16_t lightnumber; extern uint16_t lightnumber;
#endif #endif
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment