1

Thema: Script Befehl TCP senden

Guten Tag,

ich bin seit kruzen Besitzer der Dragon professionell individuell 14 darum komme ich zu euch.

Ich habe eine Bat datei die im Grunde die Arbeit bereits erledigt in dieser steht folgendes

echo "lichtarbeit" | ncat 192.168.0.11 8000

mit diesem Code und der Hilfe von Netcat wird ein TCP Paket übermittelt welches dann das Licht einschaltet.

Mein erster Versuch war die bat Datei direkt auszuführen dies funktioniert allerdings nicht.
Daher meine Frage ist es möglich ein TCP Paket über die Skripterstellung zu versenden wie dies in Kommand möglich ist.

Freundlichen Grüßen

André

2

Re: Script Befehl TCP senden

Versuchen Sie es mit der Skript-Anweisung "shellexecute"

sub main
    ShellExecute "<ihre bat-Datei>"
end sub

Gruß, Pascal

3 Zuletzt bearbeitet von Nokman (02.10.2016 18:05:25)

Re: Script Befehl TCP senden

Guten Tag und Danke für die Antwort,

Beim herumstöbern bin ich gerade auch darauf gestossen. Doch das Fenster öffnet sich und schließt sich direkt wieder ohne seiner Arbeit auszuführen ich habe zum Testen ein Pausenbefehl in die Batch-Datei eingefügt aber dies wird anscheinend direkt übersprungen.

Beim direkten ausführen beim Starten der Batch-Datei wird es ausgeführt und die Pause eingehalten (also die Batch-Datei ist soweit funktionsfähig).

Gruß
André

4

Re: Script Befehl TCP senden

Hallo André
die Shellexecute-Anweisung benutzt als aktuelles Verzeichnis das Natspeak-Programmverzeichnis. Vielleicht liegt hierin die Ursache.
Ich habe kein Problem (unter Windows 10) mit dem Warte-Befehl "timeout" in der Batch-Datei. 10 Sekunden reichen, um die Ergebnisse der DOS-Anweisungen auszuwerten.
Gruß, Pascal

5 Zuletzt bearbeitet von Nokman (03.10.2016 17:33:24)

Re: Script Befehl TCP senden

Servus Pascal,

ich habe es versucht und die bat in die "C:\Program Files (x86)\Nuance\NaturallySpeaking14\Program" geschoben und der aufruf ist mit.

Sub Main
    ShellExecute "befehl.bat"
    TTSPlayString "Arbeitszimmer Licht"
End Sub

Ich nutze dazu auch Windows 10. in der Batch datei steht

echo "lichtarbeit" | ncat 192.168.0.11 8000
timeout 10

Das kann man Fenster geht kurz auf danach wird sofort der TTS Playstring abgespielt ich habe zum Testen der Batch-Datei volle Zugriffe gegeben ohne Erfolg. Danach habe ich die ncat Datei in das Verzeichnis geschoben und konnte es daher ausführen. Er hat wahrscheinlich den Befehl abgebrochen da er die Datei im System nicht fand. Das erste Problem des Ausführen ist behoben es müssen sich alle Programme in den Ordner befinden da er nicht auf das System zugreift (ich vermute mal wegen berechtigungs problemen).

Es ist allerdings ein anderes Problem aufgetreten die Datei wird doppelt teilweise 3 fach ausgeführt wird. Es äußert sich darin das zwei oder drei mal das Fenster gleichzeitig geöffnet wird.

Grüße
André

Ergänzung: es ist dabei nur wichtig das die ncat Datei im Ordner "C:\Program Files (x86)\Nuance\NaturallySpeaking14\Program" befindet die Batch-Datei kann woanders sein.

Edit:
zum Fehler zwei fach Beziehungsweise dreifach starten habe ich bemerkt das wenn die Reihenfolge

Sub Main
ShellExecute "C:\Dragon\befehl.bat"
    TTSPlayString "Arbeitszimmer Licht"
    GoToSleep
End Sub

ist das die Batch-Datei dreimal ausgeführt wird

wenn:

Sub Main
ShellExecute "C:\Dragon\befehl.bat"
    TTSPlayString "Arbeitszimmer Licht"
End Sub

wird die Batch-Datei zweimal ausgeführt

wenn:

Sub Main
ShellExecute "C:\Dragon\befehl.bat"
End Sub

wird die Batch-Datei einmal ausgeführt

Zum beheben zum beheben muss die Batch-Datei am Ende stehen

Sub Main
    TTSPlayString "Arbeitszimmer Licht"
    GoToSleep
    ShellExecute "C:\Dragon\befehl.bat"
End Sub

so wird sie nur einmal ausgeführt.

6

Re: Script Befehl TCP senden

Nokman schrieb:

Es ist allerdings ein anderes Problem aufgetreten die Datei wird doppelt teilweise 3 fach ausgeführt wird. Es äußert sich darin das zwei oder drei mal das Fenster gleichzeitig geöffnet wird.

Interessant. Müsste man weiter beobachten. Eins ist aber klar: Man kann nicht darauf bauen, dass im Dragon-Skript immer auf die Beendigung einer Aktion gewartet wird, bevor die naächste Anweisung ausgeführt wird. Deshalb müsste z.B. vor der TTSPlaystring-Anweisung ein Wait stehen.
Ansonsten ist die ganze Kopiererei garnicht nötig: ein CD-Statemant in der Batch-Datei bzw. eine vollständige Pfadangabe in Shellexecute wären viel eleganter gewesen.
Gruß, Pascal

7

Re: Script Befehl TCP senden

Da kann ich ihnen Zustimmen mit den CD wäre es auch gegangen. Im Grunde habe ich nur aufgezeigt das der Script es nicht die Möglichkeit hat Datei die im Systemordner liegen auszuführen was mit einfachen CMD geht.

Das mehrfach ausführen sehe ich im Moment als Fehler im Programm.