' schrieb: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
In so einem Falle sag ich immer: Na, dann programmiers doch auch so.
Mach in die While-Schleife folgendes rein:
Hol dir ein Zeichen via VISA. Danach machst die eine CASE-Sequenz mit folgenden Fällen: Voreinstellung: nix tun (wenn keiner der folgenden Buchstaben oder gar kein Buchstabe); Buchstabe 'A' => Sende einmal ein 'B'; Buchstabe 'W' => Sende einmal ein 'N'; usw.
Du musst ja auf jedes a mit nur einem b antworten. Wenn dein Controller das b nicht erkennt, dann sendet er ja noch mals ein a. Oder anders ausgedrückt: solange er kein b erkennt sendet er a's (das sollte er im Raster von ca. 50ms tun. Das reicht).
Hm..könntetst du mir vielleicht ein Beispiel VI hier reinstellen?
Aber das Problem ist ja eigentlich das LabVIEW z.B. das 'a' garnicht erkennt, der liest stattdessen ein 'k' oder ein Klammer ")" und meldet immer Fehler!
Wenn ich das mit dem Terminalprogramm mache, dann liest der auch zwischendurch falsch, danach trenn ich die Verbindung und stell sie wieder her...meistens klappt es danach...aber ich weiß nicht was ich falsch gemacht haben könnte....
' schrieb:Hm..könntetst du mir vielleicht ein Beispiel VI hier reinstellen?
Geht nicht. Hier hab ich kein LV. Und LV-Sourcecode kann man ohne LV-IDE nicht schreiben.
Zitat:Aber das Problem ist ja eigentlich das LabVIEW z.B. das 'a' garnicht erkennt, der liest stattdessen ein 'k' oder ein Klammer ")" und meldet immer Fehler!
Wenn du genau weist, dass dein Controller nur 'a' sendet, dann wird auch LV nur 'a' ampfangen. Kommt da was anderes raus, dann kommt was anderes rein. Entweder stimmt dein Programm im Controller nicht oder die Schnittstellenparameter sind falsch.
Zitat:Wenn ich das mit dem Terminalprogramm mache, dann liest der auch zwischendurch falsch,
Das kann eigentlich gar nicht sein. Wenn du nur 'a' sendest, können nur 'a' empfangen werden, es sei denn ...
Hast du ein Oscilloscop? Dann probiere folgendes: Schreib in deinen Controller ein Programm, das alle 25ms das Zeichen 0x55 (oder 0xAA) sendet - und weiter nix. Dann misst du mit dem Oscilloscop nach: Bei 9600Baud müssen da mal Pegel sein, die ca. 110µs breit sind. Wenn die Pegel nicht so breit sind, dann passt die Baudrate nicht. Wenn die Baudrate passt, dann muss das Terminalprogramm immer den selben Buchstaben anzeigen. Erst dann sendet dein Controller richtig. Danach schreibst du ein LV-Programm, das nur einließt und anzeigt. Wenn das Terminalprogramm geht, wird auch das LV-Programm gehen.
Ok danke, ich werds mal ausprobieren!
Werd mich wieder melden wenn was passiert