int modbus_read_holding_registers(unsigned char slave_id, unsigned char start_address, unsigned int num_registers, unsigned short * modbus_registers){ unsigned char transmit[255]; //check return values unsigned char *retValue; int i; retValue = transmit; transmit[0] = slave_id;// printf("slave_id: %c", transmit[0]); transmit[1] = MB_READ_HOLDING_REGISTERS; transmit[2] = start_address >> 8; transmit[3] = start_address & 0xFF; transmit[4] = num_registers >> 8; transmit[5] = num_registers & 0xFF; short crc = CRC16(transmit, 6); transmit[6] = crc; transmit[7] = crc &g