LabVIEWForum.de - Serielleschnittstelle synchronisieren

LabVIEWForum.de

Normale Version: Serielleschnittstelle synchronisieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich hätte mal folgende Frage zu folgendem Aufbau:
Ich habe einen Controller programmiert das er Buchstaben an den PC über die Serielle-Schnittstelle sendet.
Mit LabVIEW greife ich nun auf diese Schnittstelle und lese die aus, aber leider trifft der wohl nicht immer das Abschlusszeichen genau!
Der Controller schickt mir z.B. ein 'a' LabVIEW liest eine ")" oder ähnliches aus....kann mir da jemand helfen.
Muss ich LabVIEW dann irgendwie synchronisieren lassen oder sowas?
Weil eigentlich ist doch die Serielle Schnittstelle asynchron, oder nicht?

Wäre über Hilfe sehr Dankbar!

Grüße
Robertino
hallo roberino,

pose doch mal dein vi ?!

normal sollte das funktionieren...Wink
Hm...das ist eine gute Idee, hät ich vielleicht mal direkt machen sollen!
Ich muss noch dazu sagen, dass ich den Controller selber so programmiert habe, das der ständig ein 'a' schickt...
Aber leider erhalte ich immer nur Fehler, schon beim lesen!

Vielen Dank

(VI LV 7.1)
' schrieb:Hm...das ist eine gute Idee, hät ich vielleicht mal direkt machen sollen!
Ich muss noch dazu sagen, dass ich den Controller selber so programmiert habe, das der ständig ein 'a' schickt...
Aber leider erhalte ich immer nur Fehler, schon beim lesen!

Vielen Dank

Und was hast Du in Deinem Controller an Kodierung eingestellt? 6/7/8 Bits, welche Stoppbits, welche Parity?

Was passiert denn wenn Du mit einem Terminalprogramm (z.B. Hyperterm oder Terraterm) auf der Schnittstelle lauscht, an der der Controller hängt?

Gruß, Rob
1 Stopbit, 8 Datenbits...mehr nicht
Wenn ich mit Terminal die Seriellenschnittstelle abrufe, dann klappt das eigentlich recht gut, obwohl ich auch da zwischendurch nicht immer genau das 'a' "treffe", dann disconnecte ich mich und connecte mich wieder und dann klappt das nach einigen Versuchen.
Was komisch ist, wenn ich dem Controller über einen Schalter aus der Schleife springen lasse in eine andere und dann wieder zurück in die Schleife wo er Daten auf den Seriellport legt, dann liest er die Daten immer direkt richtig!
Kann es dann am Controller liegen? Wenn ja, hat jmd von euch Ahnung von Assembler?!

Bedankt
' schrieb:1 Stopbit, 8 Datenbits...mehr nicht
Wenn ich mit Terminal die Seriellenschnittstelle abrufe, dann klappt das eigentlich recht gut, obwohl ich auch da zwischendurch nicht immer genau das 'a' "treffe", dann disconnecte ich mich und connecte mich wieder und dann klappt das nach einigen Versuchen.
Was komisch ist, wenn ich dem Controller über einen Schalter aus der Schleife springen lasse in eine andere und dann wieder zurück in die Schleife wo er Daten auf den Seriellport legt, dann liest er die Daten immer direkt richtig!
Kann es dann am Controller liegen? Wenn ja, hat jmd von euch Ahnung von Assembler?!

Bedankt


Welchen Controller hast Du denn da in VErwendung?

Kann ja sein das der Controller wegen seiner Taktfrequenz und der PLL für die UART-Takterzeugung etwas am Rande der Toleranz liegt.

Probier doch einfach mal ne andere Geschwindigkeit aus.
Oder lass den Controller mehr als nur 'a' senden..

Gruß, Rob
Hab einen AT90S2313 drin...
Hab den an 4MHz dran, und bei einer Baudrate von 9600 liegt die Fehlertoleranz bei 0,2%....laut Datenblatt zumindest!

Also an LabVIEW liegt es sicher nicht?
Weil dann such ich meinen Fehler weiter an den Controller eigenschaften
' schrieb:Also an LabVIEW liegt es sicher nicht?
An LV sicher nicht, wenn dann an dem Programm, das mit mit LV geschrieben hast. Wink

Und da komm ich doch gleich zu einer Frage zu diesem Programm. Ich verstehe nämlich den Sinn des Programmes nicht ganz.

Sehe ich das richtig: Sobald ein 'a' kommt, wird quasi auf ewig ein 'b' mit einem anschließeneden 'n' gesendet (und das Abschlusszeichen /n ja auch noch jeweils). Die Rückkopplungsknoten nachen ja: einmal true, immer true. Ist das so gewollt? Ein 'a' empfangen und danach unendlich viele 'b' und 'n' senden? Nicht, dass mit den vielen b's dein Kontroller überfordert ist?

Oder hab' ich da was falsch verstanden?
Naja, der Sinn ist eigentlich einen Port anzusteuern....
Vielleicht habe ich das Programm im Controller ja auch falsch geschrieben, gut möglich.
Ich habe mir das so vorgestellt:
Der Controller meldet sich am PC mit einem a (oder in diesem Fall mehreren a's)...
Der PC bestätigt dem Controller das er "erhört" wird mit einem 'b'
Danach stellt der Controller auf eine andere Schleife um
Dort sendet er ein 'w'...hier wartet er nun das er vom PC ein 'n' um den Port einzuschalten oder ein 'f' um den Port wieder abzuschalten
Ich hatte vorher in der Schleife wo immer ein 'w' gesendet wird nichts dem PC gesendet, und darauf hin ist LabVIEW immer ab da abgestürtzt, deshalb habe ich die ewiglangen w's dahingepackt
Ist das so denn falsch? Kann/muss/soll ich das anders machen?
' schrieb:(...)
Kann/muss/soll ich das anders machen?
Würde mich da wegen des Protokolls am SCPI orientieren, oder hat der Controller noch viel anderes zutun, sodass die Rechenleistung nicht ausreicht um mehrere Strings aus dem ankommenden Datenstfrom heraus zufischen?

Gruß,
Rob
Seiten: 1 2
Referenz-URLs