hardbyte / hardbyte/python-can

Tx messages can not be received with AsyncBufferedReader()

Open
#1,769 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
1.6k
Forks
697
PR merge metrics
No merged PRs in 30d

Description

Python 3.11.3
python-can 4.3.1

The program is to talk to an amplifier and log both the Tx and Rx messages asynchronously. In a word to explain how things work on the hardware side, the Amplifier sends Rx messages periodically, and receives Tx messages I send.

The documentation said `can.AsyncBufferedReader()` is able to catch both Tx and Rx messages, so I adapted the example as the following.

```python
async def main() -> None:
logger = can.Logger("logfile.asc")

with can.Bus(auto_reset=True) as bus:
reader = can.AsyncBufferedReader()

listeners: List[MessageRecipient] = [
print_and_log_message,
reader,
logger
]

loop = asyncio.get_running_loop()
notifier = can.Notifier(bus, listeners, loop=loop)

msg = can.Message(arbitration_id=0x106, data=[0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], dlc=8, is_extended_id=False, is_rx=False, is_error_frame=False)

send_task = bus.send_periodic(msg, 0.1, 5)

await asyncio.sleep(5)

if isinstance(send_task, can.CyclicSendTaskABC):
send_task.stop()

notifier.stop()
bus.shutdown()
```
With this code snippet, the log file gets Rx messages only, even the Tx messages I sent out actually works (based on the Rx messages I see, some parameters are updated as what I want). Is it something with my code or the function? Any thoughts and advice will be deeply appreciated!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.