Crea una porta COM virtuale: una soluzione software di Eltima


Le porte seriali virtuali sono essenziali quando i programmi software legacy devono connettersi a dispositivi con porta COM che non possono essere collegati al computer con il software a causa della mancanza di porte seriali fisiche. Il dispositivo può anche inviare dati seriali all'app tramite Internet o LAN tramite la connessione TCP / IP, indipendentemente dalla distanza tra loro.

In questo articolo, troverai una breve esercitazione di emulatore di porta seriale virtuale che ti spiegherà come creare interfacce seriali virtuali nel tuo computer con l'aiuto di un semplice ma efficiente software di driver per porte virtuali. E spero che le informazioni fornite in questo articolo ti consentano di superare le forme più tradizionali di test e debug delle app seriali.

Contenuto


  1. Informazioni sulla porta COM e sulla comunicazione seriale
  2. Per cosa viene utilizzata una porta COM virtuale?
  3. Come creare una porta seriale virtuale?
  4. Come utilizzare le porte COM virtuali per testare e diagnosticare?
  5. Utilizzo di VSPD con linguaggi di programmazione

Virtual COM Port Driver di Eltima Software ti consente di creare un numero illimitato di coppie di porte seriali collegate tramite cavo virtuale null modem.
VSPD logo

Virtual Serial Port Driver

Creare coppie di porte COM virtuali in Windows
5 Rango basato su 86+ utenti, Recensioni(97)
Scarica 14 dias do ensaio totalmente funcional
Virtual Serial Port Driver

Informazioni sulla porta COM e sulla comunicazione seriale


Cos'è una comunicazione seriale? Se me lo avessi chiesto una decina di anni fa, direi che è stato uno dei modi più popolari per collegare vari dispositivi e dispositivi a un computer. Oggi, tuttavia, la porta COM non è così comune come una volta. Ma anche se una buona vecchia porta di comunicazione è stata sostituita in una certa misura con un'interfaccia USB, migliaia di moderni dispositivi industriali, strumenti di laboratorio, apparecchiature mediche ecc. Usano ancora RS-232 come porta di ingresso / uscita standard.

Una comunicazione seriale significa che i bit di dati sono organizzati in un ordine specifico e sono trasportati via cavo seriale uno dopo l'altro, il che garantisce l'integrità dei dati. Alcuni altri vantaggi di questo tipo di connessione includono il cablaggio semplice e la trasmissione affidabile dei dati sulle connessioni a lunga distanza.

Allo stesso tempo, nonostante i numerosi vantaggi offerti dalle porte seriali, i nuovi PC hanno smesso di funzionare con un'interfaccia RS-232. Ciò provoca grandi disagi quando si tratta di test e debug di software basato su seriale, utilizzo di app seriali legacy, ecc.

Per cosa viene utilizzata una porta COM virtuale?


Durante il test o il debug delle applicazioni o dei driver seriali, gli sviluppatori potrebbero dover affrontare una sfida quando il dispositivo o il programma si aspetta la connessione a una porta COM ma non sembra possibile a causa della mancanza fisica delle porte seriali disponibili sul computer.

La migliore opzione possibile, in questo caso, sarà creare una porta seriale virtuale che emuli completamente la configurazione e le impostazioni di una vera porta COM e comunichi i dati con altre interfacce virtuali o reali tramite un cavo virtuale null-modem.

Uno dei vantaggi innegabili delle porte COM virtuali rimane la velocità di scambio dati. Quando i dati vengono trasmessi tramite una porta virtuale, la velocità non è limitata dalle caratteristiche dell'interfaccia (come accade con le porte fisiche), ma solo dai parametri di sistema. Di conseguenza, il traffico viene trasportato molto più velocemente.

Come creare una porta seriale virtuale e usarla?


La maggior parte dei computer non ha più connettori DB9 che li collegavano direttamente all'hardware industriale o commerciale, tuttavia ora è possibile creare una porta COM virtuale e utilizzarla per trasmettere dati su rete. La porta COM virtuale consente di risparmiare tempo e di tagliare le spese utilizzando un software legacy non modificato.

Pertanto, se ti stai chiedendo come creare una porta seriale virtuale e utilizzarla a qualsiasi distanza, utilizza l'app Virtual Serial Port Driver per creare coppie di porte seriali virtuali collegate tramite cavo virtuale null modem. Se stai cercando una soluzione per aggiungere la porta COM in Windows 10, il nostro tutorial ti aiuterà a risolvere i problemi della porta COM di Windows 10 con due metodi.

Virtual Serial Port Driver

Per creare una coppia di porte seriali virtuali seguire i passaggi:


  1. Apri la finestra principale dell'app e vai alla scheda "Gestisci porte".

  2. Scegli le porte dall'elenco o inserisci i loro nomi manualmente. Con i nomi hai opzioni illimitate per nominare le tue porte secondo le tue preferenze. Tuttavia tieni d'occhio le app che potrebbero non supportare i nomi personalizzati per le porte. Per le sessioni RDP è utile utilizzare l'opzione "Crea solo le porte per questa sessione utente", in modo che la prossima sessione ti permetta di avere gli stessi nomi.

  3. Fare clic sul pulsante "Aggiungi coppia" e le porte COM virtuali sono pronte per l'uso.

  4. Ripeti i passaggi precedenti tante volte quanto necessario per creare il numero richiesto di porte.

I vantaggi di Virtual Serial Port di Eltima


  • Con un Virtual Serial Port Driver, dovrai aggiungere un numero illimitato di coppie di porte COM virtuali collegate tramite un cavo virtuale null-modem. Inoltre, il software offre la possibilità di rimuovere tutte le coppie create in un clic.

  • Una volta create e configurate, le porte seriali virtuali verranno automaticamente ricreate al riavvio del sistema prima dell'accesso dell'utente. Inoltre, non è necessario chiudere le porte se è necessario modificare le impostazioni di coppie virtuali o eliminare completamente una coppia.

  • L'app rende possibile non solo creare porte COM virtuali, ma dare loro tutti i nomi desiderati, compresi quelli già utilizzati dalle porte fisiche esistenti. Gli utenti saranno in grado di trovare facilmente un'interfaccia virtuale richiesta nel gruppo "Porte" di Device Manager.

  • I driver del software hanno superato con successo i test WHQL (Hardware Quality Labs) di Microsoft Windows e sono firmati digitalmente da Microsoft. Ciò significa che non riceverai alcun avvertimento durante la creazione di porte COM virtuali su Windows 10, Windows Server 16, Windows XP, ecc.

  • Virtual Serial Port Driver supporta pienamente le linee di segnale hardware standard tra cui DTR / DSR / CTS / RTS / DCD / RI, ecc. E controllo del flusso software (Xon / Xoff).

  • L'emulazione del modem null è un altro vantaggio che si ottiene con questa utility. Virtual Serial Port Driver consente l'emulazione della connessione seriale virtuale e la sua interruzione. Inoltre, il software offre vari schemi virtuali null-modem, che possono essere salvati come modello.

  • Inoltre, Virtual Serial Port Driver viene fornito con vspdctl.dll, che consente di controllarne le funzionalità direttamente dalla propria applicazione. Utilizzando questa libreria di collegamenti dinamici, sarete in grado di creare ed eliminare le coppie di porte COM virtuali al volo, senza bisogno di fare affidamento sull'utilità di configurazione standard e sulla sua GUI.

Come utilizzare le porte seriali virtuali per testare e diagnosticare?


Emulazione porta seriale


Il metodo di testare e diagnosticare software che utilizza dispositivi virtuali oggi è stato ampiamente accettato dagli sviluppatori del software per i sistemi di comunicazione. Un dispositivo virtuale simula il comportamento di uno reale a livello di software, consentendo a un programmatore di testare e eseguire il debug di un'applicazione in fase di sviluppo.

Il metodo di emulazione della porta seriale è ampiamente applicato nello sviluppo dei più complessi sistemi di comunicazione, compresi i dispositivi con interfacce RS232 e RS485. Attualmente, esiste una vasta gamma di strumenti software che consentono di creare più porte seriali virtuali nei sistemi operativi (prevalentemente Windows OS). Con l'aiuto di ulteriori porte COM virtuali, gli sviluppatori possono testare lo scambio di dati tra le interfacce RS232 e RS485. Quando si tratta di funzionalità avanzate e facilità d'uso, Virtual Serial Port Emulator sembra essere il programma più potente disponibile oggi. La soluzione è completamente compatibile con varie versioni del sistema operativo Windows. Oltre a ciò, l'emulatore di porta seriale per Windows 10 è firmato digitalmente con WHQL che garantisce prestazioni e stabilità.

Principi di base dell'emulazione della porta seriale


1. Uno dei principali vantaggi delle interfacce seriali virtuali è che possono essere utilizzati per testare e eseguire il debug del software quando non è disponibile una porta COM fisica nel sistema.

Ad esempio, per eseguire il debug di un programma di comunicazione seriale, sono necessarie almeno due porte seriali fisiche. Poiché la maggior parte dei PC moderni è dotata di un'unica porta COM, un programmatore potrebbe aver bisogno di due computer o di una scheda di espansione PCI aggiuntiva con una porta seriale per eseguire il debug di un'applicazione.

In alternativa, uno sviluppatore può fare ricorso a un efficiente emulatore di porta seriale, Virtual Serial Port Driver, che è in grado di creare diverse porte COM virtuali sulla stessa macchina. Vale anche la pena ricordare che lo sviluppo di applicazioni di comunicazione non è l'unica area in cui il concetto di porte virtuali è ampiamente utilizzato. Virtual Serial Port Driver 64 bit è considerato particolarmente utile per testare applicazioni di molti altri tipi.

2. Grazie a un simulatore di porte seriali è possibile scambiare dati tra due o più applicazioni senza utilizzare la complessa tecnologia software di comunicazione tra processi e condivisione delle risorse. In questo modo, per fornire lo scambio di dati, un programmatore si basa su porte COM virtuali anziché su quelle fisiche, quindi la velocità di trasferimento dei dati tra le applicazioni è determinata dai parametri del sistema (il tipo di processore, la quantità di memoria fisica disponibile, ecc. ) e non dalle caratteristiche di una porta seriale. Di norma, la velocità di trasferimento dei dati tramite le porte COM virtuali è maggiore rispetto alla trasmissione dei dati tramite le porte seriali reali.

3. Il software collega le porte seriali virtuali con un cavo virtuale null-modem in modo che le porte COM possano essere utilizzate per comunicare i dati tra diverse applicazioni tramite l'interfaccia RS232. Configurati per questo scopo, le porte virtuali non utilizzano le impostazioni predefinite della velocità di trasferimento dati.

Utilizzo di VSPD con linguaggi di programmazione


★ VSPD con C/C++


Per utilizzare la funzionalità di emulazione di porte virtuali in C e C++, è necessario caricare dinamicamente il file DLL, selezionare le funzioni richieste e chiamarle. Ecco un esempio di come puoi farlo in Visual C++:

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);

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;
};

Puoi anche vedere un ottimo esempio di come programmare una porta COM virtuale usando Visual Basic e Visual C++ per comunicazione tra AVR e PC utilizzando Virtual Serial Port Driver.


★ VSPD con Visual Basic


L'installazione delle funzioni VSPD è molto più semplice per gli utenti di Visual Basic. Tutto quello che devi fare è incollare le seguenti righe nel file sorgente di Visual Basic:

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

Inserisci VSPDCTL.DLL nella directory del tuo programma. Ora la funzione può essere richiamata direttamente.

★ VSPD con Delphi


Ecco le dichiarazioni delle funzioni per 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 può caricare ArmAccess in modo dinamico o statico. Ecco un codice di esempio per il caricamento dinamico:

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;

Virtual Serial Port Driver

Richiede: Disponibile su Windows , 5.5MB dimensione
Versione 9.0.575 (23 Magg, 2019) Note di rilascio
Categoria: Communication Application