c# - SerialPort ReadTimeout is 5 seconds, but the timeout takes 432 seconds -
i have bit of code looking byte on serial port, , trying test happens when no data comes across.
byte[] startbytearray = new byte[1]; // find start byte try { { logger.trace("starting read @ " + datetime.now.tostring()); logger.trace("comm.readtimeout = " + comm.readtimeout); comm.read(startbytearray, 0, 1); logger.trace("found byte: " + startbytearray[0].tostring("x2")); if((new timespan(datetime.utcnow.ticks - starttime)).totalmilliseconds > comm.readtimeout) throw new timeoutexception("invalid data: start byte never found, others were: " + startbytearray[0].tostring("x2")); } while (!isstartbyte(startbytearray[0])); } catch (timeoutexception ex) { logger.trace("caught exception @ " + datetime.now.tostring()); logger.trace("comm.readtimeout = " + comm.readtimeout); logger.trace("exception = " + ex.message); if(ex.message.contains("invalid data")) driverevent = new driverevent(drivereventcode.invalid_data, ex.message, datetime.utcnow.ticks); else driverevent = new driverevent(drivereventcode.no_data, "no bytes received in " + comm.readtimeout + " milliseconds: " + ex.message, datetime.utcnow.ticks); return null; } some of output generated follows:
03.24 16:04:22 trace:com301.295 starting read @ 3/24/2014 4:04:22 pm 03.24 16:04:22 trace:com301.295 comm.readtimeout = 5000 03.24 16:11:34 trace:com301.295 caught exception @ 3/24/2014 4:11:34 pm 03.24 16:11:34 trace:com301.295 comm.readtimeout = 5000 03.24 16:11:34 trace:com301.295 exception = operation has timed out. 03.24 16:11:34 error:com301.280 no_data error received: no bytes received in 5000 milliseconds: operation has timed out. generated. ... 03.24 16:12:11 trace:com301.287 starting read @ 3/24/2014 4:12:11 pm 03.24 16:12:11 trace:com301.287 comm.readtimeout = 5000 03.24 16:19:23 trace:com301.287 caught exception @ 3/24/2014 4:19:23 pm 03.24 16:19:23 trace:com301.287 comm.readtimeout = 5000 ... 03.24 16:20:00 trace:com301.293 starting read @ 3/24/2014 4:20:00 pm 03.24 16:20:00 trace:com301.293 comm.readtimeout = 5000 03.24 16:27:13 trace:com301.293 caught exception @ 3/24/2014 4:27:13 pm 03.24 16:27:13 trace:com301.293 comm.readtimeout = 5000 the readtimeout set 5000 milliseconds; why taking on 7 minutes? can't think of thread holding serial port hostage.
update
all control lines being held high; serialport class disregarding readtimeout because of this?
Comments
Post a Comment