#ifndef _RS_FUNCTIONS_H #define _RS_FUNCTIONS_H #define MAX_RECEIVE_LENGTH 254 #define MAX_SEND_LENGTH 400 //266 //254 #define CMD_RS232_MODBUS_1 1 #define CMD_RS232_MODBUS_3 3 #define CMD_RS232_MODBUS_4 4 #define CMD_RS232_MODBUS_5 5 #define CMD_RS232_MODBUS_6 6 #define CMD_RS232_MODBUS_15 15 #define CMD_RS232_MODBUS_16 16 #define RS_TIME_OUT 6000 #define RS_TIME_OUT_MPU 6000//6000 // îæèäàíèå îòâåòà îò ÌÏÓ #define RS_TIME_OUT_HMI 1000 #define RS_TIME_OUT_MAX 10000 #define RS_TIME_OUT_LOST 1000 typedef unsigned char CHAR; // Message RS declaration typedef struct { unsigned int commnumber; // Íîìåð ïîðòà unsigned long RS_Length; // Äëèíà ïàêåòà unsigned int *pRS_RecvPtr; // Áóôåð ïðèåìà unsigned int *pRS_SendPtr; // Áóôåð ïîñûëêè unsigned int *pRS_SendPtr_stage1; // Áóôåð ïîñûëêè unsigned int *pRS_SendPtr_stage2; // Áóôåð ïîñûëêè unsigned int *pRecvPtr; unsigned int RS_PrevCmd; // Ïðåäûäóùàß êîììàíäà unsigned int RS_Cmd; // Òåêóùàß êîììàíäà unsigned int RS_Header[MAX_RECEIVE_LENGTH]; // Çàãîëîâîê unsigned int flag_TIMEOUT_to_Send; // Ôëàã îæèäàíèß òàéìàóòà íà îòñûëêó unsigned int flag_TIMEOUT_to_Receive; // Ôëàã îæèäàíèß òàéìàóòà íà ïðèåì unsigned int RS_DataReady; // Ôëàã ãîòîâíîñòè RS äàííûõ unsigned int buffer[MAX_SEND_LENGTH]; // Áóôåð äëß îòñûëêè ïî RS unsigned int buffer_stage1[8]; // Áóôåð äëß îòñûëêè ïî RS // unsigned int buffer_stage2[8]; // Áóôåð äëß îòñûëêè ïî RS unsigned int addr_answer; // àäðåñ êóäà îòâå÷àòü â ðåæèìå âåäóùåãî unsigned int addr_recive;// àäðåñ ïî êîòîðîìó íàñ çàïðîñèëè unsigned int flag_LEADING; // Ôëàã ðåæèìà êîíòðîëëåðà (ïî óìîë÷àíèþ âåäîìûé) unsigned long RS_RecvLen; unsigned long RS_SLength; // Äëèíà ïàêåòà äëß ïîñûëêè unsigned long RS_SendLen; // Êîëè÷åñòâî áàéò óæå ïåðåäàëè unsigned long RS_SLength_stage1; // Äëèíà ïàêåòà äëß ïîñûëêè unsigned long RS_SLength_stage2; // Äëèíà ïàêåòà äëß ïîñûëêè unsigned int time_wait_rs_out; unsigned int time_wait_rs_out_mpu; unsigned int time_wait_rs_lost; // ñëèøêîì áîëüøàÿ ïàóçà ìåæäó áàéòàìè - åñòü ïîòåðÿ!!! char RS_SendBlockMode; /* Ðåæèì ïåðåäà÷è */ char RS_SendBlockMode_stage1; /* Ðåæèì ïåðåäà÷è */ char RS_SendBlockMode_stage2; /* Ðåæèì ïåðåäà÷è */ char RS_Flag9bit; /* äëß RS485???????? */ int BS_LoadOK;/** Ôëàã óñïåøíîñòè ïðèåìà áëîêà */ int RS_FlagBegin; int RS_HeaderCnt; int RS_FlagSkiping; int RS_DataReadyAnswer; // ôëàã, ÷òî ìû ïîëó÷èëè îòâåò íà ñâîé çàïðîñ, åñëè ìû ìàñòåð int RS_DataReadyAnswerAnalyze; // ôëàã, ÷òî ìû ïîëó÷èëè îòâåò íà ñâîé çàïðîñ, åñëè ìû ìàñòåð è îáðàáîòàëè åãî int RS_DataSended; // ôëàã, ÷òî ìû îòïðàâèëè ñâîé çàïðîñ, æäåì îòâåò è ìû ìàñòåð int RS_DataWillSend; // ôëàã, ÷òî ìû ïîäãîòîâèëè ñâîé çàïðîñ è ñåé÷àñ íà÷íåì åãî ïåðåäàâàòü è ìû ìàñòåð int RS_DataReadyRequest; // ôëàã, ÷òî ìû ïîëó÷èëè çàïðîñ, åñëè ìû ñëåéâ int RS_DataReadyFullUpdate; // ôëàã, ÷òî ìû ïîëó÷èëè îòâåòû è ìàññèâ ïîëíîñòüþ îáíîâèëñÿ int RS_OnTransmitedData ; // ôëàã ÷òî ìû åùå ïåðåäàåì çàïðîøåííûå äàííûå int current_tx_stage; int cmd_tx_stage; unsigned int count_recive_ok; // ïðèíÿòî ïîñûëîê ñ âàëèäíûì crc, unsigned int count_recive_error_crc; // îøèáîê crc unsigned int count_recive_dirty; // ïðèíÿòî ïîñûëîê äî ðàñ÷åòà crc, ñîâïàëà òîëüêî äëèíà è êîä êîìàíäû unsigned int count_recive_bad; // ïðèíÿòî ïîñûëîê c íåïðàâèëüíûì ôîðìàòîì unsigned int count_recive_bytes_all; // ïðèíÿòî âñåãî áàéò unsigned int count_recive_bytes_skipped; // ïðîïóùåíî âñåãî áàéò unsigned int count_recive_cmd_skipped; // ïðîïóùåíî âñåãî ïîñûëîê unsigned int count_recive_rxerror; // îøèáêè ïî ïðåðûâàíèþ unsigned int do_resetup_rs; // âûïîëíèòü ïåðåñáðîñ ïîðòà ïðè îøèáêàõ. } RS_DATA_STRUCT; #define RS_DATA_STRUCT_DEFAULT {0,0,0,0,0,0,0,0,0,{0}, 0,0,0,{0},{0}, 0,0,0,0,0,0, 0,0, 0,0, 0,0,0,0, 0,0, 0,0,0, 0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0} ////////////////////////////////////////////////////////// #define TMS_TO_TERMINAL_TEST_ALL_STRUCT_DEFAULT {{0}, {0}, {0}, 0, 0, 0} enum { CMD_RS232_LOAD = 51, CMD_RS232_UPLOAD, CMD_RS232_RUN, CMD_RS232_XFLASH, CMD_RS232_TFLASH, CMD_RS232_PEEK, CMD_RS232_POKE, CMD_RS232_INITLOAD, CMD_RS232_INIT,CMD_RS232_EXTEND, CMD_RS232_VECTOR = 61, CMD_RS232_IMPULSE, CMD_RS232_STD = 65, CMD_RS232_TEST_ALL, CMD_RS232_STD_ANS, CMD_RS232_LAST }; //enum { // false = 0, true // }; #define RS_LEN_CMD CMD_RS232_LAST //extern RS_DATA_STRUCT RS232_A, RS232_B; extern RS_DATA_STRUCT rs_a,rs_b; int RS_Send(RS_DATA_STRUCT *rs_arr,unsigned int *pBuf,unsigned long len); void RS232_WorkingWith(unsigned int enable_rs_a, unsigned int enable_rs_b, unsigned int enable_int_timeout); void RS232_TuneUp(unsigned long speed_baud_a, unsigned long speed_baud_b); void inc_RS_timeout_cicle(void); void resetup_rs_on_timeout_lost(int rsp); void resetup_rs(RS_DATA_STRUCT *rs_arr); void resetup_mpu_rs(RS_DATA_STRUCT *rs_arr); int test_rs_live(RS_DATA_STRUCT *rs_arr); void RS_SetControllerLeading(RS_DATA_STRUCT *RS232_Arr,int boool); void RS_SetAdrAnswerController(RS_DATA_STRUCT *RS232_Arr,int set_addr_answer); void SetCntrlAddr (int cntrl_addr,int cntrl_addr_for_all); extern float KmodTerm, freqTerm; extern unsigned int RS_Len[RS_LEN_CMD]; extern int flag_special_mode_rs; #endif