Crear puerto COM virtual - solución de software
de Eltima


Los puertos serie virtuales son esenciales cuando los programas de software heredados necesitan conectarse a dispositivos de puerto COM que no pueden conectarse a la computadora con el software debido a la falta de puertos serie físicos. El dispositivo también puede enviar datos en serie a la aplicación a través de Internet o LAN a través de una conexión TCP/IP, sin importar cuán remotos estén unos de otros.

En este artículo, encontrará un breve tutorial de emulador de puerto serie virtual que le indicará cómo crear interfaces seriales virtuales en su computadora con la ayuda de un software de controlador de puerto virtual simple pero eficiente. Y espero que la información provista en este artículo lo ponga por delante de las formas más tradicionales de prueba y depuración de aplicaciones en serie.

Contenido


  1. Sobre el puerto COM y la comunicación serial.
  2. ¿Para qué se usa un puerto COM virtual?
  3. ¿Cómo crear un puerto serie virtual?
  4. ¿Cómo usar los puertos COM virtuales para probar y diagnosticar?
  5. Usando VSPD con lenguajes de programación

Virtual COM Port Driver de Eltima Software le permite crear un número ilimitado de pares de puertos seriales conectados por un cable de módem nulo virtual.
VSPD logo

Virtual Serial Port Driver

Crear pares de puertos COM virtuales en Windows
5 Ranking basado en 86+ usuarios, Comentario(97)
Descargar Prueba totalmente funcional por 14 días
Virtual Serial Port Driver

Sobre el puerto COM y la comunicación serial.


¿Qué es una comunicación en serie? Si me hubieras preguntado eso hace una década, diría que fue una de las formas más populares de conectar varios equipos y dispositivos a una computadora. Hoy, sin embargo, el puerto COM no es tan común como lo era antes. Pero a pesar de que un buen puerto de comunicaciones antiguo ha sido reemplazado en cierta medida por una interfaz USB, miles de dispositivos industriales modernos, instrumentos de laboratorio, equipos médicos, etc., siguen utilizando RS-232 como puerto de entrada / salida estándar.

Una comunicación en serie significa que los bits de datos se organizan en un orden específico y se transportan a través de un cable en serie uno tras otro, lo que garantiza la integridad de los datos. Algunas otras ventajas de este tipo de conexión incluyen cableado simple y transmisión de datos confiable a través de conexiones de larga distancia.

Al mismo tiempo, a pesar de los muchos beneficios que ofrecen los puertos serie, las nuevas computadoras dejaron de enviarse con una interfaz RS-232. Esto causa grandes inconvenientes cuando se trata de prueba y depuración de software basado en serie, usando aplicaciones seriales heredadas, etc.

¿Para qué se usa un puerto COM virtual?


Al probar o depurar sus aplicaciones o controladores en serie, los desarrolladores pueden enfrentar un desafío cuando el dispositivo o programa espera la conexión a un puerto COM, pero no parece posible debido a la falta física de los puertos en serie disponibles en la computadora.

La mejor opción posible, en este caso, será crear un puerto serie virtual que emule completamente la configuración y la configuración de un verdadero puerto COM y comunique los datos con otras interfaces virtuales o reales mediante cable virtual de modem nulo.

Una de las ventajas innegables de los puertos COM virtuales sigue siendo la velocidad de intercambio de datos. Cuando los datos se transmiten a través de un puerto virtual, la velocidad no está limitada por las características de la interfaz (como ocurre con los puertos físicos), sino solo por los parámetros del sistema. Como resultado, el tráfico se transporta significativamente más rápido.

¿Cómo crear un puerto serie virtual y usarlo?


La mayoría de las computadoras ya no tienen conectores DB9 que solían conectarse directamente al hardware industrial o comercial, sin embargo, ahora puede crear un puerto COM virtual y usarlo para transmitir datos a través de la red. El puerto COM virtual ayuda a ahorrar tiempo y reducir los gastos mediante el uso de software heredado no modificado.

Entonces, si se está preguntando cómo crear un puerto serie virtual y usarlo a cualquier distancia, use la aplicación Virtual Serial Port Driver para crear pares de puertos serie virtuales conectados mediante un cable de módem nulo virtual. Si está buscando una solución para agregar un puerto COM en Windows 10, nuestro tutorial lo ayudará a resolver los problemas del puerto COM de Windows 10 con dos métodos.

Virtual Serial Port Driver

Para crear un par de puerto serie virtual, siga los pasos:


  1. Abra la ventana principal de la aplicación y vaya a la pestaña "Administrar puertos".

  2. Elija los puertos de la lista o ingrese sus nombres manualmente. Con los nombres tiene opciones ilimitadas para asignar un nombre a sus puertos según sus preferencias. Sin embargo, vigile las aplicaciones que pueden no admitir nombres personalizados para puertos. Para las sesiones RDP, es conveniente utilizar la opción "Crear puertos solo para esta sesión de usuario", de modo que la próxima sesión le permita los mismos nombres.

  3. Haga clic en el botón "Agregar par" y tendrá los puertos COM virtuales listos para usar.

  4. Repita los pasos anteriores tantas veces como sea necesario para crear la cantidad necesaria de puertos.

Las ventajas de Virtual Serial Port por un Eltima.


  • Con un controlador de puerto serie virtual, agregará un número ilimitado de pares de puertos COM virtuales vinculados mediante un cable de módem nulo virtual. Además, el software le permite eliminar todos los pares creados con un solo clic..

  • Una vez creados y configurados, los puertos serie virtuales se volverán a crear automáticamente en el reinicio del sistema antes del inicio de sesión del usuario. Además, no necesitará cerrar los puertos si necesita cambiar la configuración del par virtual o eliminar completamente un par.

  • La aplicación hace posible no solo crear puertos COM virtuales, sino también darles los nombres que desee, incluidos los que ya utilizan los puertos físicos existentes. Los usuarios podrán encontrar fácilmente la interfaz virtual requerida en el grupo "Puertos" del Administrador de dispositivos.

  • Los controladores de software han superado con éxito las pruebas de Microsoft Windows Hardware Quality Labs (WHQL) y están firmados digitalmente por Microsoft. Esto significa que no recibirá ninguna advertencia al crear puertos COM virtuales en Windows 10, Windows Server 16, Windows XP, etc.

  • Virtual Serial Port Driver es totalmente compatible con las líneas de señal de hardware estándar que incluyen DTR/DSR /CTS/RTS/DCD/RI, etc. y el control de flujo de software (Xon/Xoff).

  • La emulación de módem nulo es otra ventaja que obtiene con esta utilidad. El controlador de puerto serie virtual permite emular la conexión de la línea serie virtual y su interrupción. Además, el software ofrece varios esquemas virtuales de módem nulo, que se pueden guardar como una plantilla.

  • Además, Virtual Serial Port Driver viene con vspdctl.dll, que le permite controlar su funcionalidad directamente desde su propia aplicación. Al utilizar esta biblioteca de enlace dinámico, podrá crear y eliminar pares de puertos COM virtuales sobre la marcha, sin necesidad de depender de la utilidad de configuración estándar y su GUI.

¿Cómo usar puertos seriales virtuales para pruebas y diagnósticos?


Emulación de puerto serie


El método de prueba y diagnóstico de software que usa dispositivos virtuales hoy en día ha sido ampliamente aceptado por los desarrolladores del software para sistemas de comunicación. Un dispositivo virtual simula el comportamiento de uno real a nivel de software, lo que permite a un programador probar y depurar una aplicación en la etapa de desarrollo.

El método de emulación de puerto serie se aplica ampliamente en el desarrollo de los sistemas de comunicación más complejos, incluidos los dispositivos con interfaces RS232 y RS485. En la actualidad, existe una amplia gama de herramientas de software que permiten crear múltiples puertos serie virtuales en sistemas operativos (principalmente el sistema operativo Windows). Con la ayuda de puertos COM virtuales adicionales, los desarrolladores pueden probar el intercambio de datos entre las interfaces RS232 y RS485. Cuando se trata de funcionalidad avanzada y facilidad de uso, Virtual Serial Port Emulator parece ser el programa más poderoso disponible en la actualidad. La solución es totalmente compatible con varias versiones del sistema operativo Windows. Por encima de eso, el emulador de puerto serie para Windows 10 está firmado digitalmente con WHQL, lo que garantiza su rendimiento y estabilidad.

Principios básicos de la emulación de puerto serie.


1. Una de las principales ventajas de las interfaces seriales virtuales es que pueden usarse para probar y depurar software cuando no hay un puerto COM físico disponible en el sistema.

Por ejemplo, para depurar completamente un programa de comunicación serial, se requieren al menos dos puertos seriales físicos. Dado que la mayoría de las PC modernas están equipadas con un solo puerto COM, un programador puede necesitar dos computadoras o una tarjeta de expansión PCI adicional con un puerto serie para depurar una aplicación.

Alternativamente, un desarrollador puede recurrir a la ayuda de un emulador de puerto serie eficiente, el controlador de puerto serie virtual, que puede crear varios puertos COM virtuales en la misma máquina. También vale la pena mencionar que el desarrollo de aplicaciones de comunicación no es la única área donde el concepto de puertos virtuales se usa ampliamente. El controlador de puerto serie virtual de 64 bits se considera particularmente útil para probar aplicaciones de muchos otros tipos.

2. Gracias a un simulador de puerto en serie, es posible intercambiar datos entre dos o más aplicaciones sin utilizar la compleja tecnología de software de comunicación entre procesos e intercambio de recursos. De esa manera, para proporcionar intercambio de datos, un programador se basa en los puertos COM virtuales en lugar de los físicos, por lo que la velocidad de transferencia de datos entre aplicaciones está determinada por los parámetros del sistema (el tipo de procesador, la cantidad de memoria física disponible, etc. ) y no por las características de un puerto serie. Como regla general, la velocidad de transferencia de datos a través de puertos COM virtuales es mayor en comparación con la transmisión de datos a través de puertos seriales reales.

3. El software conecta puertos seriales virtuales con un cable de módem nulo virtual para que los puertos COM puedan usarse para comunicar datos entre diferentes aplicaciones a través de la interfaz RS232. Configurados para este propósito, los puertos virtuales no usan la configuración predeterminada de la velocidad de transferencia de datos.

Usando VSPD con lenguajes de programación


★ VSPD con C/C++


Para usar la funcionalidad de emulador de puerto virtual en C y C++, es necesario cargar dinámicamente el archivo DLL, seleccionar las funciones necesarias y llamarlas Aquí hay un ejemplo de cómo puedes hacer esto en 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; }; 

También puede ver un gran ejemplo de cómo programar un puerto COM virtual usando Visual Basic y Visual C++ para Comunicación entre AVR y PC utilizando Virtual Serial Port Driver.


★ VSPD con Visual Basic


VSPD La instalación de funciones es mucho más fácil para los usuarios de Visual Basic. Todo lo que necesita hacer es pegar las siguientes líneas en el archivo fuente de 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 

Ponga VSPDCTL.DLL en el directorio de su programa. Ahora la función puede ser llamada directamente.

★ VSPD con Delphi


Aquí están las declaraciones de funciones para 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 puede cargar ArmAccess de forma dinámica o estática. Aquí hay un código de ejemplo para carga dinámica:

 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

Requerimientos: Disponible para Windows , 5.5MB tamaño
Versión 9.0.575 (23rd May, 2019) Notas de la versión
Categoría: Communication Application