python-can icon indicating copy to clipboard operation
python-can copied to clipboard

pywintypes.error: (87, 'SetWaitableTimer', 'The parameter is incorrect.')

Open ovianao opened this issue 2 years ago • 2 comments

Describe the bug

When attempting to start a periodic signal, get: pywintypes.error: (87, 'SetWaitableTimer', 'The parameter is incorrect.')

There was something related resolved here, but this issue is still present: https://github.com/hardbyte/python-can/issues/1654

To Reproduce

Install a latest version of python-can, including 4.2.2 or 4.3.0. Create a periodic signal, and attempt to start it.

Expected behavior

No error observed.

Additional context

The following error is observed:

OS and version: Windows 10 Version 1809, OS Build 17763.1637 Python version: 3.7 or 3.8 python-can version: 4.2.2 or 4.3.0 python-can interface/s (if applicable): python-ics==908.12

Traceback and logs
Traceback (most recent call last):
  File "test2.py", line 8, in <module>
    bus.send_periodic(msg, period=1000, duration=5000)
  File "c:\temp\venv38\lib\site-packages\can\bus.py", line 269, in send_periodic
    self._send_periodic_internal(msgs, period, duration, modifier_callback),
  File "c:\temp\venv38\lib\site-packages\can\bus.py", line 319, in _send_periodic_internal
    task = ThreadBasedCyclicSendTask(
  File "c:\temp\venv38\lib\site-packages\can\broadcastmanager.py", line 269, in __init__
    self.start()
  File "c:\temp\venv38\lib\site-packages\can\broadcastmanager.py", line 285, in start
    win32event.SetWaitableTimer(
pywintypes.error: (87, 'SetWaitableTimer', 'The parameter is incorrect.')

import can

with can.Bus() as bus:
    msg = can.Message(
        arbitration_id=0xC0FFEE, data=[0, 0, 0, 0, 0, 0, 0, 0], is_extended_id=False
    )
    
    bus.send_periodic(msg, period=1000, duration=5000)

ovianao avatar Nov 21 '23 15:11 ovianao

What's your pywin32 version? You can check with pip list

Do you really want a period of 1000 seconds?

zariiii9003 avatar Nov 21 '23 15:11 zariiii9003

I have pywin32 version 306. The 1000 seconds was just an example. I also tried with a period=1, duration=5 and the end result is the same.

ovianao avatar Nov 21 '23 15:11 ovianao