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!
07.11.2014, 10:36 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2014 11:19 von DeBa.)
und zwar habe ich ein Programm erstellt, das von einem Rechner Befehle über TCP/IP an ein Laser sendet, dieses Lasermodul verarbeitet (liest) diesen Wert aus einer Einheit (zum Beispiel die Temperatur) und gibt diesen Wert wieder zurück. Das funktioniert schon einmal. Aber leider lassen sich Befehle nicht einzeln senden. Bei jedem Sende und Empfang Vorgang muss der Befehl zum Login noch im Eingabefeld stehen. Ich würde aber gerne Befehle durch einzelne Eingabefelder hintereinander senden und die Empfangenen Daten einzeln anzeigen lassen. Ich habe schon ein paar Sachen versucht, aber hab es nicht geschafft es zum laufen zu bringen.
Anbei ist das lauffähige Programm [attachment=51273] und ein Bild, das das Problem zeigt.
Über Lösungen oder Vorschläge zum Lösen meines Problems würde ich mich freuen. Danke.
Und auch wichtig: Was sagt das Manual deines Lasers zu diesem Problem? Ohne weitere Informationen aus dieser Quelle kann man kaum Fehlersuche betreiben…
Zitat:Bei jedem Sende und Empfang Vorgang muss der Befehl zum Login noch im Eingabefeld stehen.
Du baust eine TCP-Verbindung auf, sendest einen Befehl, liest die Antwort (mit mangelhafter Fehlerverarbeitung) - und dann schließt du die Verbindung wieder.
Und jetzt wunderst du dich, warum du dich bei einem erneuten Kontaktversuch dem Gerät gegenüber mit Passwort ausweisen musst?
Zitat:Ich würde aber gerne Befehle durch einzelne Eingabefelder hintereinander senden und die Empfangenen Daten einzeln anzeigen lassen.
Dann mach das doch einfach. Aber halt ohne ständig die gerade erst aufgebaute Verbindung gleich wieder zu schließen…
Tipp zum String-Handling:
Kein Grund, zwei Bytes einzeln in ein Array zu packen und diese dann jeweils in Strings umzuwandeln…
ich habe den Fehler in meinem Programm gefunden. Bei dem String Handling zum Senden der Befehle habe ich ein String Abschluss durch ein Line Feed ersetzt.
Es lassen sich jetzt Befehle/Antworten nacheinander senden/auslesen.
(10.11.2014 10:47 )DeBa schrieb: ... Bei dem String Handling zum Senden der Befehle habe ich ein String Abschluss durch ein Line Feed ersetzt.
Was ist ein String Abschluss?!
Du hast doch immernoch ein String-Abschluss, nämlich nun dein LineFeed. Im übrigen würde ich dort direkt mit der LV-Konstante für ein LF rangehen - das macht deinen Code lesbarer (man muss jedenfalls nicht den entsprechenden Code für´s LineFeed wissen.
Außerdem öffnet und schließt dein VI immernoch die Schnittstelle, was zu Problemen führen wird, wenn du dieses VI als Sub-VI einsetzen willst.
Auf die Umwege, die deine Drähte machen, will ich mal nicht weiter eingehen.
(10.11.2014 10:47 )DeBa schrieb: ... Bei dem String Handling zum Senden der Befehle habe ich ein String Abschluss durch ein Line Feed ersetzt.
Was ist ein String Abschluss?!
Du hast doch immernoch ein String-Abschluss, nämlich nun dein LineFeed. Im übrigen würde ich dort direkt mit der LV-Konstante für ein LF rangehen - das macht deinen Code lesbarer (man muss jedenfalls nicht den entsprechenden Code für´s LineFeed wissen.
Außerdem öffnet und schließt dein VI immernoch die Schnittstelle, was zu Problemen führen wird, wenn du dieses VI als Sub-VI einsetzen willst.
Auf die Umwege, die deine Drähte machen, will ich mal nicht weiter eingehen.
Gruß, Marko
Das Nullzeichen eben, anstatt String Abschluss. Wie genau würde so was aussehen (LV Konstante)?
Bis jetzt ist noch kein Fehler aufgetreten, trotz Sub-VI`s. Vllt. wird dieses noch kommen, da kenne ich mich noch nicht wirklich aus, bin blutiger LabView Anfänger. Die Umwege sind auf Grund dessen, da es sich hierbei nur um die Testversion handelt.
(11.11.2014 08:55 )DeBa schrieb: Das Nullzeichen eben, anstatt String Abschluss. Wie genau würde so was aussehen (LV Konstante)?
Bis jetzt ist noch kein Fehler aufgetreten, trotz Sub-VI`s. Vllt. wird dieses noch kommen, da kenne ich mich noch nicht wirklich aus, bin blutiger LabView Anfänger. Die Umwege sind auf Grund dessen, da es sich hierbei nur um die Testversion handelt.
Gruss Dennis
Der String-Abschluss ist nach meinem Verständnis das Zeichen bzw. der Trailer, der den zu sendenden String abschließt. Das kann deine "0" sein oder ein LF oder ein CR oder was sonst noch. Wichtig ist, was die Gegenstelle als Abschluss erwartet, um die Befehlseingabe abzuschließen.
Deine Schnittstellenaufzumacherei wird sich später rechen, wenn du dieses VI als SubVI verwendest. (Als Test-VI isses OK) Ansonsten übergibt man dem Sende-VI die geöffnete Schnittstelle und sendet/empfängt eben nur .
Die LF-Konstante ist wie auch die TAB- und CR-Konstante in der Stringpalette zu finden
Der String-Abschluss ist nach meinem Verständnis das Zeichen bzw. der Trailer, der den zu sendenden String abschließt. Das kann deine "0" sein oder ein LF oder ein CR oder was sonst noch. Wichtig ist, was die Gegenstelle als Abschluss erwartet, um die Befehlseingabe abzuschließen.
Deine Schnittstellenaufzumacherei wird sich später rechen, wenn du dieses VI als SubVI verwendest. (Als Test-VI isses OK) Ansonsten übergibt man dem Sende-VI die geöffnete Schnittstelle und sendet/empfängt eben nur .
Die LF-Konstante ist wie auch die TAB- und CR-Konstante in der Stringpalette zu finden
Gruß, Marko
Alles klar, dann wird ich das so machen. Habe es gefunden. Danke.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Befehle einzeln Senden/Empfangen TCP/IP
Deine VIs haben schöne Icons.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------