@@ -65,7 +65,8 @@ def __init__(self, loop, protocol, serial_instance):
65
65
66
66
# Asynchronous I/O requires non-blocking devices
67
67
self ._serial .timeout = 0
68
- self ._serial .write_timeout = 0
68
+ if not self .serial .port .startswith ("rfc2217" ):
69
+ self ._serial .write_timeout = 0
69
70
70
71
# These two callbacks will be enqueued in a FIFO queue by asyncio
71
72
loop .call_soon (protocol .connection_made , self )
@@ -284,60 +285,52 @@ def _write_ready(self):
284
285
self ._maybe_resume_protocol ()
285
286
assert self ._has_writer
286
287
287
- if os .name == "nt" :
288
- def _poll_read (self ):
289
- if self ._has_reader and not self ._closing :
290
- try :
291
- self ._has_reader = self ._loop .call_later (self ._poll_wait_time , self ._poll_read )
292
- if self .serial .in_waiting :
293
- self ._read_ready ()
294
- except serial .SerialException as exc :
295
- self ._fatal_error (exc , 'Fatal write error on serial transport' )
296
-
297
- def _ensure_reader (self ):
298
- if not self ._has_reader and not self ._closing :
288
+ def _poll_read (self ):
289
+ if self ._has_reader and not self ._closing :
290
+ try :
299
291
self ._has_reader = self ._loop .call_later (self ._poll_wait_time , self ._poll_read )
300
-
301
- def _remove_reader (self ):
302
- if self ._has_reader :
303
- self ._has_reader .cancel ()
304
- self ._has_reader = False
305
-
306
- def _poll_write (self ):
307
- if self ._has_writer and not self ._closing :
308
- self ._has_writer = self ._loop .call_later (self ._poll_wait_time , self ._poll_write )
309
- if self .serial .out_waiting < self ._max_out_waiting :
310
- self ._write_ready ()
311
-
312
- def _ensure_writer (self ):
313
- if not self ._has_writer and not self ._closing :
314
- self ._has_writer = self ._loop .call_soon (self ._poll_write )
315
-
316
- def _remove_writer (self ):
317
- if self ._has_writer :
318
- self ._has_writer .cancel ()
319
- self ._has_writer = False
320
-
321
- else :
322
- def _ensure_reader (self ):
323
- if (not self ._has_reader ) and (not self ._closing ):
292
+ if self .serial .in_waiting :
293
+ self ._read_ready ()
294
+ except serial .SerialException as exc :
295
+ self ._fatal_error (exc , 'Fatal write error on serial transport' )
296
+
297
+ def _ensure_reader (self ):
298
+ if not self ._has_reader and not self ._closing :
299
+ if os .name == "nt" or self ._serial .port .startswith ("rfc2217" ):
300
+ self ._has_reader = self ._loop .call_later (self ._poll_wait_time , self ._poll_read )
301
+ else :
324
302
self ._loop .add_reader (self ._serial .fileno (), self ._read_ready )
325
303
self ._has_reader = True
326
304
327
- def _remove_reader (self ):
328
- if self ._has_reader :
305
+ def _remove_reader (self ):
306
+ if self ._has_reader :
307
+ if os .name == "nt" or self ._serial .port .startswith ("rfc2217" ):
308
+ self ._has_reader .cancel ()
309
+ else :
329
310
self ._loop .remove_reader (self ._serial .fileno ())
330
- self ._has_reader = False
311
+ self ._has_reader = False
331
312
332
- def _ensure_writer (self ):
333
- if (not self ._has_writer ) and (not self ._closing ):
334
- self ._loop .add_writer (self ._serial .fileno (), self ._write_ready )
313
+ def _poll_write (self ):
314
+ if self ._has_writer and not self ._closing :
315
+ self ._has_writer = self ._loop .call_later (self ._poll_wait_time , self ._poll_write )
316
+ if not self ._serial .port .startswith ("rfc2217" ) and self .serial .out_waiting < self ._max_out_waiting :
317
+ self ._write_ready ()
318
+
319
+ def _ensure_writer (self ):
320
+ if not self ._has_writer and not self ._closing :
321
+ if os .name == "nt" or self ._serial .port .startswith ("rfc2217" ):
322
+ self ._has_writer = self ._loop .call_soon (self ._poll_write )
323
+ else :
324
+ self ._loop .add_writer (self .serial .fileno (), self ._write_ready )
335
325
self ._has_writer = True
336
326
337
- def _remove_writer (self ):
338
- if self ._has_writer :
327
+ def _remove_writer (self ):
328
+ if self ._has_writer :
329
+ if os .name == "nt" or self ._serial .port .startswith ("rfc2217" ):
330
+ self ._has_writer .cancel ()
331
+ else :
339
332
self ._loop .remove_writer (self ._serial .fileno ())
340
- self ._has_writer = False
333
+ self ._has_writer = False
341
334
342
335
def _set_write_buffer_limits (self , high = None , low = None ):
343
336
"""Ensure consistent write-buffer limits."""
0 commit comments