Получение ответа Modbus от микроконтроллера PIC - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь построить RTU Modbbus с кодом функции 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);
}
...