COM Ports auf Citrix/Terminal Server

Problem: TWedge verbindet sich zum Server, nicht zum Client

Lösung: Sie müssen den COM Port des Clients einem virtuellen COM Port am Server zuweisen. Das wird als COM Port Weiterleitung bezeichnet.

Benutzen Sie die unten angeführten Links um mehr über dieses Problem zu erfahren:
  • Technet Microsoft (Konfigurieren der Einstellungen für das Zuordnen von Clientgeräten)
  • Technet Microsoft (Verwalten von Laufwerk-, Drucker- und Gerätezuordnungen für Clients)

Wie werden Daten zum Eingabegerät gesendet?

TWedge V2

Lösung: Für diesen Zweck bietet TWedge die JavaScript Funktion WriteToDevice () an. Diese Funktion akzeptiert zwei Parameter:

  • Der erste Parameter gibt an, welche Daten zum Gerät gesendet werden.
  • Der zweite Parameter gibt das Timeout (in Millisekunden) für diese Operation an.

Das folgende Beispiel sendet zwei Zeilen Text (die erste Zeile fordert das Gerät auf den Usernamen zu akzeptieren, die zweite Zeile sendet den Usernamen an das Gerät). Jede Zeile schließt mit einem Zeilenumbruch ab \n).

WriteToDevice ("user\n", 1000);
WriteToDevice ("sysadmin\n", 1000);

TWedge V3

Lösung: Für diesen Zweck bietet TWedge die JavaScript Member-Funktion WriteData () an. Diese Funktion gibt es in zwei Varianten mit unterschiedlichen Parametern:

  • Integer WriteData (Array arrData, Integer nTimeout)
  • Integer WriteData (String sData, Integer nTimeout, String sEncoding = "Latin1")

Das folgende Beispiel sendet einmal die Daten als Binär-Array und einmal als String (Zeichenkette). In der Stringvariante können Sie mit der Escape-Folge \n einen Zeilenumbruch kodieren.

var arrSend = [0x48, 0x65, 0x6c, 0x6c, 0x6f]; 
hConn.WriteData (arrSend, 200);
hConn.WriteData ("Hello\n", 1000);
hConn ist die aktuelle Verbindung.

Das Eingabegerät ignoriert alle Kommandos

Warum werden alle Kommandos von dem Eingabegerät ignoriert?

Lösung: Wenn die Funktion WriteToDevice () (bzw. WriteData ()) zum Senden von Konfigurations- oder Startkommandos verwendet wird, überprüfen Sie bitte, ob Zeilenumbrüche notwendig sind. Das ist besonders dann wichtig, wenn das Gerät ein Protokoll wie TELNET verwendet. Ein Zeilenumbruch wird mit der Escapesequenz \n angegeben.

Das folgende Beispiel sendet den Text "user" - gefolgt von einem Zeilenumbruch - an das Gerät:

// TWedge 2:
WriteToDevice ("user\n", 1000);

// TWedge 3:
hConn.WriteData ("user\n", 1000);

Hier ist eine Liste mit den gebräuchlichsten Escapesequenzen:

  • \' Einfaches Anführungszeichen.
  • \" Doppeltes Anführungszeichen. Verwenden Sie diese Escape-Sequenz, wenn Sie es als Teil eines Zeichens angeben.
  • \\ Ein einfaches Backslash Zeichen.
  • \b Backspace.
  • \n Zeilenvorschub (Line Feed).
  • \r Wagenrücklauf (Carriage Return). In DOS Systemen wird ein Zeilenumbruch üblicherweise durch die Zeichenkombination \r (Wagenrücklauf) und \n (Zeilenvorschub) kodiert. Meistens reicht aber auch ein \n (statt \r\n).
  • \t Horizontaler Tabulator.
  • \f Seitenvorschub (für Drucker).

Wie kann ich einen Zeilenvorschub an meine Daten anhängen?

Dazu müssen Sie das Script im OnData / processData Event Code modifizieren. Ein Zeilenvorschub kann über die Escapesequenz \r (Carriage Return) oder \n (Line Feed) an die Eingangsdaten angehängt werden. Die Verkettung der Daten erfolgt in Javascript mit dem + Zeichen.

Menü (V2) Configuration - Script Editor - Edit Code: OnData

Menu (V3) Device - Configure - Advanced - Script Editor - Edit Code: onData bzw. processData

Ändern Sie die folgende Codezeile und fügen Sie das + "\n" wie folgt hinzu.

// V3 (OnData function):
SendKeyStrokes(DATA.replace (/\x00/g, " ") + "\n");

// V3 (processData function):
SendKeyStrokes (sData.replace(/\x00/g, " ") + "{ENTER}")

Siehe vorige FAQ für eine Liste der gebräuchlichsten Escapesequenzen.

Javascript Befehle für gängige Operationen (processData)

Menu (TWedge V3) Device - Configure - Advanced - Script Editor - Edit Code in "processData"

Carrige Return / Line Feed entfernen

  sData = sData.replace(/\x0D\x0A/g, "");  // remove CR/LF

Führende Leerzeichen / Whitespace entfernen

  sData = sData.replace(/^\s+/, "");       // trim leading whitespace

Bestimmte Zeichen (über Hex Code) ersetzen

  sData = sData.replace(/\x2E/g, ",");     // replace . => ,

Eine Zeichenfolge löschen

  sData = sData.replace(/ d/, "");         // remove " d"

Einen Wert aus einer CSV Folge parsen

  // sample data: 200,    177.50,mm   ,01
  if (sData.indexOf(',') > 0)
  {
    sData = sData.split(',');
    sData = sData[1];  // take 2nd value
    sData = sData.replace(/^\s+/, "");       // trim leading whitespace
  }
  // result will be 177.50

Eine kleine Zeitverzögerung einbauen

  function onHotkey ()
  {
    Print("onHotkey!");
    hInstance.Sleep (300); // wait 0.3 secs
    ...
  }

Wie kann ich eine Dezimalzahl (Zahl mit Kommastellen) zu einer ganzen Zahl konvertieren?

Mein Gerät gibt 123,4 aus, ich brauche aber nur 123

Modifizieren Sie das Script im OnData Event Code (Ctrl - E). Ersetzen Sie die Codezeilen durch folgendes:

TWedge V2

var myData = Math.round(DATA).toFixed();
SendKeyStrokes(myData);

TWedge V3

var myData = DataToString(data);
myData = Math.round(myData).toFixed();
SendKeyStrokes(myData);

Dieser Code übernimmt die Rundung. Wenn Sie keine Rundung benötigen, ersetzen Sie Math.round durch Math.floor.

Meine Waage sendet Gramm, ich benötige aber Kilogramm

Modifizieren Sie den OnData Event Code durch folgendes:

TWedge V2

var myData = (parseInt(DATA)/1000).toFixed(3);
SendKeyStrokes(myData);

TWedge V3

var myData = DataToString(data);
myData = (parseInt(myData)/1000).toFixed(3);
SendKeyStrokes(myData);

Wie installiere ich die Software Wedge TWedge 2.x als Windows Dienst?

Wir empfehlen den Umstieg auf TWedge V3, wo ein Systemdienst bereits integriert ist. Sollte das nicht möglich sein, können Sie die nachfolgenden Schritte für TWedge V2 durchführen.
  1. Installieren Sie das Windows Resource Toolkit. Dieses können Sie sich von der Microsoft Webseite herunterladen.
  2. Öffnen Sie die Kommandozeile (Start -> Ausführen -> “cmd”), gehen Sie in das Installationsverzeichnis des Windows Resource Kits und geben Sie folgenden Befehl ein:
    Instsrv TWedge "C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe".
    Kommandozeile: Installation des Windows Resource Toolkits
  3. Öffnen Sie den Registrierungseditor (Start -> Ausführen -> “regedit”) und suchen Sie nach folgendem Registrierungsschlüssel: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TWedge.
    Registrierungseditor: TWedge Registrierungsschlüssel
  4. Fügen Sie einen neuen Schlüssel mit dem Namen "Parameters" und den Wert "Application" hinzu. Dieser enthält den Pfad zur ausführbaren Datei von TWedge (standardmäßig: C:\Program Files (x86)\TEC-IT\TWedge2\Bin\TWedge.exe C:\TWedge.twi). Die Datei twedge.twi öffnet TWedge mit den vordefinierten Einstellungsparametern!
  5. Registrierungseditor: Neuen Registrierungsschlüssel Parameters hinzufügen
  6. Öffnen Sie den Eigenschaftsdialog des neuen TWedge Dienstes. Diesen finden Sie unter Systemeinstellungen -> Verwaltung -> Dienste.
  7. Gehen Sie zum “Anmelden” Reiter und überprüfen Sie ob die Kontrollbox “Datenaustausch zwischen Dienst und Desktop zulassen” aktiviert ist.
    Dienste: TWedge Eigenschaften
  8. Starten Sie den TWedge Dienst.