2010-01-29 15 views
5

Ho sviluppato un'applicazione incorporata che richiede informazioni sullo stato da un dispositivo lungo un canale di comunicazione. Il mio cliente richiede che questi vengano inviati con un periodo di tempo specifico, quindi quello che sto cercando è un'applicazione terminale per PC che può inviare ripetutamente un comando di stringa di testo a intervalli prestabiliti per un periodo di tempo. Attualmente utilizzo un tester di dispositivo seriale che può inviare immediatamente una stringa impostata quando viene inviato qualcosa, ma devo controllare il periodo di tempo e il numero di ripetizioni.Programma terminale porta COM

Ci sono delle applicazioni (per Windows) là fuori che possono acheive questo?

risposta

8

Docklight/Docklight Scripting Per la comunicazione delle applicazioni di test sulla porta seriale è lo strumento migliore per il lavoro. Ascolta sequenze definite dall'utente sulla porta seriale e può quindi attivare una trasmissione con parametri derivati ​​dal messaggio di input o dalla funzione in uno script.

Ho scritto un programma C++ per testare un'applicazione seriale incorporata ed era +/- 1000 righe di codice. Sono stato in grado di sostituire questo con circa 20 righe di script VB in Docklight Scripting.

Docklight è sicuramente la pena.

+0

Grazie per il collegamento, che sembra esattamente quello che sto dopo – droseman

0

È possibile utilizzare il costruito in pianificazione di Windows per eseguire un semplice script batch che scrive i testi a una porta COM, come alcuni pensano

echo "Hell there" > COM1: 

Ma io non ho fatto questo è in yers così la mia sintassi è arrugginito Altrimenti potresti usare un semplice programma 'termulator' che supporta lo scripting - di nuovo non l'ho fatto in un decennio che penso.

0

Scriverei un programma C# per farlo. Dispongono di librerie per l'apertura delle porte COM e dei timer al momento in cui inviare i dati.

6

Io tenderei a implementare uno script breve python per farlo (può essere compilato in un eseguibile standalone con py2exe se è quello che ti serve). Installa python e pyserial. Quindi utilizzare uno script come questo:

#!/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) 

Tuttavia, se si desidera un'applicazione più convenzionale di Windows, allora probabilmente si può fare con Docklight, possibilmente in combinazione con Docklight Scripting (disponibile dallo stesso sito).

5

L'applicazione di emulazione di terminale seriale Tera Term, ha un linguaggio di scripting che sarà in grado di impostare cicli temporizzati.

http://ttssh2.sourceforge.jp/

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

+0

Questa mi sembra una buona soluzione (anche se non ho ancora visto la docklight). È possibile mostrare i caratteri esadecimali grezzi sul collegamento contemporaneamente al testo ASCII? – droseman

+0

Non sono sicuro se è possibile mostrare la stringa/i dati ricevuti sul terminale in entrambi i formati; ma potresti essere in grado di scrivere la linea ricevuta due volte in un file di registro. – simon

4

io uso RealTerm. È possibile scrivere script per questo e inviarlo ripetutamente. È possibile aggiungere ritardi tra caratteri o ritardi tra le righe. A volte è un po 'buggy, ma è ottimo per il prezzo (gratuito).

http://realterm.sourceforge.net/

+0

un altro eccellente programma, grazie - penso che questo sia più rilevante per il mio lavoro embedded. Una domanda, come si invia una stringa che termina in CR LF un numero di volte con un ritardo specifico (in questo caso 90 ms), sembra che il delimitatore di ripetizione sia solo un CR – droseman

+0

Crea un file contenente i caratteri che si desidera inviare nel tuo caso CR LF. Potrebbe essere necessario utilizzare un editor esadecimale anziché un editor di testo per assicurarsi che questi siano gli unici caratteri a 8 bit nel file. Successivamente in termini reali nella scheda di invio selezionare il file appena creato nel frame "dump file to port". A destra del nome del file vedrai le caselle per i ritardi di carattere e linea. Sotto di loro un conteggio delle ripetizioni e il ritardo di ripetizione. – mjh2007

1

ScriptCommunicator (open-source, multipiattaforma) è lo strumento giusto per te. Ha molte funzionalità e un'interfaccia di script molto utile.

+0

Super. Il programma più funzionale. – kyb

Problemi correlati