Thank you very much for your help. The meter I am using only uses two function codes (03H) and (10H). I was able to read and write successfully. However, rarely the timeout message would pop up for some reason. Here is an example:
root@techbase:/home/user/Zourob_Exp/libmodbus-3.1.4/tests/Zoruob_Files# ./ModBus_Read_Registers_F03
Setting slave_id 5
old response to sec = 0 old response to usec = 500000
old response to sec = 0 old response to usec = 500000
Opening /dev/ttyUSB0 at 19200 bauds (N, 8, 1)
[05][03][04][02][00][08][E5][78]
Waiting for a confirmation...
<05><03><10><00><01><00><07><00><0D><00><03><00><00><00><05><00><11><00><15><AD><B8>
Server ID = 5 RC = 8
Register: 0402 --> 1
Register: 0403 --> 7
Register: 0404 --> 13
Register: 0405 --> 3
Register: 0406 --> 0
Register: 0407 --> 5
Register: 0408 --> 17
Register: 0409 --> 21
root@techbase:/home/user/Zourob_Exp/libmodbus-3.1.4/tests/Zoruob_Files# ./ModBus_Read_Registers_F03
Setting slave_id 5
old response to sec = 0 old response to usec = 500000
old response to sec = 0 old response to usec = 500000
Opening /dev/ttyUSB0 at 19200 bauds (N, 8, 1)
[05][03][04][02][00][08][E5][78]
Waiting for a confirmation...
<05><03><10><00><01><00><07><00><0D><00><03><00><00><00><05><00><11><00><15><AD><B8>
Server ID = 5 RC = 8
Register: 0402 --> 1
Register: 0403 --> 7
Register: 0404 --> 13
Register: 0405 --> 3
Register: 0406 --> 0
Register: 0407 --> 5
Register: 0408 --> 17
Register: 0409 --> 21
root@techbase:/home/user/Zourob_Exp/libmodbus-3.1.4/tests/Zoruob_Files# ./ModBus_Read_Registers_F03
Setting slave_id 5
old response to sec = 0 old response to usec = 500000
old response to sec = 0 old response to usec = 500000
Opening /dev/ttyUSB0 at 19200 bauds (N, 8, 1)
[05][03][04][02][00][08][E5][78]
Waiting for a confirmation...
ERROR Connection timed out: select
Bytes flushed (0)
Failed to modbus_read_registers: Connection timed out
Server ID = 5 RC = -1
Register: 0402 --> 0
Register: 0403 --> 0
Register: 0404 --> 0
Register: 0405 --> 0
Register: 0406 --> 0
Register: 0407 --> 0
Register: 0408 --> 0
Register: 0409 --> 0
root@techbase:/home/user/Zourob_Exp/libmodbus-3.1.4/tests/Zoruob_Files# nano ModBus_Read_Registers_F03.c
root@techbase:/home/user/Zourob_Exp/libmodbus-3.1.4/tests/Zoruob_Files# ./ModBus_Read_Registers_F03
Setting slave_id 5
old response to sec = 0 old response to usec = 500000
old response to sec = 0 old response to usec = 500000
Opening /dev/ttyUSB0 at 19200 bauds (N, 8, 1)
[05][03][04][02][00][08][E5][78]
Waiting for a confirmation...
<05><03><10><00><01><00><07><00><0D><00><03><00><00><00><05><00><11><00><15><AD><B8>
Server ID = 5 RC = 8
Register: 0402 --> 1
Register: 0403 --> 7
Register: 0404 --> 13
Register: 0405 --> 3
Register: 0406 --> 0
Register: 0407 --> 5
Register: 0408 --> 17
Register: 0409 --> 21
Moreover, after installing libmodbus 3.1.2, the segmentation fault message diapered when I call the modbus_set_response_timeout function. However, before calling it, when I try to get_response_timeout, now it is set to a fixed value of 500000 micro seconds. Is there a way to control and set the timeout on the device?