Programmazione della comunicazione seriale con porte COM virtuali

Comunicazione con porta seriale

Le porte seriali virtuali sono essenziali quando i programmi software legacy devono connettersi a dispositivi con porte 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 connessione TCP/IP, indipendentemente dalla distanza tra loro.

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

Crea ora la porta seriale virtuale

Contenuti:

  1. Utilizzo di VSPD con linguaggi di programmazione
  2. VSPD con C/C++
  3. VSPD con Visual Basic
  4. VSPD con Delphi
  5. I vantaggi di Virtual Serial Port di Eltima
  6. Domande frequenti sulla comunicazione seriale

Utilizzo di VSPD con linguaggi di programmazione


Il metodo di test e diagnosi del 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 ed eseguire il debug di un'applicazione in fase di sviluppo.

Il metodo di emulazione della porta seriale è ampiamente applicato nello sviluppo dei sistemi di comunicazione più complessi, compresi i dispositivi con interfacce RS232 e RS485. Attualmente, esiste una vasta gamma di strumenti software che consentono la creazione di più porte seriali virtuali nei sistemi operativi (principalmente sistema operativo Windows).

Il sistema operativo Windows è un obiettivo primario per le applicazioni grazie alla sua enorme popolarità. La programmazione di Windows RS232 si occupa delle porte COM del sistema operativo attraverso le quali tutti i dati entrano ed escono dal computer. È possibile utilizzare molte lingue, ma C è una delle lingue principali utilizzate per questo tipo di programmazione. Verrà richiesto di utilizzare l'API WIN32 e, a seconda dell'applicazione, potrebbe essere necessario approfondire l'interfaccia di telefonia Windows TAPI.

Linux è un altro sistema operativo molto popolare con molte varianti in implementazioni specifiche. Le tue porte seriali sono chiamate diversamente in Linux, con nomi come / dev / ttys0 e / dev / ttyUSB0, quindi subito ci sono differenze nel modo in cui ti avvicini alla programmazione seriale di Linux. C è di nuovo una scelta linguistica popolare per la programmazione seriale e interagirai con dispositivi che Linux tratta come file. Utilizzerai un'API come termios per comunicare tra l'applicazione e le porte seriali.

La natura specializzata della programmazione delle porte seriali potrebbe non rientrare nell'ambito delle competenze del team e i problemi di comunicazione tra l'applicazione e i dispositivi di destinazione previsti possono causare un ritardo paralizzante nel progetto di sviluppo. Problemi come testo inaspettatamente corrotto o problemi di connettività possono essere difficili da diagnosticare per i programmatori senza una vasta esperienza con la porta seriale.

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, emulatore di porta seriale virtuale sviluppato da Eltima Software sembra essere il programma più potente disponibile oggi. La soluzione è pienamente compatibile con varie versioni del sistema operativo Windows. Inoltre, l'emulatore di porta seriale per Windows 10 è firmato digitalmente con WHQL che ne garantisce prestazioni e stabilità.

Crea ora la porta seriale virtuale

VSPD con C/C++


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

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 tramite Virtual Serial Port Driver.

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

Esempio di codice:

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 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 di origine 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 chiamata direttamente.


VSPD con Delphi


Ecco le dichiarazioni di funzione 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;
Crea ora la porta seriale virtuale

I vantaggi di Virtual Serial Port di Eltima


Virtual Serial Port Driver dimostra la profondità di conoscenza e abilità tecnica dei programmatori di Eltima. Dai un'occhiata ad alcune delle caratteristiche e delle funzioni che il team ha apportato a queste applicazioni e pensa a cosa possono fare per il tuo progetto.

Questa applicazione software consente di creare coppie virtuali di porte seriali e trasferire dati tramite modem null virtuali. Le porte virtuali vengono visualizzate nel sistema come se fossero porte fisiche e il programma consente una facile configurazione delle porte virtuali.

I vantaggi principali sono:


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

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

  • L'app consente non solo di creare porte COM virtuali ma di assegnare loro tutti i nomi desiderati inclusi quelli già utilizzati dalle porte fisiche esistenti. Gli utenti saranno in grado di trovare facilmente un'interfaccia virtuale richiesta nel gruppo "Porte" di Gestione dispositivi.

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

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

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

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

Domande frequenti

Una comunicazione seriale significa che i bit di dati sono organizzati in un ordine specifico e vengono trasportati uno dopo l'altro tramite un cavo seriale, il che garantisce l'integrità dei dati. Alcuni altri vantaggi di questo tipo di connessione includono un cablaggio semplice e una trasmissione affidabile dei dati su connessioni a lunga distanza.
Per creare una porta seriale virtuale in Windows 10, è necessaria una soluzione software professionale Virtual Serial Port Driver. Non richiede hardware e cavi aggiuntivi. Per creare una porta seriale virtuale, leggere le istruzioni dettagliate di seguito.
Una porta seriale virtuale è un pacchetto software che emula completamente quelli reali. Quindi il tuo sistema operativo e tutte le utility lo riconoscono e interagiscono con esso come se fosse una vera interfaccia COM.
Accade spesso che quando lavora l'utente si trova ad affrontare il problema della mancanza fisica di una porta COM. Quindi un grande vantaggio delle interfacce seriali virtuali è che possono essere utilizzate per il test e il debug del software quando non è disponibile una porta COM fisica nel sistema.
1. Il software collega le porte seriali virtuali con un cavo null-modem virtuale in modo che le porte COM possano essere utilizzate per comunicare i dati tra diverse applicazioni tramite l'interfaccia RS232. Configurato a tale scopo, le porte virtuali non utilizzano le impostazioni predefinite della velocità di trasferimento dei dati.

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 affida alle porte COM virtuali piuttosto che a quelle fisiche. Di norma, la velocità di trasferimento dei dati tramite porte COM virtuali è maggiore rispetto alla trasmissione dei dati tramite porte seriali reali.

3. Inoltre, un grande vantaggio delle interfacce seriali virtuali è che possono essere utilizzate per il test e il debug del software quando non è disponibile una porta COM fisica nel sistema.

Gli specialisti di Eltima Software possono aiutare con qualsiasi esigenza di programmazione della porta seriale di Windows o Linux. Siamo esperti in molti linguaggi di programmazione e piattaforme di sistemi operativi e possiamo lavorare con te per integrare perfettamente la tua applicazione e i dispositivi esterni a cui deve accedere. La tecnologia di virtualizzazione della porta Eltima può essere integrata nei progetti di qualsiasi dimensione. Se hai bisogno di alcune procedure problematiche semplificate o desideri la gestione di progetti su larga scala e lo sviluppo di applicazioni, Eltima Software ha le competenze di cui hai bisogno per far funzionare il tuo progetto. Mettiti in contatto con loro oggi e scopri come possono aiutarti a risolvere i tuoi problemi di programmazione seriale e mantenere il tuo progetto nei tempi previsti.

small logo Virtual Serial Port Driver
#1 al Programma di porta seriale
Virtual Serial Port Driver
Emula a pieno la porta seriale reale, crea l'accoppiamento della porta COM virtuale
4.9 rango basato su 97 + utenti
Ottieni un collegamento allo scaricamento per il tuo desktop
Invia il tuo indirizzo email per ottenere il collegamento allo scaricamento veloce sul tuo desktop e parti!
o