
Virtuelle serielle Ports sind unerlässlich, wenn ältere Softwareprogramme eine Verbindung zu COM-Port-Geräten herstellen müssen, die aufgrund fehlender physischer serieller Ports nicht mit der Software an den Computer angeschlossen werden können. Das Gerät kann auch serielle Daten über das Internet oder LAN über eine TCP / IP-Verbindung an die App senden, unabhängig davon, wie weit sie voneinander entfernt sind.
In diesem Artikel finden Sie ein kurzes Tutorial zum Emulator virtueller serieller Ports, in dem Sie erfahren, wie Sie mithilfe einer einfachen, aber dennoch effizienten Treibersoftware für virtuelle Ports virtuelle serielle Schnittstellen in Ihrem Computer erstellen. Und ich hoffe, dass Sie mit den Informationen in diesem Artikel den traditionelleren Formen des Testens und Debuggens serieller Apps einen Schritt voraus sind.

Inhalt:
- Verwenden von VSPD mit Programmiersprachen
- VSPD mit C/C++
- VSPD mit Visual Basic
- VSPD mit Delphi
- Die Vorteile von Virtual Serial Port von Eltima
- FAQ zur seriellen Kommunikation
Verwenden von VSPD mit Programmiersprachen
Die Methode zum Testen und Diagnostizieren von Software mit virtuellen Geräten ist heute bei Entwicklern der Software für Kommunikationssysteme weit verbreitet. Ein virtuelles Gerät simuliert das Verhalten eines realen Geräts auf Softwareebene, sodass ein Programmierer eine Anwendung testen und debuggen kann in der Entwicklungsphase.
Die Methode der Emulation serieller Schnittstellen wird häufig bei der Entwicklung komplexester Kommunikationssysteme angewendet, einschließlich Geräten mit RS232- und RS485-Schnittstellen. Derzeit gibt es eine breite Palette von Softwaretools, mit denen mehrere virtuelle serielle Ports in Betriebssystemen (vorwiegend Windows-Betriebssysteme) erstellt werden können.
Das Windows-Betriebssystem ist aufgrund seiner enormen Beliebtheit ein Hauptziel für Anwendungen. Die Windows RS232-Programmierung befasst sich mit den COM-Anschlüssen des Betriebssystems, über die alle Daten in den Computer hinein und aus ihm heraus fließen. Es können viele Sprachen verwendet werden, aber C ist eine der Hauptsprachen für diese Art der Programmierung. Sie werden aufgefordert, die WIN32-API zu verwenden, und müssen je nach Anwendung möglicherweise die TAPI-Windows-Telefonieoberfläche untersuchen.
Linux ist ein weiteres sehr beliebtes Betriebssystem mit vielen Variationen in bestimmten Implementierungen. Ihre seriellen Ports werden unter Linux unterschiedlich benannt, mit Namen wie / dev / ttys0 und / dev / ttyUSB0. Es gibt also sofort Unterschiede in der Herangehensweise an die serielle Linux-Programmierung. C ist wieder eine beliebte Sprachwahl für die serielle Programmierung und Sie interagieren mit Geräten, die Linux als Dateien behandelt. Sie verwenden eine API wie Termios, um zwischen Ihrer Anwendung und den seriellen Schnittstellen zu kommunizieren.
Die Spezialisierung der seriellen Port-Programmierung liegt möglicherweise außerhalb des Fachwissens Ihres Teams, und Probleme bei der Kommunikation zwischen Ihrer Anwendung und den vorgesehenen Zielgeräten können zu einer lähmenden Verzögerung in Ihrem Entwicklungsprojekt führen. Probleme wie unerwartet beschädigter Text oder Verbindungsprobleme können für Programmierer ohne umfassende Erfahrung mit seriellen Schnittstellen schwer zu diagnostizieren sein.
Mithilfe zusätzlicher virtueller COM-Ports können Entwickler den Datenaustausch zwischen RS232- und RS485-Schnittstellen testen. Wenn es um erweiterte Funktionalität und Benutzerfreundlichkeit geht, scheint der von Eltima Software entwickelte Virtual Serial Port Emulator das derzeit leistungsstärkste Programm zu sein. Die Lösung ist vollständig kompatibel mit verschiedenen Versionen des Windows-Betriebssystems. Darüber hinaus ist der Emulator für die serielle Schnittstelle für Windows 10 mit WHQL digital signiert, was seine Leistung und Stabilität garantiert.

VSPD mit C/C++
Um die Funktionen des Emulators für virtuelle Ports in C und C ++ nutzen zu können, müssen Sie die DLL-Datei dynamisch laden, die erforderlichen Funktionen auswählen und aufrufen. Hier ist ein Beispiel, wie Sie dies in Visual C ++ tun können:
Sie können auch ein hervorragendes Beispiel für die Programmierung eines virtuellen COM-Anschlusses mit Visual Basic und Visual C++ für die Kommunikation zwischen AVR und PC mithilfe des Virtual Serial Port Driver sehen.
typedef bool (stdcall *CreatePairFn)(char *Port1, char *Port2);
typedef bool (stdcall *DeletePairFn)(char *Port);
typedef bool (stdcall *DeleteAllFn)(void);
typedef bool (stdcall *SetStrictBaudrateFn) (char *Port, bool StrictBaudrate);
typedef bool (stdcall *SetBreakFn) (char *Port, bool bBreak);
typedef bool (stdcall *QueryBusFn) (void* InBuffer, long sizeInBuffer, void* OutBuffer, long sizeOutBuffer);
typedef bool (stdcall *SetWiringFn) (char *Port, void *Buffer, long sizeBuffer);
typedef bool (stdcall *SetAccessListFn) (char *Port, void *Buffer, long sizeBuffer);
typedef bool (stdcall *CreatePairExFn)(char *Port1, char *Port2, char * UserSession);
typedef bool (stdcall *CreatePairWFn)(WCHAR *Port1, WCHAR *Port2);
typedef bool (stdcall *CreatePairExWFn)(WCHAR *Port1, WCHAR *Port2, WCHAR * UserSession);
typedef bool (stdcall *DeletePairWFn)(WCHAR *Port);
typedef bool (stdcall *SetStrictBaudrateWFn) (WCHAR *Port, bool StrictBaudrate);
typedef bool (stdcall *SetBreakWFn) (WCHAR *Port, bool bBreak);
typedef bool (stdcall *SetWiringWFn) (WCHAR *Port, void *Buffer, long sizeBuffer);
typedef bool (stdcall *SetAccessListWFn) (WCHAR *Port, void *Buffer, long sizeBuffer);
typedef bool (stdcall *DeletePairExFn)(char *Port, char * UserSession);
typedef bool (stdcall *DeletePairExWFn)(WCHAR *Port, WCHAR * UserSession);
typedef bool (stdcall *GetUserSessionFn)(char *Session, int &iSize);
typedef bool (stdcall *GetUserSessionWFn)(WCHAR *Session, int &iSize);
typedef bool (stdcall *SetStrictBaudrateExWFn) (WCHAR *Port, WCHAR * UserSession, bool StrictBaudrate);
typedef bool (stdcall *SetStrictBaudrateExFn) (char *Port, char * UserSession, bool StrictBaudrate);
typedef bool (stdcall *SetBreakExWFn) (WCHAR *Port, WCHAR * UserSession, bool bBreak);
typedef bool (stdcall *SetBreakExFn) (char *Port, char * UserSession, bool bBreak); typedef bool (stdcall *SetAccessListExWFn) (WCHAR *Port, WCHAR * WCHAR, void *Buffer, long sizeBuffer);
typedef bool (stdcall *SetAccessListExFn) (char *Port, char * WCHAR, void *Buffer, long sizeBuffer);
Codebeispiel:
bool CreateVSPair(char *Port1, char *Port2) {
OSVERSIONINFO VersionInfo;
HINSTANCE libInst;
libInst = LoadLibrary(VSPDCTL.DLL);
if (!libInst)
return false; /* Couldn't load library */
/* Substitute the typedefs above for functions other than CreatePairFn */
CreatePairFn CreatePair=(CreatePairFn)GetProcAddress(libInst, CreatePair);
if (CreatePair==0) return false; /* Couldn`t find function */
returnvalue=CreatePair(Port1, Port2); /* For example, Port1 = COM5 and Port2 = COM6 */
FreeLibrary(libInst);
return returnvalue;
};
VSPD mit Visual Basic
Die Installation von VSPD-Funktionen ist für Visual Basic-Benutzer viel einfacher. Sie müssen lediglich die folgenden Zeilen in die Quelldatei von Visual Basic einfügen:
Declare Function CreatePair Lib "VSPDCTL.DLL" (ByVal Port1$, ByVal Port2$) As Boolean
Declare Function DeletePair Lib "VSPDCTL.DLL" (ByVal Port$) As Boolean
Declare Function DeleteAll Lib "VSPDCTL.DLL" () As Boolean
Declare Function SetStrictBaudrateName Lib "VSPDCTL.DLL" (ByVal Port$, ByVal StrictBaudrate As Boolean) As Boolean
Declare Function SetStrictBaudrateHandle Lib "VSPDCTL.DLL" (ByVal Handle As Long, ByVal StrictBaudrate As Boolean) As Boolean
Declare Function CreatePair Lib "VSPDCTL.DLL" (ByVal Port1$, ByVal Port2$) As Boolean
Declare Function DeletePair Lib "VSPDCTL.DLL" (ByVal Port$) As Boolean
Declare Function DeleteAll Lib "VSPDCTL.DLL" () As Boolean
Declare Function SetStrictBaudrate Lib "VSPDCTL.DLL" (ByVal Port$, ByVal StrictBaudrate As Boolean) As Boolean
Declare Function SetBreak Lib "VSPDCTL.DLL" (ByVal Port$, ByVal bBreak As Boolean) As Boolean
Declare Function QueryBus Lib "VSPDCTL.DLL" (ByVal InBuffer As String, sizeInBuffer As Long, ByVal OutBuffer As String, sizeOutBuffer As Long) As Boolean
Declare Function SetWiring Lib "VSPDCTL.DLL" (ByVal Port1$, ByVal Buffer As String, sizeBuffer As Long) As Boolean
Legen Sie VSPDCTL.DLL in das Verzeichnis Ihres Programms. Jetzt kann die Funktion direkt aufgerufen werden.
VSPD mit Delphi
Hier sind die Funktionsdeklarationen für Delphi:
Function CreatePair(Port1, Port2 : PChar) : Boolean; stdcall; external "VSPDCTL.DLL";
Function DeletePair(Port : PChar) : Boolean; stdcall; external "VSPDCTL.DLL";
Function DeleteAll : Boolean; stdcall; external "VSPDCTL.DLL";
Function SetStrictBaudrateName(Port: PChar, StrictBaudrate: Boolean) : Boolean; stdcall; external "VSPDCTL.DLL";
Function SetStrictBaudrateHandle(hPort: THandle, StrictBaudrate: Boolean) : Boolean; stdcall; external "VSPDCTL.DLL";
Function CreatePair(Port1, Port2 : PChar) : Boolean; stdcall; external "VSPDCTL.DLL";
Function DeletePair(Port : PChar) : Boolean; stdcall; external "VSPDCTL.DLL";
Function DeleteAll : Boolean; stdcall; external "VSPDCTL.DLL";
Function SetStrictBaudrate(Port: PChar, StrictBaudrate: Boolean) : Boolean; stdcall; external "VSPDCTL.DLL";
Function SetBreak (Port: PChar, bBreak: Boolean) : Boolean; stdcall; external "VSPDCTL.DLL";
Function QueryBus (InBuffer: Pointer, sizeInBuffer: Integer, OutBuffer: Pointer, sizeOutBuffer: Integer) : Boolean;
stdcall; external "VSPDCTL.DLL";
Function SetWiring (Port: PChar Buffer: Pointer, sizeBuffer: Integer) : Boolean; stdcall; external "VSPDCTL.DLL";
Delphi kann ArmAccess entweder dynamisch oder statisch laden. Hier ist ein Beispielcode für das dynamische Laden:
Function CreatePairFn(PortName1, PortName2 : String) : Boolean;
Type TCreatePair = function(Port1, Port2 : PChar) : Boolean; stdcall;
Var Handle : THandle;
CreatePair : TCreatePair;
Begin
CreatePairFn := False;
Handle := LoadLibrary("VSPDCTL.DLL");
If (Handle <> 0) Then
Begin
@CreatePair:=GetProcAddress(Handle, "CreatePair");
If (CreatePair <> Nil) Then
CreatePairFn := CreatePair(PChar(PortName1), PChar(PortName2));
FreeLibrary(Handle);
End;
End;

Die Vorteile von Virtual Serial Port von Eltima
Virtual Serial Port Driver zeigt die Tiefe des Wissens und der technischen Fähigkeiten der Programmierer von Eltima. Schauen Sie sich einige der Features und Funktionen an, die das Team für diese Anwendungen bereitgestellt hat, und überlegen Sie, was sie für Ihr Projekt tun können.
Mit dieser Softwareanwendung können Sie virtuelle Paare serieller Schnittstellen erstellen und Daten über virtuelle Nullmodems übertragen. Virtuelle Ports erscheinen Ihrem System so, als wären sie physische Ports, und das Programm ermöglicht eine einfache Konfiguration Ihrer virtuellen Ports.
Hauptvorteile sind:
- Mit einem Virtual Serial Port-Treiber können Sie eine unbegrenzte Anzahl von virtuellen COM-Port-Paaren hinzufügen, die über ein virtuelles Nullmodemkabel verbunden sind. Darüber hinaus bietet die Software die Möglichkeit, alle erstellten Paare in einem Clic zu entfernen.
- Einmal erstellte und konfigurierte virtuelle serielle Ports werden beim Neustart des Systems vor der Benutzeranmeldung automatisch neu erstellt. Außerdem müssen Sie keine Ports schließen, wenn Sie die Einstellungen für virtuelle Paare ändern oder ein Paar vollständig löschen müssen.
- Die App ermöglicht es, nicht nur virtuelle COM-Ports zu erstellen, sondern ihnen alle gewünschten Namen zu geben, einschließlich derer, die bereits von den vorhandenen physischen Ports verwendet werden. Benutzer können eine erforderliche virtuelle Schnittstelle leicht in der Gruppe "Ports" des Geräte-Managers finden.
- Die Softwaretreiber haben die WHQL-Tests (Microsoft Windows Hardware Quality Labs) erfolgreich bestanden und sind von Microsoft digital signiert. Dies bedeutet, dass Sie beim Erstellen virtueller COM-Ports unter Windows 10, Windows Server 16, Windows XP usw. keine Warnungen erhalten.
- Der Virtual Serial Port Driver unterstützt vollständig Standard-Hardware-Signalleitungen, einschließlich DTR/DSR/CTS/RTS/DCD/RI usw. und Software-Flusskontrolle (Xon/Xoff).
- Die Nullmodememulation ist ein weiterer Vorteil, den Sie mit diesem Dienstprogramm erhalten. Der Virtual Serial Port Driver ermöglicht das Emulieren einer virtuellen seriellen Leitungsverbindung und deren Unterbrechung. Darüber hinaus bietet die Software verschiedene virtuelle Nullmodem-Schemata, die als Vorlage gespeichert werden können.
- Darüber hinaus enthält der Virtual Serial Port Driver die Datei vspdctl.dll, mit der Sie die Funktionalität direkt von Ihrer eigenen Anwendung aus steuern können. Mithilfe dieser dynamischen Linkbibliothek können Sie virtuelle COM-Port-Paare im laufenden Betrieb erstellen und löschen, ohne sich auf das Standardkonfigurationsprogramm und dessen GUI verlassen zu müssen.
