timeout to prevent blocked process due to serial interface not receiving any data
This commit is contained in:
+2
-1
@@ -2,5 +2,6 @@
|
|||||||
"device": "/dev/serial/by-id/usb-VictronEnergy_BV_VE_Direct_cable_VEAWDESA-if00-port0",
|
"device": "/dev/serial/by-id/usb-VictronEnergy_BV_VE_Direct_cable_VEAWDESA-if00-port0",
|
||||||
"database": "VEDirect.db",
|
"database": "VEDirect.db",
|
||||||
"logfile": "VEDirect.log",
|
"logfile": "VEDirect.log",
|
||||||
"loglevel": "off"
|
"loglevel": "off",
|
||||||
|
"timeout": 30
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -105,7 +105,8 @@
|
|||||||
$bytesToRead = $config->bytesToRead;
|
$bytesToRead = $config->bytesToRead;
|
||||||
writeLog("Reading $bytesToRead Byte from VE.Direct interface\r\n", 3);
|
writeLog("Reading $bytesToRead Byte from VE.Direct interface\r\n", 3);
|
||||||
$dataStream = "";
|
$dataStream = "";
|
||||||
while(strlen($dataStream) < $bytesToRead)
|
$startTime = time();
|
||||||
|
while(strlen($dataStream) < $bytesToRead && time() < $startTime + $config->timeout)
|
||||||
$dataStream .= dio_read($VEinterface, $bytesToRead);
|
$dataStream .= dio_read($VEinterface, $bytesToRead);
|
||||||
dio_close($VEinterface);
|
dio_close($VEinterface);
|
||||||
writeLog($dataStream . "\r\n\r\n", 4);
|
writeLog($dataStream . "\r\n\r\n", 4);
|
||||||
|
|||||||
Reference in New Issue
Block a user