Получение ответа Modbus от микроконтроллера PIC
Я пытаюсь построить Modbbus RTU с кодом функции 1 с PIC16F1938. В настоящее время я подделываю некоторое значение для отображения данных. В приведенном ниже коде я мог бы получить правильное значение CRC для запроса функции code1. Но я не смог получить правильный ответ.Я столкнулся с проблемой при упаковке данных. Позвольте мне знать, как я могу получить правильный ответ
unsigned char rxbuf[50], ser_data[100], crc_data[100], Max_scroll = 0;
unsigned char buff[10];
volatile uint8_t index = 0, rec_flag = 0, Delay_count = 0, Id[10], Buffer_count = 0, Cal_count = 0, Disp_count = 0, inc = 0, One_sec_update = 0, Auto_scroll_count = 0;
char data1[10];
unsigned char buf[20];
unsigned int count=0;
#define METER_ID 1
unsigned int j=0;
#define READ_REG 1
#define DE RC2
char Serial_Receive_byte() {
while(0==PIR1bits.RCIF);
return RCREG;
}
unsigned int crc_fn(unsigned char *dpacket,unsigned int len) {
unsigned int crc = 0xffff,poly = 0xa001;
unsigned int i=0;
for(i=0; i<len; i++) {
crc^= dpacket[i];
for(j=0; j<8; j++) {
if(crc & 0x01) {
crc >>= 1;
crc ^= poly;
} else
crc >>= 1;
}
}
return (crc);
}