2010-01-29 5 views
5

Ich habe eine eingebettete Anwendung entwickelt, die Statusinformationen von einem Gerät über einen Kommunikationskanal anfordert. Mein Kunde verlangt, dass diese mit einer bestimmten Zeit gesendet werden. Was ich suche, ist eine PC-Terminal-Anwendung, die einen Textstring-Befehl wiederholt in einem festgelegten Intervall über einen bestimmten Zeitraum senden kann. Ich verwende derzeit einen seriellen Gerätetester, der sofort eine festgelegte Zeichenfolge zurücksenden kann, wenn etwas an ihn gesendet wird, aber ich muss die Zeitperiode und die Anzahl der Wiederholungen steuern.COM-Port-Terminalprogramm

Gibt es irgendwelche Anwendungen (für Windows), die dies erreichen können?

Antwort

8

Docklight/Docklight Scripting Zum Testen von Anwendungen Kommunikation über die serielle Schnittstelle ist es das beste Werkzeug für den Job. Er wartet auf benutzerdefinierte Sequenzen am seriellen Port und kann dann eine Übertragung mit Parametern auslösen, die von der Eingangsnachricht oder Funktion in einem Skript abgeleitet sind.

Ich schrieb ein C++ - Programm, um eine eingebettete serielle Anwendung zu testen, und es war +/- 1000 Zeilen Code. Ich konnte dies durch etwa 20 Zeilen vb-Skript in Docklight Scripting ersetzen.

Docklight ist definitiv das Geld wert.

+0

Danke für den Link, der genau aussieht, was ich suche – droseman

0

können Sie die Planer Windows Task gebaut verwenden eine einfache Batch-Skript auszuführen, die Texte zu einem der COM-Port schreibt denken einige, wie

echo "Hell there" > COM1: 

Aber ich habe nicht getan dies in yers ist so meine Syntax ist rostig. Sonst könnten Sie ein einfaches 'Termulator'-Programm verwenden, das Scripting unterstützt - wieder habe ich das in einem Jahrzehnt nicht getan, denke ich.

0

Ich würde ein C# -Programm schreiben, um dies zu tun. Sie haben Bibliotheken, um die COM-Ports und Timer zu öffnen, um zu bestimmen, wann Daten gesendet werden sollen.

6

Ich würde dazu neigen, eine kurze python Skript zu tun, um dies zu tun (es kann zu einer eigenständigen ausführbaren Datei mit py2exe kompiliert werden, wenn das ist, was Sie brauchen). Installieren Sie python und pyserial. Verwenden Sie ein Skript wie folgt:

#!/usr/bin/python 
import time 
import serial 

# Interval in seconds 
interval = 2.5 

# Number of times to send 
repetitions = 10 

# Simple Command string 
command_string = "Hello World" 

# Or if it's a binary-type command: 
command_bytes = [0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64] 
command_string = "".join([chr(c) for c in command_bytes]) 

# Open the serial port - most of these settings have 
# defaults in case you want to be lazy 
ser = serial.Serial(
     port=0, # This is COM1, use 1 for COM2 etc 
     baudrate=115200, 
     parity=serial.PARITY_NONE, 
     stopbits=serial.STOPBITS_ONE, 
     xonxoff=0, 
     rtscts=0, 
     timeout=0) 

# Loop 'repetitions' times 
for i in range(repetitions): 
    # Send the string 
    ser.write(command_string) 
    # Go to sleep for "interval" seconds 
    time.sleep(interval) 

Wenn Sie jedoch eine herkömmliche Windows-Anwendung möchten, dann können Sie wahrscheinlich tun es mit Docklight, möglicherweise kombiniert mit Docklight Scripting (erhältlich von der gleichen Stelle).

5

Die serielle Terminal-Emulationsanwendung Tera Term verfügt über eine Skriptsprache, mit der zeitgesteuerte Schleifen eingerichtet werden können.

http://ttssh2.sourceforge.jp/

http://en.wikipedia.org/wiki/Tera_Term

+0

Das sieht wie eine gute Lösung für mich aus (obwohl Docklight noch nicht angeschaut). Ist es möglich, die rohen Hexadezimalzeichen auf der Verbindung gleichzeitig mit dem ASCII-Text anzuzeigen? – droseman

+0

Nicht sicher, ob Sie die empfangene Zeichenfolge/Daten auf dem Terminal in beiden Formaten anzeigen können; Sie können die empfangene Zeile jedoch möglicherweise zweimal in eine Protokolldatei schreiben. – simon

4

Ich benutze Realterm. Sie können Skripte dafür schreiben und diese Datei wiederholt senden lassen. Sie können Verzögerungen zwischen Zeichen oder Verzögerungen zwischen Zeilen hinzufügen. Es ist manchmal ein kleiner Buggy, aber es ist toll für den Preis (kostenlos).

http://realterm.sourceforge.net/

+0

ein anderes ausgezeichnetes Programm, danke - ich denke, dass dieser für meine eingebettete Arbeit relevanter ist. Eine Frage, wie würden Sie eine Zeichenfolge in CR LF mehrmals mit einer bestimmten Verzögerung (in diesem Fall 90ms) zwischen senden, sieht es aus wie das Wiederholungszeichen ist ein CR nur – droseman

+0

Erstellen Sie eine Datei mit den Zeichen, die Sie senden möchten in Ihrem Fall CR LF. Möglicherweise müssen Sie anstelle eines Texteditors einen Hex-Editor verwenden, um sicherzustellen, dass dies die einzigen 8-Bit-Zeichen in der Datei sind. Als nächstes wählen Sie in der Registerkarte "Senden" die Datei, die Sie gerade erstellt haben, im Feld "dump file to port". Rechts neben dem Dateinamen sehen Sie Kästchen für Zeichen- und Zeilenverzögerungen. Unter ihnen eine Wiederholungszahl und Wiederholungsverzögerung. – mjh2007

1

ScriptCommunicator (Open-Source-, Cross-Plattform-) ist das richtige Werkzeug für Sie. Es hat viele Funktionen und eine sehr nützliche Skriptschnittstelle.

+0

Super. Das meiste funktionelle Programm. – kyb