|
|
@@ -1,6 +1,6 @@
|
|
|
#define __UART_DEF
|
|
|
#include"User.h"
|
|
|
-
|
|
|
+#define DOOR_ONEN_ST_CH 1
|
|
|
/*******************************************************************************
|
|
|
* 函数名称:Check
|
|
|
*******************************************************************************/
|
|
|
@@ -155,9 +155,16 @@ void InitUart6(void){
|
|
|
}
|
|
|
void UART1SEND(char data)
|
|
|
{
|
|
|
+ if(g_CmdFrom_UartNum == 1){
|
|
|
U1TXREG = data;
|
|
|
while(!IFS0bits.U1TXIF);
|
|
|
- IFS0bits.U1TXIF=0;
|
|
|
+ IFS0bits.U1TXIF=0;
|
|
|
+ } else{
|
|
|
+ U4TXREG = data;
|
|
|
+ while(!IFS5bits.U4TXIF);
|
|
|
+ IFS5bits.U4TXIF=0;
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
void Uart1_Receive(char num){
|
|
|
|
|
|
@@ -250,7 +257,8 @@ void __attribute__ ( ( interrupt, no_auto_psv ) ) _U1RXInterrupt( void ){
|
|
|
g_ucCRC1 = (unsigned char)g_ulRSUM1;
|
|
|
if(g_ucCRC1 == g_ucU1RX_Data[g_uiLth1-1]){
|
|
|
g_ucCMD1 = g_ucU1RX_Data[FRAME_CMD_INDEX];
|
|
|
- g_ucUART1_flag = 1;
|
|
|
+ g_ucUART1_flag = 1;
|
|
|
+ g_CmdFrom_UartNum = 1;
|
|
|
g_ulRSUM1 = 0;
|
|
|
g_uiUart1_No = 0;
|
|
|
g_ucHeaderFlag1 = 0;
|
|
|
@@ -349,43 +357,44 @@ void __attribute__ ( ( interrupt, no_auto_psv ) ) _U3RXInterrupt( void ){
|
|
|
}
|
|
|
|
|
|
void __attribute__ ( ( interrupt, no_auto_psv ) ) _U4RXInterrupt( void ){
|
|
|
- IFS5bits.U4RXIF = 0;
|
|
|
- g_ucU4RX_Data[g_uiUart4_No] = U4RXREG;
|
|
|
- if(g_BUSY4 == 1) return;
|
|
|
- if(g_ucHeaderFlag4 == 0){
|
|
|
- if(g_ucU4RX_Data[g_uiUart4_No] == FRAME_HEAD){
|
|
|
- g_ucHeaderFlag4 = 1;
|
|
|
- g_ucU4RX_Data[0] = FRAME_HEAD;
|
|
|
- g_uiUart4_No = 1;
|
|
|
+ IFS5bits.U4RXIF = 0;
|
|
|
+
|
|
|
+ g_ucU1RX_Data[g_uiUart1_No] = U4RXREG;
|
|
|
+ if(g_BUSY1 == 1) return;
|
|
|
+ if(g_ucHeaderFlag1 == 0){
|
|
|
+ if(g_ucU1RX_Data[g_uiUart1_No] == FRAME_HEAD){
|
|
|
+ g_ucHeaderFlag1 = 1;
|
|
|
+ g_ucU1RX_Data[0] = FRAME_HEAD;
|
|
|
+ g_uiUart1_No = 1;
|
|
|
}else{
|
|
|
- g_BUSY4 = 0;
|
|
|
+ g_BUSY1 = 0;
|
|
|
}
|
|
|
- }else if(g_ucHeaderFlag4 == 1){
|
|
|
- g_uiUart4_No++;
|
|
|
+ }else if(g_ucHeaderFlag1 == 1){
|
|
|
+ g_uiUart1_No++;
|
|
|
}
|
|
|
- if(g_uiUart4_No > (FRAME_LTHH_INDEX+1)){
|
|
|
- g_uiLth4 = g_ucU4RX_Data[FRAME_LTHH_INDEX];
|
|
|
- if(g_uiUart4_No == g_uiLth4){
|
|
|
- g_ulRSUM4 = Check(g_ucU4RX_Data,g_uiLth4-1);
|
|
|
- g_ucCRC4 = (unsigned char)g_ulRSUM4;
|
|
|
- if(g_ucCRC4 == g_ucU4RX_Data[g_uiLth4-1]){
|
|
|
- g_ucCMD4 = g_ucU4RX_Data[FRAME_CMD_INDEX];
|
|
|
- g_ucUART4_flag = 1;
|
|
|
- g_ulRSUM4 = 0;
|
|
|
- g_uiUart4_No = 0;
|
|
|
- g_ucHeaderFlag4 = 0;
|
|
|
- g_BUSY4 = 1;
|
|
|
+ if(g_uiUart1_No > (FRAME_LTHH_INDEX+1)){
|
|
|
+ g_uiLth1 = g_ucU1RX_Data[FRAME_LTHH_INDEX];
|
|
|
+ if(g_uiUart1_No == g_uiLth1){
|
|
|
+ g_ulRSUM1 = Check(g_ucU1RX_Data,g_uiLth1-1);
|
|
|
+ g_ucCRC1 = (unsigned char)g_ulRSUM1;
|
|
|
+ if(g_ucCRC1 == g_ucU1RX_Data[g_uiLth1-1]){
|
|
|
+ g_ucCMD1 = g_ucU1RX_Data[FRAME_CMD_INDEX];
|
|
|
+ g_ucUART1_flag = 1;
|
|
|
+ g_CmdFrom_UartNum = 4;
|
|
|
+ g_ulRSUM1 = 0;
|
|
|
+ g_uiUart1_No = 0;
|
|
|
+ g_ucHeaderFlag1 = 0;
|
|
|
+ g_BUSY1 = 1;
|
|
|
}else{
|
|
|
- memset(g_ucU4RX_Data,0,g_uiLth4*sizeof(unsigned char));
|
|
|
- g_BUSY4 = 0;
|
|
|
+ memset(g_ucU1RX_Data,0,g_uiLth1*sizeof(unsigned char));
|
|
|
+ g_BUSY1 = 0;
|
|
|
}
|
|
|
- }else if(g_uiUart4_No > g_uiLth4){
|
|
|
- g_uiUart4_No = 0;
|
|
|
- g_ucHeaderFlag4 = 0;
|
|
|
- g_BUSY4 = 0;
|
|
|
+ }else if(g_uiUart1_No > g_uiLth1){
|
|
|
+ g_uiUart1_No = 0;
|
|
|
+ g_ucHeaderFlag1 = 0;
|
|
|
+ g_BUSY1 = 0;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -470,6 +479,110 @@ void __attribute__ ( ( interrupt, no_auto_psv ) ) _U6RXInterrupt( void ){
|
|
|
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+ * 函数名称:Uart1_Ack
|
|
|
+ *******************************************************************************/
|
|
|
+
|
|
|
+void Uart1_Ack_new(void)
|
|
|
+{
|
|
|
+ unsigned int g_uiFrmLth;
|
|
|
+ switch(g_ucU1RX_Data[2]){
|
|
|
+ case 0:{
|
|
|
+ g_uiFrmLth = 6;
|
|
|
+ g_ucU1TX_Data[0] = FRAME_HEAD;
|
|
|
+ g_ucU1TX_Data[1] = g_ucCMD1|0X80;
|
|
|
+ g_ucU1TX_Data[2] = 0;
|
|
|
+ g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucU1TX_Data[4] = 0;
|
|
|
+ g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
|
|
|
+ for(unsigned int n=0;n<g_ucU1TX_Data[3];n++)
|
|
|
+ {
|
|
|
+ UART1SEND(g_ucU1TX_Data[n]);
|
|
|
+ }
|
|
|
+
|
|
|
+ }break;
|
|
|
+ case 1:{
|
|
|
+ for(unsigned int n=0;n<g_ucU1RX_Data[3];n++)
|
|
|
+ {
|
|
|
+ UART2SEND(g_ucU1RX_Data[n]);
|
|
|
+ }
|
|
|
+ while(!g_ucUART2_flag);
|
|
|
+ g_ucU2RX_Data[0] = FRAME_HEAD;
|
|
|
+ g_ucU2RX_Data[1] = g_ucCMD1|0X80;
|
|
|
+ g_ucU2RX_Data[2] = 1;
|
|
|
+ g_uiFrmLth = g_ucU2RX_Data[3] ;
|
|
|
+ g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
|
|
|
+ for(unsigned int n = 0;n < g_ucU2RX_Data[3];n++)
|
|
|
+ {
|
|
|
+ UART1SEND(g_ucU2RX_Data[n]);
|
|
|
+ }
|
|
|
+ g_ucUART2_flag = 0;
|
|
|
+ g_BUSY2 = 0;
|
|
|
+
|
|
|
+ }break;
|
|
|
+ case 2:{
|
|
|
+ g_ucU3TX_Data[0] = FRAME_HEAD1;
|
|
|
+ g_ucU3TX_Data[1] = g_ucCMD1;
|
|
|
+ g_ucU3TX_Data[2] = 2;
|
|
|
+ g_ucU3TX_Data[3] = 0;
|
|
|
+ g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1; //6
|
|
|
+ g_uiFrmLth = g_ucU3TX_Data[4] ;
|
|
|
+ for(unsigned int i=4;i<g_ucU1RX_Data[3];i++)
|
|
|
+ {
|
|
|
+ g_ucU3TX_Data[i+1] = g_ucU1RX_Data[i];
|
|
|
+ }
|
|
|
+ g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
|
|
|
+ for(unsigned int n=0;n<g_ucU3TX_Data[4];n++)
|
|
|
+ {
|
|
|
+ UART3SEND(g_ucU3TX_Data[n]);
|
|
|
+ }
|
|
|
+ while(!g_ucUART3_flag);
|
|
|
+
|
|
|
+ g_ucU1TX_Data[0] = FRAME_HEAD;
|
|
|
+ g_ucU1TX_Data[1] = g_ucCMD1|0X80;
|
|
|
+ g_ucU1TX_Data[2] = 2;
|
|
|
+ g_ucU1TX_Data[3] = g_ucU3RX_Data[4]-1;
|
|
|
+ g_uiFrmLth = g_ucU1TX_Data[3] ;
|
|
|
+ for(unsigned int i=4;i<g_ucU3RX_Data[4];i++)
|
|
|
+ {
|
|
|
+ g_ucU1TX_Data[i] = g_ucU4RX_Data[i+1];
|
|
|
+ }
|
|
|
+ g_ucU1TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth - 1);
|
|
|
+
|
|
|
+ for(unsigned int n = 0;n < g_ucU1TX_Data[3];n++)
|
|
|
+ {
|
|
|
+ UART1SEND(g_ucU1TX_Data[n]);
|
|
|
+ }
|
|
|
+ g_ucUART3_flag = 0;
|
|
|
+ g_BUSY3 = 0;
|
|
|
+
|
|
|
+ }break;
|
|
|
+ default:{
|
|
|
+ g_uiFrmLth = 6;
|
|
|
+ g_ucU1TX_Data[0] = FRAME_HEAD;
|
|
|
+ g_ucU1TX_Data[1] = g_ucCMD1|0X80;
|
|
|
+ g_ucU1TX_Data[2] = 0;
|
|
|
+ g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucU1TX_Data[4] = EnmErrCode_errPara1;
|
|
|
+ g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
|
|
|
+ for(unsigned int n=0;n<g_ucU1TX_Data[3];n++)
|
|
|
+ {
|
|
|
+ UART1SEND(g_ucU1TX_Data[n]);
|
|
|
+ }
|
|
|
+
|
|
|
+ }break;
|
|
|
+
|
|
|
+ }
|
|
|
+ g_ucUART1_flag = 0;
|
|
|
+ g_uiUart1_No = 0;
|
|
|
+ g_ucHeaderFlag1 = 0;
|
|
|
+ memset(g_ucU1RX_Data,0,g_uiLth1*sizeof(unsigned char));
|
|
|
+ g_BUSY1 = 0;
|
|
|
+ g_CmdFrom_UartNum = 0;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
/*******************************************************************************
|
|
|
* 函数名称:Uart1_Ack
|
|
|
*******************************************************************************/
|
|
|
@@ -477,19 +590,11 @@ void __attribute__ ( ( interrupt, no_auto_psv ) ) _U6RXInterrupt( void ){
|
|
|
void Uart1_Ack(void)
|
|
|
{
|
|
|
unsigned int g_uiFrmLth;
|
|
|
- unsigned int i=0;
|
|
|
- unsigned int j=0;
|
|
|
+
|
|
|
unsigned int n=0;
|
|
|
unsigned char k=0;
|
|
|
- unsigned int UARTAD_buff[8];
|
|
|
- unsigned char Flag_STATUS=0;
|
|
|
- unsigned char Sensor,ucPWMindex,ucCtrlMode;
|
|
|
- long lMPPCtemp = 0;
|
|
|
- long lPWMstate=0;
|
|
|
-
|
|
|
- unsigned long SoftVersion =230719,date;
|
|
|
-
|
|
|
- unsigned char u8_data1,u8_data2,u8_data3;
|
|
|
+
|
|
|
+ unsigned char Flag_STATUS=0;
|
|
|
|
|
|
|
|
|
switch(g_ucCMD1){
|
|
|
@@ -1017,6 +1122,9 @@ void Uart1_Ack(void)
|
|
|
g_ucU2RX_Data[1] = g_ucCMD1|0X80;
|
|
|
g_ucU2RX_Data[2] = 1;
|
|
|
g_uiFrmLth = g_ucU2RX_Data[3] ;
|
|
|
+ g_ucU2RX_Data[g_uiFrmLth-1] = Get_IO(DOOR_ONEN_ST_CH);/*增加1字节,上报开关门状态*/
|
|
|
+ g_ucU2RX_Data[3] += 1; /*上报长度增加1位*/
|
|
|
+ g_uiFrmLth = g_ucU2RX_Data[3] ; /*求和长度增加1位*/
|
|
|
g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
|
|
|
for(n = 0;n < g_ucU2RX_Data[3];n++)
|
|
|
{
|
|
|
@@ -1942,19 +2050,19 @@ void Uart1_Ack(void)
|
|
|
{
|
|
|
UART1SEND(g_ucU1TX_Data[n]);
|
|
|
}
|
|
|
- Delay_ms(500);
|
|
|
- if(g_ucU1RX_Data[4] == 253){//屏幕连接
|
|
|
- _RP10R = 0;
|
|
|
- _RP1R= 3;
|
|
|
- RPINR18bits.U1RXR = 48; //串口输入映射 触摸屏连接
|
|
|
- InitUart1();
|
|
|
- }
|
|
|
- else if(g_ucU1RX_Data[4] == 252){// PC连接
|
|
|
- _RP1R= 0;
|
|
|
- _RP10R = 3;
|
|
|
- RPINR18bits.U1RXR = 17; //串口输入映射 PC机器连接
|
|
|
- InitUart1();
|
|
|
- }else{}
|
|
|
+// Delay_ms(500);
|
|
|
+// if(g_ucU1RX_Data[4] == 253){//屏幕连接
|
|
|
+// _RP10R = 0;
|
|
|
+// _RP1R= 3;
|
|
|
+// RPINR18bits.U1RXR = 48; //串口输入映射 触摸屏连接
|
|
|
+// InitUart1();
|
|
|
+// }
|
|
|
+// else if(g_ucU1RX_Data[4] == 252){// PC连接
|
|
|
+// _RP1R= 0;
|
|
|
+// _RP10R = 3;
|
|
|
+// RPINR18bits.U1RXR = 17; //串口输入映射 PC机器连接
|
|
|
+// InitUart1();
|
|
|
+// }else{}
|
|
|
break;
|
|
|
case 1:
|
|
|
for(n = 0;n < g_ucU1RX_Data[3];n++)
|