📄 main3.c
字号:
******************************************************************************/void Transmit_Mistake_Package(np_uart* uartbase,unsigned char mistake_mark){ unsigned short result; unsigned char data[10]={Parameter[0],Parameter[1],0xcc,0xc1,mistake_mark,0x0,0x0}; unsigned char Data_Final[20]; unsigned char tempdata=0; int Data_Final_Number=0; int datanumber=0; int i,j; result=Cal_Crc(&data[0],7); data[7]=(result>>8); data[8]=result; data[9]=0x7e; for(i=0;i<20;i++) { Data_Final[i]=0; } for(i=0;i<10;i++) { for(j=0;j<8;j++) { Add_Bit=(data[i]>>(7-j))%2; Add_transparences(); tempdata=tempdata+(Add_Bit<<(7-Data_Final_Number++)); if((Add_transparence_valid==1) && (i!=9)) { Data_Final_Number++; } if(Data_Final_Number==8) { Data_Final[datanumber++]=tempdata; Data_Final_Number=0; tempdata=0; } } } if(Data_Final_Number!=0) { Data_Final[datanumber++]=tempdata; } uartbase->np_uarttxdata=0x7e; delay(2000); for(i=0;i<datanumber;i++) { uartbase->np_uarttxdata=Data_Final[i]; delay(2000); }}/******************************************************************************发送标志信息的函数*******************************************************************************/void TransmitTestPackage(np_uart* uartbase){ unsigned short resutl; unsigned char data[21]; unsigned char Data_Final[25]; unsigned char tempdata=0; int Data_Final_Number=0; int datanumber=0; int i,j; data[0]=Parameter[0]; data[1]=Parameter[1]; data[2]=0xcc; data[3]=0xc1; for(i=0;i<14;i++) { data[i+4]=Test_Package_Data[i]; } resutl=Cal_Crc(&data[0],18); data[18]=(resutl>>8); data[19]=resutl; data[20]=0x7e; for(i=0;i<25;i++) { Data_Final[i]=0; } for(i=0;i<21;i++) { for(j=0;j<8;j++) { Add_Bit=(data[i]>>(7-j))%2; Add_transparences(); tempdata=tempdata+(Add_Bit<<(7-Data_Final_Number++)); if((Add_transparence_valid==1) && (i!=20)) { Data_Final_Number++; } if(Data_Final_Number==8) { Data_Final[datanumber++]=tempdata; Data_Final_Number=0; tempdata=0; } } } if(Data_Final_Number!=0) { Data_Final[datanumber++]=tempdata; } uartbase->np_uarttxdata=0x7e; delay(2000); for(i=0;i<datanumber;i++) { uartbase->np_uarttxdata=Data_Final[i]; delay(2000); } }/*******************************************************************************响应cpu的发送函数*******************************************************************************/void TransmitComm(np_uart* uartbase){ if(Check_Tx_Mark_Bit(Transmit_Number)==1) Write_Flash_Flow(); else if(Check_Tx_Mark_Bit(Transmit_Number)==2) Write_Comm(uartbase); else if(Check_Tx_Mark_Bit(Transmit_Number)==3) Write_Flash(); else if(Check_Tx_Mark_Bit(Transmit_Number)==4) Handle_Para(); *MarkTx[Transmit_Number]=0x87;}/******************************************************************************485发送函数*******************************************************************************/void Transmit485(){ }/******************************************************************************以太网发送函数*******************************************************************************/void TransmitEnternet(){}/******************************************************************************串口接收数据函数*******************************************************************************/int ReceiveComm(){ int i,j,k,m; unsigned char* p; unsigned char answer=0; while(RxHead!=RxTail) {// na_uart1->np_uarttxdata=RxBuf[RxTail]; for(i=0; i<8; i++) {// bb=exp(8-i);// if((RxBuf[RxTail] & bb)==0)// Test_Bit=0;// else// Test_Bit=1; Test_Bit=(RxBuf[RxTail]>>(7-i))%2; switch(RevStatus) //协议的各种状态 { case 0 : Check_Frame(); break; case 1 : //数据标志位 Check_Transparence(); if(transparence_valid==0) { Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number)); if(++Valid_Data_Number==8) { if(Valid_Data==Parameter[0]) { transparence=0; RevStatus=2; Valid_Data=0; Valid_Data_Number=0; CheckData[0]=Parameter[0]; // na_uart1->np_uarttxdata=0x7e; // delay(3000); // na_uart1->np_uarttxdata=Parameter[0]; // delay(3000); } else { transparence=0; RevStatus=0; na_uart1->np_uarttxdata=0x01; delay(3000); Valid_Data=0; Valid_Data_Number=0; BeginBitContent=0; } } } else { if(transparence_valid==1 && RevStatus==0) { transparence_valid=0; transparence=0; Valid_Data_Number=0; Valid_Data=0; RevStatus=1; na_uart1->np_uarttxdata=0x55; delay(3000); } } break; case 2 : Check_Transparence(); if(transparence_valid==0) { jj=Valid_Data+(Test_Bit<<(7-Valid_Data_Number)); Valid_Data=jj; if(++Valid_Data_Number==8) { // if(Valid_Data==Parameter[1]) if(jj==Parameter[1]) { transparence=0; RevStatus=3; Valid_Data=0; Valid_Data_Number=0; CheckData[1]=Parameter[1]; // na_uart1->np_uarttxdata=Parameter[1]; // delay(3000); } else { transparence=0; RevStatus=0; Valid_Data=0; Valid_Data_Number=0; na_uart1->np_uarttxdata=0x02; delay(3000); } } } else { if(transparence_valid==1 && RevStatus==0) { transparence_valid=0; transparence=0; Valid_Data_Number=0; Valid_Data=0; RevStatus=1; } } break; case 3 : Check_Transparence(); if(transparence_valid==0) { Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number)); if(++Valid_Data_Number==8) { if(Valid_Data==0xcc) { transparence=0; RevStatus=4; Valid_Data=0; Valid_Data_Number=0; CheckData[2]=0xcc; // na_uart1->np_uarttxdata=0xcc; // delay(3000); } else { transparence=0; RevStatus=0; Valid_Data=0; Valid_Data_Number=0; na_uart1->np_uarttxdata=0x03; delay(3000); } } } else { if(transparence_valid==1 && RevStatus==0) { transparence_valid=0; transparence=0; Valid_Data_Number=0; Valid_Data=0; RevStatus=1; } } break; case 4 : Check_Transparence(); if(transparence_valid==0) { Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number)); if(++Valid_Data_Number==8) { if(Valid_Data==0xc1) { transparence=0; RevStatus=5; Valid_Data=0; Valid_Data_Number=0; CheckData[3]=0xc1; Data_Number=4; // na_uart1->np_uarttxdata=0xc1; // delay(3000); } else { transparence=0; RevStatus=0; Valid_Data=0; Valid_Data_Number=0; na_uart1->np_uarttxdata=0x04; delay(3000); } } } else { if(transparence_valid==1 && RevStatus==0) { transparence_valid=0; transparence=0; Valid_Data_Number=0; Valid_Data=0; RevStatus=1; } } break; case 5 : Check_Transparence(); if(transparence_valid==0) { Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number)); if(++Valid_Data_Number==8) { // na_uart1->np_uarttxdata=Valid_Data; // delay(3000); CheckData[Data_Number]=Valid_Data; Data_Number++; RevStatus=6;// transparence=0; Valid_Data=0; Valid_Data_Number=0; } } else { if(transparence_valid==1 && RevStatus==0) { transparence_valid=0; transparence=0; Valid_Data_Number=0; Valid_Data=0; RevStatus=1; } } break; case 6 : Check_Transparence(); if(transparence_valid==0) { Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number)); if(++Valid_Data_Number==8) { // na_uart1->np_uarttxdata=Valid_Data; // delay(3000); CheckData[Data_Number]=Valid_Data; Data_Number++; RevStatus=6;// transparence=0; Valid_Data=0; Valid_Data_Number=0; } break; } else if(transparence_valid==1 && transparence==0 && RevStatus!=0) { transparence_valid=0; break; } else { if(transparence_valid==1 && RevStatus==0) { // na_uart1->np_uarttxdata=0x7e; // delay(3000); p=&CheckData[0]; CheckByte_Write=Cal_Crc(p,(Data_Number-2)); transparence_valid=0; transparence=0; Valid_Data=0; Check_Temp=(CheckData[Data_Number-2]<<8)+(CheckData[Data_Number-1]); if(CheckByte_Write==Check_Temp) { // na_uart1->np_uarttxdata=0x88; // delay(3000); if(CheckData[4]==0x94 || CheckData[4]==0x95 || CheckData[4]==0x96 || CheckData[4]==0x98 || CheckData[4]==0x99) { Write_Flash(); Write_Comm_to_Ram(); Finished_Receive=Receive_From; // answer=1; } else { if(CheckData[4]==0x84 || CheckData[4]==0x85 || CheckData[4]==0x86 || CheckData[4]==0x88 || CheckData[4]==0x89) { Transmit_Query_Package(uart_use,CheckData[4]); } else { if(CheckData[4]==0x8D) { Transmit_Flow_Package(uart_use); } else { if(CheckData[4]==0x93) { Write_Comm_to_Ram(); Finished_Receive=Receive_From; // Transmit_Lai_Package(uart_use,CheckData[4]); } else { Write_Comm_to_Ram(); Finished_Receive=Receive_From; } // TransmitTestPackage(uart_use); } } } // Finished_Receive=Receive_From; CheckByte_Write=0; if(answer==1) { Transmit_Answer_Package(uart_use,CheckData[4]); answer=0; } } else { Finished_Receive=0; CheckByte_Write=0; Transmit_Mistake_Package(uart_use,CheckData[4]); } BeginBitContent=0; Data_Number=0; Valid_Data=0; Valid_Data_Number=0; } break; } break; default : RevStatus=0; BeginBitContent=0; break; } } if(++RxTail>(RXBUFSIZE-1)) RxTail=0; } if(RevStatus==-1) return -1; else return 1;}/******************************************************************************485口接收数据函数*******************************************************************************/int Receive485(){}/*******************************************************************************以太网接收数据函数*******************************************************************************/int ReceiveEnternet(){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -