SeeedBus: Crash occsionally.
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- networking
Direzione di ricerca
Inizia in can/interfaces/seeedstudio/seeedstudio.py intorno alla riga 279, dove _recv_internal legge dal dispositivo seriale, e riproduci il problema con un ciclo open rapido e recv(0.0). Controlla i test esistenti dell’interfaccia SeeedStudio, se presenti, e fai in modo che il percorso di ricezione non bloccante gestisca una lettura vuota come il risultato previsto di nessun messaggio, senza sollevare TypeError.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
python-can crashes rarely with the error:
msg = self.bus.recv(0.0)
File "/nix/store/0amvifzhc5sv3p1b29dzwxd53njs74z3-python3.13-python-can-4.6.1/lib/python3.13/site-packages/can/bus.py", line 121, in recv
msg, already_filtered = self._recv_internal(timeout=time_left)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/nix/store/0amvifzhc5sv3p1b29dzwxd53njs74z3-python3.13-python-can-4.6.1/lib/python3.13/site-packages/can/interfaces/seeedstudio/seeedstudio.py", line 279, in _recv_internal
end_packet = ord(self.ser.read())
TypeError: ord() expected a character, but string of length 0 found
To Reproduce
Use a while true loop to open the device quickly.
For my use-case, I needed to implement a flush_rx_buffer() function on user-level:
Please ignore my comments in the code, they may be outdated.
def flush_rx_buffer(self):
"""Discarding the received buffer."""
# As python-can does not implement any discarding of old messages, see:
# https://github.com/hardbyte/python-can/issues/1721
# The recv(0.0) is probably a non-blocking function, see:
# https://python-can.readthedocs.io/en/3.3.2/interfaces/socketcan.html
# That non-blocking function should return immediately.
while True:
msg = self.bus.recv(0.0)
if msg is None:
return
Expected behavior
Instead of a TypeError I expected to receive a None.
Additional context
OS and version: NixOS
Python version: 3.13
python-can version: 4.6.1
python-can interface/s (if applicable): seeedstudio
I'm using an asus nuc 15, so quite a fast CPU. I don't remember this error to appear on the slow raspberry pi pico.
Traceback and logs
def func():
return "hello, world!"
- Lingua principale
- Python
- Stelle
- 1.6k
- Fork
- 697
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di hardbyte/python-can
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
hardbyte/python-can#2103 ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
hardbyte/python-can#2077 · 1 commento · 1 reazione ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
hardbyte/python-can#1922 · 1 reazione ·
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
hardbyte/python-can#2102 ·
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
hardbyte/python-can#2092 ·
Tutte le issue di hardbyte/python-can
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
anthropics/skills#1811 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
speaches-ai/speaches#678 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
datalayer/mcp-compose#42 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
conda-forge/spacy-feedstock#177 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
UKGovernmentBEIS/inspect_evals#2523 ·