INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Messwerte von Mikrocontroller



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

10.02.2015, 13:52
Beitrag #1

sunshine1234 Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Oct 2014

11.0
2013
DE_EN


Deutschland
Messwerte von Mikrocontroller
Hallo zusammen,

und zwar bestehe meine Aufgabe die Daten(Temperaturwerte), die ein Mikrocontroller fortlaufend sendet über die Serielle Schnittstelle einzulesen in Lab View einzulesen.
Die Daten kommen wie folgt:

3188 2003 FFFF FFFF FFFE 3142 4004 FFFF FFFF 0DF0 3160 FF05 FFFF FFFF 03B0 2FE0 FE01 FFFF FFFF 0328 3040 F802 FFFF FF13 C231 88E0 03FF FFFF FFFF FA31

5 Kanäle nacheinander
Es werden pro Kanal 10 Bytes verschickt.

Beispiel Kanal 1:
FFFF 03B0 2FE0 FE01 FFFF
Anfangskennung 2 Bytes FFFF
Temperaturwert 03B0
Gerätetemperatur 2FE0
Kanal: FE01(nur hintere Teil wichtig)
Endkennung 2 Bytes FFFF

Das Problem wenn ich das einlesen starte wird nie synchron mit dem Startbyte angefangen wie kann ich dies realisieren?
Hatte schon ausgetestet indem ich eine Abfrage mache und immer abfrage bis die ersten 2 Bytes (FFFF) übereinstimmen nur dann läuft der Speicher voll :-(

Hat jemand eine Idee oder zumindest ein Ansatz?

Vielen Dank im Vorraus.

Freundliche Grüße


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.02.2015, 14:52
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte von Mikrocontroller
Hallo sunshine,

Zitat:Das Problem wenn ich das einlesen starte wird nie synchron mit dem Startbyte angefangen wie kann ich dies realisieren?
Gar nicht. Dein PC weiß einfach nicht, wann eine Botschaft deines µC beginnt und endet. Und du fängst halt "irgendwann" mit dem Lesen/Empfangen an, während der Controller schon munter plaudert…

Aber du kannst deine Botschaften in einem String sammeln (per Anhängen aneinander) und jeweils beim "FFFF FFFF" den String auftrennen. Sollte wunderschön funktionieren…

Zitat:FFFF 03B0 2FE0 FE01 FFFF FFFF 0328 3040 F802 FFFF FF13 C231 88E0 03FF FFFF
Nach deiner Beschreibung dürfte es den rot markierten Wert nicht geben…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2015, 18:29
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Messwerte von Mikrocontroller
Das Synchronisierung auf einen "Datenstrom" hatten wir schon, z.B. hier oder hier.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2015, 19:44 (Dieser Beitrag wurde zuletzt bearbeitet: 10.02.2015 22:30 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Messwerte von Mikrocontroller
Die Start-Endeerkennung ist nicht eindeutig. In diesem String gibt es schon gleich am Anfang drei verschiedene 10-byte-Stringketten, die die Bedingung FFFF am Start und FFFF am Ende erfüllen. Das kann zu Missdeutungen führen.

3188 2003 FFFF FFFF FFFE 3142 4004 FFFF FFFF 0DF0 3160 FF05 FFFF FFFF 03B0 2FE0 FE01 FFFF FFFF 0328 3040 F802 FFFF FF13 C231 88E0 03FF FFFF FFFF FA31

3188 2003 FFFF FFFF FFFE 3142 4004 FFFF FFFF 0DF0 3160 FF05 FFFF FFFF 03B0 2FE0 FE01 FFFF FFFF 0328 3040 F802 FFFF FF13 C231 88E0 03FF FFFF FFFF FA31

3188 2003 FFFF FFFF FFFE 3142 4004 FFFF FFFF 0DF0 3160 FF05 FFFF FFFF 03B0 2FE0 FE01 FFFF FFFF 0328 3040 F802 FFFF FF13 C231 88E0 03FF FFFF FFFF FA31

3188 2003 FFFF FFFF FFFE 3142 4004 FFFF FFFF 0DF0 3160 FF05 FFFF FFFF 03B0 2FE0 FE01 FFFF FFFF 0328 3040 F802 FFFF FF13 C231 88E0 03FF FFFF FFFF FA31

Fazit: Das direkte Senden der Bytes sollte man nur dann vorsehen, wenn es es wirklich auf jede Mikrosekuude Übertragunszeit ankommt. Ist das bei Dir der Fall? Der Nachteil ist nämlich, dass man selbst ein sehr ausgeklügeltes System erfinden muss, um den Anfang eines Datensatzes zweifelsfrei zu erkennen. Das ist hier nicht der Fall, hier waren Amateure am Werk.

Normal is das Senden als direkt lesbarer Ascii-Code, also z.B. Senden der 2-byte Information FFFF als 4 Zeichen "F", gesendete Länge 4 byte, so wie es dasteht. Man hat dann jede Menge ansonsten nicht benutzter Steuerzeichen zur Verfügung und kann z.b über Steuerung mit TermEnd wunderbar die einzelnen Datensätze lesen. Aktiviert hast Du TermEnd ja schon (hier: sinnloserweise).

Nachtrag: Mir sind Zweifel gekommen, wie die Daten wirklich übertragen werden. Werden die 10 Bytes pro Kanal nun wirklich direkt gesendet - dann hätte man als Zeichenkette 10 meist nicht darstellbare ASCII-Zeichen.Oder kommen pro Kanal 20 ASCII-Zeichen an, und zwar genau die Zeichen, wie sie von Dir gepostet wurden? Die Zeichenkette enthält dann im Informationsteil nur die Zeichen 0..9, A..F, evtl. noch Leerzeichen, Komma oder Dezimalpunkt, Tabulator. Zur Synchronisation würde man dann sinnvollerweis andere als die oben aufgelisteten verwenden, also z.B das Zeilenendezeichen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.02.2015, 17:31
Beitrag #5

sunshine1234 Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Oct 2014

11.0
2013
DE_EN


Deutschland
RE: Messwerte von Mikrocontroller
Hallo Zusammen,
habe mir das Problem nun näher angeschaut.

Das Problem mit den Start- und Endbyte´s wurde beseitigt die Synchronisation ist vorhanden.

Habe nun versucht nach der Aufteilungstechnik(Strings schneiden) zu arbeiten und bin dann zu folgendem Ergebnis gekommen.
Wieso kann ich den String einzeln einlesen und nicht über die Serielle Schnittstelle?

Wäre gut wenn jemand drüber schauen könnte glaube nicht das es sauber gemacht wurde vielleicht hat da jemand eine andere Idee welche sauberer programmiert ist.

Viele Grüße und Danke für eure Hilfe

lv11_img


Angehängte Datei(en) Thumbnail(s)
   

11.0 .vi  Einlesen1.3.vi (Größe: 95,52 KB / Downloads: 243)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.02.2015, 18:28 (Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2015 18:28 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte von Mikrocontroller
Hallo sunshine,

was hast du denn da für eine Tapete produziert?
Und warum passt du nicht auf den Darstellungsmodus deiner Stringkonstanten auf?

Beispiel:
   
Achte auf die Darstellungsmodi der Stringkonstanten und der Arrayanzeigen im Bild!
Das Beispiel ist strikt nach deinen Angaben programmiert, es fehlt die komplette Fehlerbehandlung!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  String von Mikrocontroller einlesen mit Listbox tatnau 4 5.150 17.08.2015 10:06
Letzter Beitrag: tatnau
  Erkennung wenn Mikrocontroller Daten schickt kallejoerg 4 6.293 17.11.2014 09:50
Letzter Beitrag: kallejoerg
  Kommunikation Mikrocontroller LabVIEW cRyo 4 6.240 29.06.2012 11:57
Letzter Beitrag: cRyo
  Anschlussproblem bei Arduino Duemilanove compatiblem Mikrocontroller rekorn 1 4.978 29.11.2011 17:49
Letzter Beitrag: rekorn
  Mikrocontroller über RS 232 Bird 2 6.206 08.05.2008 07:57
Letzter Beitrag: rolfk

Gehe zu: