Skip to content

Commit df0c09e

Browse files
Fix writing to serial (rs485) on windows os. (#2191)
Co-authored-by: jan iversen <[email protected]>
1 parent 450b96f commit df0c09e

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

pymodbus/transport/serialtransport.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
class SerialTransport(asyncio.Transport):
1414
"""An asyncio serial transport."""
1515

16-
force_poll: bool = False
16+
force_poll: bool = os.name == "nt"
1717

1818
def __init__(self, loop, protocol, *args, **kwargs) -> None:
1919
"""Initialize."""
@@ -29,7 +29,7 @@ def __init__(self, loop, protocol, *args, **kwargs) -> None:
2929

3030
def setup(self) -> None:
3131
"""Prepare to read/write."""
32-
if os.name == "nt" or self.force_poll:
32+
if self.force_poll:
3333
self.poll_task = asyncio.create_task(self.polling_task())
3434
self.poll_task.set_name("SerialTransport poll")
3535
else:
@@ -56,7 +56,7 @@ def close(self, exc: Exception | None = None) -> None:
5656
def write(self, data) -> None:
5757
"""Write some data to the transport."""
5858
self.intern_write_buffer.append(data)
59-
if not self.poll_task:
59+
if not self.force_poll:
6060
self.async_loop.add_writer(self.sync_serial.fileno(), self.intern_write_ready)
6161

6262
def flush(self) -> None:

test/transport/test_comm.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@ async def test_serial_poll(self, client, server, use_port):
179179
SerialTransport.force_poll = True
180180
assert await client.connect()
181181
await asyncio.sleep(0.5)
182-
SerialTransport.force_poll = False
183182
assert len(server.active_connections) == 1
184183
server_connected = list(server.active_connections.values())[0]
185184
test_data = b"abcd" * 1000

test/transport/test_serial.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ async def test_write_force_poll(self):
100100
)
101101
await asyncio.sleep(0)
102102
transport.write(b"abcd")
103+
await asyncio.sleep(0.5)
103104
transport.close()
104105
SerialTransport.force_poll = False
105106

0 commit comments

Comments
 (0)