Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[python] I2C uitlezen onbekend aantal chars

Pagina: 1
Acties:

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 22-11 18:14
Ik heb een arduino nano (slave) die verbonden is via I2C met een raspberry pi (master).
Via SMBus maak ik de verbinding en kan ik zaken sturen en ontvangen.

verzenden via write_block_data(address, job, com)
ontvangen via een for loop met read_byte(address)


Voor het ontvangen moet ik echter weten hoeveel bytes er moeten uitgezen worden (voor de for loop).
Nu wil ik de arduino iets laten sturen die geen vaste lengte heeft...
Op de arduino bestaat er zoiets als wire.available(), maar ik kan geen equivalent vinden voor python.
Bestaat dit, of is een vooraf gekende lengte noodzakelijk?

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 22-11 13:38
Je zou in plaats van een for loop toch ook een while loop kunnen gebruiken? :)

My favorite programming language is solder.


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Het is al weer een tijdje geleden dat ik met I2C bezig was, maar als het goed is kun je aan de hand van de state van de wires uitlezen of er nog meer data komt of niet. Heeft dus niet zo heel veel met Python te maken, maar waarschijnlijk meer met de library die je gebruikt.

Maar vooraf weet je dus niet exact hoeveel bytes er zijn, maar je kunt tijdens het lezen telkens bepalen of je op het eind bent of niet. Een for-loop met fixed aantal is dus niet handig, maar je kunt natuurlijk prima een while loop gebruiken of de for condition niet een check tegen een counter laten zijn.

[ Voor 36% gewijzigd door Woy op 15-12-2013 20:22 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 13:12
De I2C master/slave zet een STOP conditie op de bus als er geen data meer komt. Dit werkt echter vrij onhandig, dus als je zelf controle hebt over het frame formaat kun je in de data zetten hoeveel data er verstuurd/ontvangen moet gaan worden.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.