05.10.2007, 19:13
Beitrag #1
|
Robertino
LVF-Grünschnabel
Beiträge: 17
Registriert seit: Jan 2006
8.5
2005
kA
51105
Deutschland
|
Serielleschnittstelle synchronisieren
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
|
|
|
05.10.2007, 21:11
Beitrag #2
|
Dennis.Moser
Administrator
Beiträge: 3.045
Registriert seit: Aug 2004
5.1 : 7.1 : 8.x : 20xx
1997
DE_EN
57589
Deutschland
|
Serielleschnittstelle synchronisieren
hallo roberino,
pose doch mal dein vi ?!
normal sollte das funktionieren...
Wissen ist das einzige Gut das sich vermehrt, wenn man es teilt!
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
BC: 14vqy6mgfswpX6z7HLVxk1h3sHAvzE4aZG
|
|
|
06.10.2007, 09:06
(Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2007 14:58 von jg.)
Beitrag #3
|
|
|
06.10.2007, 11:41
Beitrag #4
|
dc6xs
registered alien
Beiträge: 762
Registriert seit: Aug 2006
6.1,7.00
2006
kA
79106
Sonstige
|
Serielleschnittstelle synchronisieren
' 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
Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.
N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
|
|
|
06.10.2007, 13:46
Beitrag #5
|
Robertino
LVF-Grünschnabel
Beiträge: 17
Registriert seit: Jan 2006
8.5
2005
kA
51105
Deutschland
|
Serielleschnittstelle synchronisieren
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
|
|
|
06.10.2007, 14:02
Beitrag #6
|
dc6xs
registered alien
Beiträge: 762
Registriert seit: Aug 2006
6.1,7.00
2006
kA
79106
Sonstige
|
Serielleschnittstelle synchronisieren
' 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
Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.
N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
|
|
|
06.10.2007, 21:31
Beitrag #7
|
Robertino
LVF-Grünschnabel
Beiträge: 17
Registriert seit: Jan 2006
8.5
2005
kA
51105
Deutschland
|
Serielleschnittstelle synchronisieren
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
|
|
|
07.10.2007, 11:00
Beitrag #8
|
IchSelbst
LVF-Guru
Beiträge: 3.697
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Serielleschnittstelle synchronisieren
' schrieb:Also an LabVIEW liegt es sicher nicht?
An LV sicher nicht, wenn dann an dem Programm, das mit mit LV geschrieben hast.
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?
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
07.10.2007, 11:12
Beitrag #9
|
Robertino
LVF-Grünschnabel
Beiträge: 17
Registriert seit: Jan 2006
8.5
2005
kA
51105
Deutschland
|
Serielleschnittstelle synchronisieren
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?
|
|
|
07.10.2007, 11:30
|
dc6xs
registered alien
Beiträge: 762
Registriert seit: Aug 2006
6.1,7.00
2006
kA
79106
Sonstige
|
Serielleschnittstelle synchronisieren
' 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
Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.
N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
|
|
|
| |