hardbyte / hardbyte/python-can

Tx messages can not be received with AsyncBufferedReader()

オープン
#1,769 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
Python
スター
1.6k
フォーク
697
PR マージ指標
30日以内にマージされた PR はありません

説明

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!

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。