Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.sci.electronics > #221421 > unrolled thread
| Started by | Manuel Reimer <manuel.nulldevice@nurfuerspam.de> |
|---|---|
| First post | 2017-01-22 11:57 +0100 |
| Last post | 2017-01-23 08:12 +0100 |
| Articles | 20 on this page of 23 — 11 participants |
Back to article view | Back to de.sci.electronics
Effizientes serielles Protokoll für Arduino? Manuel Reimer <manuel.nulldevice@nurfuerspam.de> - 2017-01-22 11:57 +0100
Re: Effizientes serielles Protokoll für Arduino? Christian Zietz <newsgroup.1001@chz.xyz> - 2017-01-22 12:18 +0100
Re: Effizientes serielles Protokoll für Arduino? Michael Schwingen <news-1457978346@discworld.dascon.de> - 2017-01-22 11:29 +0000
Re: Effizientes serielles Protokoll für Arduino? Christian Zietz <newsgroup.1001@chz.xyz> - 2017-01-22 13:25 +0100
Re: Effizientes serielles Protokoll für Arduino? Hermann Riemann <nospam.gerct08@hermann-riemann.de> - 2017-01-22 14:10 +0100
Re: Effizientes serielles Protokoll für Arduino? Christian Zietz <newsgroup.1001@chz.xyz> - 2017-01-22 15:00 +0100
Re: Effizientes serielles Protokoll für Arduino? Hermann Riemann <nospam.gerct08@hermann-riemann.de> - 2017-01-22 15:11 +0100
Re: Effizientes serielles Protokoll für Arduino? Manuel Reimer <manuel.nulldevice@nurfuerspam.de> - 2017-01-22 17:13 +0100
Re: Effizientes serielles Protokoll für Arduino? Michael Schwingen <news-1457978346@discworld.dascon.de> - 2017-01-22 19:40 +0000
Re: Effizientes serielles Protokoll für Arduino? Michael Schwingen <news-1457978346@discworld.dascon.de> - 2017-01-22 19:47 +0000
Re: Effizientes serielles Protokoll für Arduino? Michael Schwingen <news-1457978346@discworld.dascon.de> - 2017-01-22 19:32 +0000
Re: Effizientes serielles Protokoll für Arduino? "MaWin" <me@private.net> - 2017-01-22 12:20 +0100
Re: Effizientes serielles Protokoll für Arduino? Manuel Reimer <manuel.nulldevice@nurfuerspam.de> - 2017-01-22 17:07 +0100
Re: Effizientes serielles Protokoll für Arduino? "MaWin" <me@private.net> - 2017-01-22 19:22 +0100
Re: Effizientes serielles Protokoll für Arduino? Martin Τrautmann <t-usenet@gmx.net> - 2017-01-22 12:40 +0000
Re: Effizientes serielles Protokoll für Arduino? Hermann Riemann <nospam.gerct08@hermann-riemann.de> - 2017-01-22 14:04 +0100
Re: Effizientes serielles Protokoll für Arduino? Ralph Aichinger <ra@pi.h5.or.at> - 2017-01-22 12:32 +0100
Re: Effizientes serielles Protokoll für Arduino? Hermann Riemann <nospam.gerct08@hermann-riemann.de> - 2017-01-22 15:56 +0100
Re: Effizientes serielles Protokoll für Arduino? Manuel Reimer <manuel.nulldevice@nurfuerspam.de> - 2017-01-22 17:14 +0100
Re: Effizientes serielles Protokoll für Arduino? Holger <me@privacy.org> - 2017-01-22 16:55 +0100
Re: Effizientes serielles Protokoll für Arduino? Stefan <df9bi@arcor.de> - 2017-01-23 10:24 +0100
Re: Effizientes serielles Protokoll für Arduino? "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> - 2017-01-23 11:20 +0000
Re: Effizientes serielles Protokoll für Arduino? Edzard Egberts <news@edzeg.net> - 2017-01-23 08:12 +0100
Page 1 of 2 [1] 2 Next page →
| From | Manuel Reimer <manuel.nulldevice@nurfuerspam.de> |
|---|---|
| Date | 2017-01-22 11:57 +0100 |
| Subject | Effizientes serielles Protokoll für Arduino? |
| Message-ID | <o6233i$h5i$1@dont-email.me> |
Hallo, ich brauche ein Protokoll um drei verschiedene Werte zu übertragen. Jeder Wert hat die Länge von einem Byte. Die volle Länge des Bytes wird genutzt. Ich habe also keine "Magic-Values" die ich zum Synchronisieren verwenden könnte. Die Werte kommen nicht immer in der selben Reihenfolge. Es kommt auf Geschwindigkeit an. Es handelt sich um einen Datenstrom der mit möglichst geringem Delay vom PC zum Arduino soll. Ich habe also keinen Platz die Werte erst aufwendig in ein XML oder wasauchimmer zu basteln. Mein aktueller Plan: Ich splitte ein Byte auf 2*4 Bit: 8765 4321 ^ ^ | '- Nutzdaten '------ Adresse Ich brauche also für jedes Byte zwei Bytes und zwei Adressen, kann die Werte aber in beliebiger Reihenfolge vom PC zum Arduino senden. Am Arduino müsste ich dann den ersten Teil des Bytes cachen und erst wenn der zweite Teil kommt kann kombiniert und verarbeitet werden. Geht es eleganter/schneller? Danke im Voraus Gruß Manuel
[toc] | [next] | [standalone]
| From | Christian Zietz <newsgroup.1001@chz.xyz> |
|---|---|
| Date | 2017-01-22 12:18 +0100 |
| Message-ID | <eejip7FabioU1@mid.individual.net> |
| In reply to | #221421 |
> Ich splitte ein Byte auf 2*4 Bit: > > 8765 4321 > ^ ^ > | '- Nutzdaten > '------ Adresse > > Ich brauche also für jedes Byte zwei Bytes und zwei Adressen, kann die > Werte aber in beliebiger Reihenfolge vom PC zum Arduino senden. Warum so umständlich? Wenn Du eh mit zwei Bytes pro Nutzbyte arbeitest, dann doch lieber: ID(8bit) Nutzbyte(8bit). Welchen Sinn hat es, die zwei Nibbles des Nutzbytes so umständlich aufzuteilen, wie Du es oben beschreibst? > Geht es eleganter/schneller? Gleich 10 Bit lange Frames übertragen? Also ID(2bit) Nutzbyte(8bit). Du schreibst ja nichts dazu, wie Deine Übertragung abläuft. Ist die Schnittstelle auf ganze Bytes beschränkt? Christian -- Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA
[toc] | [prev] | [next] | [standalone]
| From | Michael Schwingen <news-1457978346@discworld.dascon.de> |
|---|---|
| Date | 2017-01-22 11:29 +0000 |
| Message-ID | <slrno895t5.4m1.news-1457978346@a-tuin.ms.intern> |
| In reply to | #221423 |
On 2017-01-22, Christian Zietz <newsgroup.1001@chz.xyz> wrote: > > Warum so umständlich? Wenn Du eh mit zwei Bytes pro Nutzbyte arbeitest, > dann doch lieber: ID(8bit) Nutzbyte(8bit). Welchen Sinn hat es, die zwei > Nibbles des Nutzbytes so umständlich aufzuteilen, wie Du es oben > beschreibst? Synchronisation. Wenn Du bei Deinem Verfahren einmal ein Byte verlierst, hast Du keine Chance mehr, zu erkennen, was ID und was Daten sind. cu Michael
[toc] | [prev] | [next] | [standalone]
| From | Christian Zietz <newsgroup.1001@chz.xyz> |
|---|---|
| Date | 2017-01-22 13:25 +0100 |
| Message-ID | <eejml5Fb9k4U1@mid.individual.net> |
| In reply to | #221425 |
Michael Schwingen schrieb: > Synchronisation. Wenn Du bei Deinem Verfahren einmal ein Byte verlierst, > hast Du keine Chance mehr, zu erkennen, was ID und was Daten sind. Zugegeben. Um zu wissen, ob das aber überhaupt ein Problem ist, müsste Manuel seine Schnittstelle auch mal beschreiben. Übertragung "vom PC zum Arduino" kann ja alles sein von seriellem Bit-Banging bis zu HTTP über WLAN. Christian -- Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA
[toc] | [prev] | [next] | [standalone]
| From | Hermann Riemann <nospam.gerct08@hermann-riemann.de> |
|---|---|
| Date | 2017-01-22 14:10 +0100 |
| Message-ID | <eejpasFbt7vU1@mid.individual.net> |
| In reply to | #221425 |
Am 22.01.2017 um 12:29 schrieb Michael Schwingen:
> Synchronisation. Wenn Du bei Deinem Verfahren einmal ein Byte verlierst,
> hast Du keine Chance mehr, zu erkennen, was ID und was Daten sind.
1. Mit einem timer eine Ruhepause einlegen
und danach wieder Sendebeginn.
2. Die ID belegt nicht alle Werte im Bereich 0:255.
Bei einem nicht durch ID belegten Inhalt sollte es ich
um ein Datenbyte handeln.
Hermann
der allerdings bei jedem Verfahren das Risiko
fehlerhafte Daten sieht,
und Daten kein IoT-Vertrauen entgegen bringen mag.
--
http://www.hermann-riemann.de
[toc] | [prev] | [next] | [standalone]
| From | Christian Zietz <newsgroup.1001@chz.xyz> |
|---|---|
| Date | 2017-01-22 15:00 +0100 |
| Message-ID | <eejs7oFcj58U1@mid.individual.net> |
| In reply to | #221432 |
Hermann Riemann schrieb: > 1. Mit einem timer eine Ruhepause einlegen > und danach wieder Sendebeginn. > > 2. Die ID belegt nicht alle Werte im Bereich 0:255. > Bei einem nicht durch ID belegten Inhalt sollte es ich > um ein Datenbyte handeln. 3. Man kann die sonst ungenutzten 6 Bits der ID auch eine Checksumme über ID und Daten reinpacken. Das verringert die Wahrscheinlichkeit weiter, dass man ein Nutzbyte fälschlicherweise als ID-Byte betrachtet und sichert zusätzlich noch gegen Übertragungsfehler, gegen die Manuels ursprüngliche Idee machtlos ist. CRC-6 wäre vielleicht übertrieben: <http://reveng.sourceforge.net/crc-catalogue/1-15.htm#crc.cat-bits.6>. Übrigens: Wenn wir uns schon Sorgen über den Verlust der Synchronsation machen, wer sagt denn, dass bei Manuels Schnittstelle nicht auch die Synchronsation auf Bytegrenzen verloren gehen kann? Christian -- Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA
[toc] | [prev] | [next] | [standalone]
| From | Hermann Riemann <nospam.gerct08@hermann-riemann.de> |
|---|---|
| Date | 2017-01-22 15:11 +0100 |
| Message-ID | <eejsslFco0sU1@mid.individual.net> |
| In reply to | #221435 |
Am 22.01.2017 um 15:00 schrieb Christian Zietz:
> Übrigens: Wenn wir uns schon Sorgen über den Verlust der Synchronsation
> machen, wer sagt denn, dass bei Manuels Schnittstelle nicht auch die
> Synchronsation auf Bytegrenzen verloren gehen kann?
Da gibt es start- und stop-bit
http://www.elektronik-labor.de/RS232/RS232_2.htm
Oder ungerades paritybit.
Wenn das die Synchronisation nicht stimmt, gibt es bemerkbare
Übertragungsfehler.
Hermann
der meint, 2-bit-Fahle würden
bei parity-Verfahren nicht bemerkt.
--
http://www.hermann-riemann.de
[toc] | [prev] | [next] | [standalone]
| From | Manuel Reimer <manuel.nulldevice@nurfuerspam.de> |
|---|---|
| Date | 2017-01-22 17:13 +0100 |
| Message-ID | <o62lke$v9l$1@dont-email.me> |
| In reply to | #221435 |
On 01/22/2017 03:00 PM, Christian Zietz wrote: > Übrigens: Wenn wir uns schon Sorgen über den Verlust der Synchronsation > machen, wer sagt denn, dass bei Manuels Schnittstelle nicht auch die > Synchronsation auf Bytegrenzen verloren gehen kann? Wie schon an anderer Stelle angefügt: Es geht um einen USB2Serial-Wandler am Atmel (Standard "Arduino-Verschaltung"). Bytes werden also auf Übertragungsweg bereits einigermaßen sauber auseinandergehalten. Deshalb ja auch meine Idee die Bytes nochmal zu spalten um Adresse und Nutzdaten in je einem "Datenpaket" zu übertragen. Gruß Manuel
[toc] | [prev] | [next] | [standalone]
| From | Michael Schwingen <news-1457978346@discworld.dascon.de> |
|---|---|
| Date | 2017-01-22 19:40 +0000 |
| Message-ID | <slrno8a2l7.4m1.news-1457978346@a-tuin.ms.intern> |
| In reply to | #221435 |
On 2017-01-22, Christian Zietz <newsgroup.1001@chz.xyz> wrote: > Hermann Riemann schrieb: > >> 1. Mit einem timer eine Ruhepause einlegen >> und danach wieder Sendebeginn. >> >> 2. Die ID belegt nicht alle Werte im Bereich 0:255. >> Bei einem nicht durch ID belegten Inhalt sollte es ich >> um ein Datenbyte handeln. > > 3. Man kann die sonst ungenutzten 6 Bits der ID auch eine Checksumme > über ID und Daten reinpacken. Das verringert die Wahrscheinlichkeit > weiter, dass man ein Nutzbyte fälschlicherweise als ID-Byte betrachtet > und sichert zusätzlich noch gegen Übertragungsfehler, gegen die Manuels > ursprüngliche Idee machtlos ist. > > CRC-6 wäre vielleicht übertrieben: ><http://reveng.sourceforge.net/crc-catalogue/1-15.htm#crc.cat-bits.6>. > > Übrigens: Wenn wir uns schon Sorgen über den Verlust der Synchronsation > machen, wer sagt denn, dass bei Manuels Schnittstelle nicht auch die > Synchronsation auf Bytegrenzen verloren gehen kann? > > Christian
[toc] | [prev] | [next] | [standalone]
| From | Michael Schwingen <news-1457978346@discworld.dascon.de> |
|---|---|
| Date | 2017-01-22 19:47 +0000 |
| Message-ID | <slrno8a330.4m1.news-1457978346@a-tuin.ms.intern> |
| In reply to | #221477 |
On 2017-01-22, Michael Schwingen <news-1457978346@discworld.dascon.de> wrote: Hm - keine Ahnung, wo mein text hin verschwunden ist ... >>> 1. Mit einem timer eine Ruhepause einlegen >>> und danach wieder Sendebeginn. Auf Multitasking-PC mit FIFO-Uart (gar per USB) u.U. schwierig umzusetzen. >>> 2. Die ID belegt nicht alle Werte im Bereich 0:255. >>> Bei einem nicht durch ID belegten Inhalt sollte es ich >>> um ein Datenbyte handeln. Das ist aber nur gut geraten und nicht wirklich sicher. >> Übrigens: Wenn wir uns schon Sorgen über den Verlust der Synchronsation >> machen, wer sagt denn, dass bei Manuels Schnittstelle nicht auch die >> Synchronsation auf Bytegrenzen verloren gehen kann? Was meinst Du mit "Synchronsation auf Bytegrenzen"? Bytes konnen verlorengehen oder verfälscht werden. Mit beidem sollte ein gutes Protokoll klarkommen. Ob man verfälschte Daten erkennen und aussortieren muss, hängt von der Auswirkung ab - neu aufsynchronisieren muß aber auf jeden Fall gehen. Wenn man eh 2 Bytes übertragen muss, ist das auch kein Problem - Beispiel: Byte 0: 1iixxxxd Byte 1: 0ddddddd ii = ID, dddddddd = Daten. Wenn nötig kann man in xxxx CRC, Parity oder sonstwas unterbringen. cu Michael
[toc] | [prev] | [next] | [standalone]
| From | Michael Schwingen <news-1457978346@discworld.dascon.de> |
|---|---|
| Date | 2017-01-22 19:32 +0000 |
| Message-ID | <slrno8a26a.4m1.news-1457978346@a-tuin.ms.intern> |
| In reply to | #221432 |
On 2017-01-22, Hermann Riemann <nospam.gerct08@hermann-riemann.de> wrote: >> Synchronisation. Wenn Du bei Deinem Verfahren einmal ein Byte verlierst, >> hast Du keine Chance mehr, zu erkennen, was ID und was Daten sind. > > 1. Mit einem timer eine Ruhepause einlegen > und danach wieder Sendebeginn. Das ist auf einem Multitasking-PC mit FIFO-UART u.U. schwierig hinzubekommen. > 2. Die ID belegt nicht alle Werte im Bereich 0:255. > Bei einem nicht durch ID belegten Inhalt sollte es ich > um ein Datenbyte handeln. Geht. Andererseits kann man dann auch die Daten so splitten, daß man jedem Byte eindeutig ansehen kann, ob es ID oder Daten sind, und hat nicht das Problem, raten zu müssen. Verfälschte Daten sind vermutlich eher selten, Synchronisationsfehler nicht - da reicht es, das PC-Programm abzuschiessen und neu zu starten, damit sollte das Verfahren sauber klarkommen. cu Michael
[toc] | [prev] | [next] | [standalone]
| From | "MaWin" <me@private.net> |
|---|---|
| Date | 2017-01-22 12:20 +0100 |
| Message-ID | <o624h7$cbi$1@news.albasani.net> |
| In reply to | #221421 |
"Manuel Reimer" <manuel.nulldevice@nurfuerspam.de> schrieb im Newsbeitrag news:o6233i$h5i$1@dont-email.me... > Geht es eleganter/schneller? Mit Sicherheit. Aber bei der dürftigen Information z.B. über die tatsächlichen Wertebereiche der Byte-Werte und deren Wertabfole (z.B. zeitliche Erhebung) wird man sich nicht die Mühe im Rästelratehn machen. -- MaWin, Manfred Winterhoff, mawin at gmx dot net Homepage http://www.oocities.org/mwinterhoff/ dse-FAQ: http://dse-faq.elektronik-kompendium.de/
[toc] | [prev] | [next] | [standalone]
| From | Manuel Reimer <manuel.nulldevice@nurfuerspam.de> |
|---|---|
| Date | 2017-01-22 17:07 +0100 |
| Message-ID | <o62l8n$t0j$1@dont-email.me> |
| In reply to | #221424 |
On 01/22/2017 12:20 PM, MaWin wrote: >> Geht es eleganter/schneller? > > Mit Sicherheit. > Aber bei der dürftigen Information z.B. über die > tatsächlichen Wertebereiche der Byte-Werte und > deren Wertabfole (z.B. zeitliche Erhebung) wird > man sich nicht die Mühe im Rästelratehn machen. "Arduino-Standard-Serieller-Port". Also Byteweise über einen CH340G (USB-Serial-Wandler) zum Atmel. Gruß Manuel
[toc] | [prev] | [next] | [standalone]
| From | "MaWin" <me@private.net> |
|---|---|
| Date | 2017-01-22 19:22 +0100 |
| Message-ID | <o62t94$kb7$1@news.albasani.net> |
| In reply to | #221444 |
"Manuel Reimer" <manuel.nulldevice@nurfuerspam.de> schrieb im Newsbeitrag news:o62l8n$t0j$1@dont-email.me... > "Arduino-Standard-Serieller-Port". > Also Byteweise über einen CH340G (USB-Serial-Wandler) zum Atmel. Du verstehst nicht, wo das Problem liegt. Nciht bei der seriellen Übertragung. Sondern weill man wissen will, ob etwas eleganter geht, muss man alle Rahmenbedingungen kennen. Aus dem bischen, was du erzählst, kann man nicht erahnen, was denn die sinnvollste Lösung wäre. Allerdings nehme ich an, daß 1 Byte Kennung und 1 Byte Wert eleganter ist als deine Lösung und nicht so unpassend, daß es eine schlechte Lösung wäre. Nur vielleicht nicht die eleganteste. -- MaWin, Manfred Winterhoff, mawin at gmx dot net Homepage http://www.oocities.org/mwinterhoff/ dse-FAQ: http://dse-faq.elektronik-kompendium.de/
[toc] | [prev] | [next] | [standalone]
| From | Martin Τrautmann <t-usenet@gmx.net> |
|---|---|
| Date | 2017-01-22 12:40 +0000 |
| Message-ID | <slrno89a1v.aoo.t-usenet@ID-685.user.individual.de> |
| In reply to | #221421 |
On Sun, 22 Jan 2017 11:57:25 +0100, Manuel Reimer wrote: > ich brauche ein Protokoll um drei verschiedene Werte zu übertragen. > > Jeder Wert hat die Länge von einem Byte. Die volle Länge des Bytes wird > genutzt. Ich habe also keine "Magic-Values" die ich zum Synchronisieren > verwenden könnte. > > Die Werte kommen nicht immer in der selben Reihenfolge. > > Es kommt auf Geschwindigkeit an. Es handelt sich um einen Datenstrom der > mit möglichst geringem Delay vom PC zum Arduino soll. Ich habe also > keinen Platz die Werte erst aufwendig in ein XML oder wasauchimmer zu > basteln. Was ist daran so wahnsinnig kritisch? > Ich splitte ein Byte auf 2*4 Bit: > > 8765 4321 > ^ ^ > | '- Nutzdaten > '------ Adresse > > Ich brauche also für jedes Byte zwei Bytes und zwei Adressen, kann die > Werte aber in beliebiger Reihenfolge vom PC zum Arduino senden. Am > Arduino müsste ich dann den ersten Teil des Bytes cachen und erst wenn > der zweite Teil kommt kann kombiniert und verarbeitet werden. Warum so kompliziert? > Geht es eleganter/schneller? 1 Startbit, zwei Adressbits, ein Byte reicht für drei verschiedene Werte mit je einem Byte Dateninhalt. Enden kann das ganze mit Prüfbit (Parity) und evtl. Stopbit oder ganz ohne. Das sind Standard-Prozeduren, die so ziemlich jedes Modem-Protokoll schon beherrscht. Schönen Gruß Martin
[toc] | [prev] | [next] | [standalone]
| From | Hermann Riemann <nospam.gerct08@hermann-riemann.de> |
|---|---|
| Date | 2017-01-22 14:04 +0100 |
| Message-ID | <eejougFbqckU1@mid.individual.net> |
| In reply to | #221421 |
Am 22.01.2017 um 11:57 schrieb Manuel Reimer:
> ich brauche ein Protokoll um drei verschiedene Werte zu übertragen.
> Jeder Wert hat die Länge von einem Byte. Die volle Länge des Bytes wird
> genutzt. Ich habe also keine "Magic-Values" die ich zum Synchronisieren
> verwenden könnte.
Ich würde es so machen.
Die drei byte puffern und übertragen.
dann mit einem byte mit dem Wert 0x0F starten
und mit xor jedes nibble draufrechnen. (parity)
Dieses 4. byte Übertragen und im Ziel kontrollrechnen.
( Dort die gleiche Rechnung und mit dem 4. byte dann vergleichen.)
Mir die Fehlerrate merken.
Ist sie sehr klein, kann man das mit mehr bytes machen oder es lassen.
Soweit ich mich erinnere, wird, je nach Einstellung,
beim serieller Übertragung ohnehin bei jedem Byte ein serielles
parity Bit und hinzugefügt.
Wenn bei den 3 byte ein unvollständiger Adressbereich dabei ist,
kann man den fehlenden Adressbereich zweckentfremden.
Z.B.u.a. für Synchronisation.
> Die Werte kommen nicht immer in der selben Reihenfolge.
Das müssen Sender und Empfänger ohnehin wissen.
> Geht es eleganter/schneller?
Die meiste Zeit wird sehr wahrscheinlich bei der Übertragung verwenden.
(ca Bitrate /10)
Da sind 4 byte Übertragung, dafür mehr Berechnung schneller.
Bisher habe ich noch keinen Arduino im Betrieb gehabt.
Zwischen 2 Atari STs habe ich über die MIDI-Schnittstelle
über BIOS Aufrufe mal Daten Übertragen.
Beim Arduino gibt es Serial*.read() und Serial*.write(byte);
wobei * nichts 1,2, oder 3 ist (1 2 3 bei Arduino2560 ..)
wobei * als nichts auch zusätzlich über USB geht.
Was mir noch fehlt ist das (Linux) PC (und raspberry pi)
wenn ich ohne sketch
(auch 2 oder mehr Arduinos an USB hängen habe)
und sie von meinen eigenen C oder Python3 Programme
(ohne sudo..) auf gleiche Art aufrufen will.
Ich vermute es geht über /dev/tty*
Hermann
der die Kombination raspberry pi aktiver USB-Hub
Magnetplatte, Arduino z.B. für zweckmäßig hält
um häufig sich ändernde Messwerte zu speichern,
zumal sonst die maximale Überschreibzahl von
EEPROM und SD-Karte erreicht werden könnte.
Und er leicht erreichbares Ferro-RAM vermisst.
--
http://www.hermann-riemann.de
[toc] | [prev] | [next] | [standalone]
| From | Ralph Aichinger <ra@pi.h5.or.at> |
|---|---|
| Date | 2017-01-22 12:32 +0100 |
| Message-ID | <o6257v$6l4$1@pi.h5.or.at> |
| In reply to | #221421 |
Manuel Reimer <manuel.nulldevice@nurfuerspam.de> wrote:
> Ich brauche also für jedes Byte zwei Bytes und zwei Adressen, kann die
> Werte aber in beliebiger Reihenfolge vom PC zum Arduino senden. Am
> Arduino müsste ich dann den ersten Teil des Bytes cachen und erst wenn
> der zweite Teil kommt kann kombiniert und verarbeitet werden.
>
> Geht es eleganter/schneller?
Verwende Firmata.
https://github.com/firmata/protocol
https://www.arduino.cc/en/Reference/Firmata
Das Protokoll ist IIRC sehr ähnlich zu MIDI, und das war als Musikprotokoll
echtzeitoptimiert.
/ralph -- ja, ich hab mir auch mal ein Protokoll für sowas ausgedacht,
aber ich denke wenn irgendwie geht, sollte man Firmata verwenden.
[toc] | [prev] | [next] | [standalone]
| From | Hermann Riemann <nospam.gerct08@hermann-riemann.de> |
|---|---|
| Date | 2017-01-22 15:56 +0100 |
| Message-ID | <eejvgcFdbukU1@mid.individual.net> |
| In reply to | #221434 |
Am 22.01.2017 um 12:32 schrieb Ralph Aichinger:
> Verwende Firmata.
> https://github.com/firmata/protocol
Da steht:
commands bytes are 8 bits and data bytes are 7 bits
Sowas werde ich mir vermutlich nicht antun.
Momentan neige ich zu Nachrichten variabler Länge.
das 1. byte enthält 1+Länge des Paketes.
Der Empfänger entscheidet sich anhand des 1.bytes
(sofern vorhanden) wie damit umgehen. Beispiele
- ignorieren. (vereinzelte Synchronisation oder Hallo noch da? byte.
- ein lokaler Befehl (pseudocode)
- Alarmreaktion(en) wegen Ungültigkeit
(Sicherheitschecks, Chaos Schutzschirm)
- um den Anfang verkürzten Bereich weiterleiten (I2C, anderer port ..)
Hermann
der sich nahezu täglich über fremde software ärgert.
--
http://www.hermann-riemann.de
[toc] | [prev] | [next] | [standalone]
| From | Manuel Reimer <manuel.nulldevice@nurfuerspam.de> |
|---|---|
| Date | 2017-01-22 17:14 +0100 |
| Message-ID | <o62lmk$v9l$2@dont-email.me> |
| In reply to | #221434 |
On 01/22/2017 12:32 PM, Ralph Aichinger wrote: >> Ich brauche also für jedes Byte zwei Bytes und zwei Adressen, kann die >> Werte aber in beliebiger Reihenfolge vom PC zum Arduino senden. Am >> Arduino müsste ich dann den ersten Teil des Bytes cachen und erst wenn >> der zweite Teil kommt kann kombiniert und verarbeitet werden. >> >> Geht es eleganter/schneller? > > Verwende Firmata. > > https://github.com/firmata/protocol Schaue ich auf jedem Fall mal an. Danke für den Tipp. Gruß Manuel
[toc] | [prev] | [next] | [standalone]
| From | Holger <me@privacy.org> |
|---|---|
| Date | 2017-01-22 16:55 +0100 |
| Message-ID | <o62kl6$nfq$1@gioia.aioe.org> |
| In reply to | #221421 |
Am 22.01.2017 um 11:57 schrieb Manuel Reimer: > Hallo, > > ich brauche ein Protokoll um drei verschiedene Werte zu übertragen. > > Jeder Wert hat die Länge von einem Byte. Die volle Länge des Bytes wird > genutzt. Ich habe also keine "Magic-Values" die ich zum Synchronisieren > verwenden könnte. > > Die Werte kommen nicht immer in der selben Reihenfolge. > > Es kommt auf Geschwindigkeit an. Es handelt sich um einen Datenstrom der > mit möglichst geringem Delay vom PC zum Arduino soll. Ich habe also > keinen Platz die Werte erst aufwendig in ein XML oder wasauchimmer zu > basteln. Die einfachste Möglichkeit bestünde darin, ein Byte einfach in zwei ASCII-Zeichen zu verwandeln, um sie auf dem Arduino dann wieder ins Binäre umzusetzen. Holger
[toc] | [prev] | [next] | [standalone]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | de.sci.electronics
csiph-web