int read_registers(){
int errMRR;
int j;
int nbReg, cptValue;
int indexRegisterValues = 0;
uint16_t tabRegister[2];
for(j=0;j<deviceCfg[0].nbDevice;j++){
if(!strcmp(deviceCfg[j].connected ,"Y")){
usleep(20000);
if (deviceCfg[j].deviceAddress!=currentDeviceAddress){
modbus_close(ctx);
currentDeviceAddress=deviceCfg[j].deviceAddress;
modbus_set_slave(ctx, deviceCfg[j].deviceAddress);
if (modbus_connect(ctx) == -1) {
fprintf(stderr, "Connexion failed: %s\n", modbus_strerror(errno));
modbus_free(ctx);
return -1;
}
}
if (deviceCfg[j].registerAddressFormat == FORMAT32){
nbReg=2;
}
else if (deviceCfg[j].registerAddressFormat == FORMAT16){
nbReg=1;
}
errMRR = modbus_read_registers(ctx, (deviceCfg[j].registerAddress) - 1, nbReg, tabRegister);
if(errMRR == -1){
fprintf(stderr, "Modbus read register error : %s\n", modbus_strerror(errno));
registerValues[indexRegisterValues] = -1;
indexRegisterValues++;
}else{
if (deviceCfg[j].registerAddressFormat == FORMAT32) cptValue=tabRegister[0]*pow(2,16) + tabRegister[1];
if (deviceCfg[j].registerAddressFormat == FORMAT16) cptValue=tabRegister[0];
printf("cptValue = %d\n",cptValue);
registerValues[indexRegisterValues]=cptValue;
indexRegisterValues++;
}
}
}
printf("#communication : %d \n",nbCommunication);
nbCommunication++;
}