Criar porta COM virtual - solução de software
de Eltima


Portas seriais virtuais são essenciais quando programas de software legados precisam se conectar a dispositivos de porta COM que não podem ser conectados ao computador com o software devido à falta de portas seriais físicas. O dispositivo também pode enviar dados seriais para o aplicativo pela Internet ou pela LAN por meio de uma conexão TCP/IP, independentemente de quão remotos sejam uns dos outros.

Neste artigo, você encontrará um breve tutorial emulador de porta serial virtual que informará como criar interfaces seriais virtuais em seu computador com a ajuda de um software de driver de porta virtual simples, mas eficiente. E espero que as informações fornecidas neste artigo possam colocá-lo à frente das formas mais tradicionais de teste e depuração de aplicativos em série.

Conteúdo


  1. Sobre a porta COM e comunicação serial
  2. O que é uma porta COM virtual usada para?
  3. Como criar uma porta serial virtual?
  4. Como usar portas virtuais COM para testar e diagnosticar?
  5. Usando o VSPD com linguagens de programação

Virtual COM Port Driver por Eltima Software permite que você crie um número ilimitado de pares de portas seriais conectados por cabo de modem nulo virtual.
VSPD logo

Virtual Serial Port Driver

Crie pares de portas COM virtuais no Windows
5 Classificação baseado em 86+ usuários, Сomentários(97)
Baixar 14 dias do ensaio totalmente funcional
Virtual Serial Port Driver

Sobre a porta COM e comunicação serial


O que é uma comunicação serial? Se você tivesse me perguntado isso há cerca de uma década, eu diria que essa é uma das maneiras mais populares de conectar vários equipamentos e dispositivos a um computador. Hoje, no entanto, a porta COM não é tão comum como era antes. Mas mesmo que uma boa porta de comunicação antiga tenha sido substituída, até certo ponto, por uma interface USB, milhares de dispositivos industriais modernos, instrumentos de laboratório, equipamentos médicos, etc., ainda usam o RS-232 como a porta padrão de entrada/saída.

Uma comunicação serial significa que os bits de dados são organizados em uma ordem específica e são transportados através de um cabo serial, um após o outro, o que garante a integridade dos dados. Algumas outras vantagens deste tipo de conexão incluem fiação simples e transmissão de dados confiável em conexões de longa distância.

Ao mesmo tempo, apesar dos muitos benefícios que as portas seriais oferecem, os novos PCs pararam de enviar com uma interface RS-232. Isso causa grande inconveniência quando se trata de testando e depurando software serial, usando aplicativos seriais legados, etc.

O que é uma porta COM virtual usada para?


Ao testar ou depurar seus aplicativos ou drivers seriais, os desenvolvedores podem enfrentar um desafio quando o dispositivo ou programa espera a conexão a uma porta COM, mas isso não parece possível devido a uma falta física de portas seriais disponíveis no computador.

A melhor opção possível, nesse caso, será criar uma porta serial virtual que emule totalmente a configuração e as configurações de uma porta COM verdadeira e comunique dados com outras interfaces virtuais ou reais por meio de cabo virtual de modem nulo.

Uma das vantagens inegáveis das portas COM virtuais continua sendo a velocidade de troca de dados. Quando os dados são transmitidos através de uma porta virtual, a velocidade não é limitada pelas características da interface (como acontece com as portas físicas), mas apenas pelos parâmetros do sistema. Como resultado, o tráfego é transportado significativamente mais rápido.

Como criar porta serial virtual e usá-lo?


A maioria dos computadores não tem mais conectores DB9 que costumavam conectá-los diretamente a hardware industrial ou comercial, mas agora você pode criar uma porta COM virtual e usá-la para transmitir dados pela rede. Porta COM virtual ajuda a economizar tempo e cortar as despesas usando software legado não modificado.

Então, se você está se perguntando como criar uma porta serial virtual e usá-la a qualquer distância - use o aplicativo Virtual Serial Port Driver para criar pares de portas seriais virtuais conectados via cabo de modem nulo virtual. Se você está procurando uma solução para adicionar porta COM no Windows 10, nosso tutorial ajudará a resolver problemas de porta COM do Windows 10 com dois métodos.

Virtual Serial Port Driver

Para criar um par de portas seriais virtuais, siga as etapas:


  1. Abra a janela principal do aplicativo e vá para a guia "Gerenciar portas".

  2. Escolha as portas da lista ou insira seus nomes manualmente. Com os nomes, você tem opções ilimitadas para nomear suas portas de acordo com suas preferências. No entanto, fique de olho nos aplicativos que talvez não ofereçam suporte a nomes personalizados para portas. Para sessões RDP, é conveniente usar a opção “Criar portas somente para esta sessão de usuário”, para que a próxima sessão permita a você os mesmos nomes.

  3. Clique no botão "Adicionar par" e você tem as portas virtuais virtuais prontas para uso.

  4. Repita as etapas acima quantas vezes forem necessárias para criar o número necessário de portas.

As vantagens do Virtual Serial Port por Eltima


  • Com um Virtual Serial Port Driver, você deve adicionar um número ilimitado de pares de portas COM virtuais vinculados por meio de um cabo virtual de modem nulo. Além disso, o software oferece a maneira de remover todos os pares criados em um clique.

  • Uma vez criadas e configuradas, as portas seriais virtuais serão recriadas automaticamente na reinicialização do sistema antes do login do usuário. Além disso, você não precisará fechar as portas se precisar alterar as configurações do par virtual ou excluir completamente um par.

  • O aplicativo torna possível não apenas criar portas COM virtuais, mas dar a elas os nomes desejados, incluindo aqueles já utilizados pelas portas físicas existentes. Os usuários poderão encontrar facilmente uma interface virtual necessária no grupo "Portas" do Gerenciador de dispositivos.

  • Os drivers de software passaram com êxito nos testes do Microsoft Windows Hardware Quality Labs (WHQL) e são assinados digitalmente pela Microsoft. Isso significa que você não receberá nenhum aviso ao criar portas COM virtuais no Windows 10, no Windows Server 16, no Windows XP etc.

  • O Virtual Serial Port Driver suporta totalmente linhas de sinal padrão de hardware, incluindo DTR/DSR/CTS/RTS/DCD/RI, etc. e controle de fluxo de software (Xon/Xoff).

  • A emulação de modem nulo é outra vantagem que você obtém com este utilitário. O Virtual Serial Port Driver permite emular a conexão de linha serial virtual e sua interrupção. Além disso, o software oferece vários esquemas virtuais de modem nulo, que podem ser salvos como um modelo.

  • Além disso, o Virtual Serial Port Driver vem com o vspdctl.dll, que permite controlar sua funcionalidade diretamente de seu próprio aplicativo. Ao usar essa biblioteca de links dinâmicos, você poderá criar e excluir pares de portas COM virtuais instantaneamente, sem precisar depender do utilitário de configuração padrão e de sua GUI.

Como usar portas seriais virtuais para testar e diagnosticar?


Emulação de porta serial


O método de testar e diagnosticar software usando dispositivos virtuais hoje se tornou amplamente aceito pelos desenvolvedores do software para sistemas de comunicação. Um dispositivo virtual simula o comportamento de um real no nível do software, permitindo que um programador teste e depure um aplicativo no estágio de desenvolvimento.

O método de emulação de porta serial é amplamente aplicado no desenvolvimento dos sistemas de comunicação mais complexos, incluindo dispositivos com interfaces RS232 e RS485. Atualmente, existe uma ampla gama de ferramentas de software que permitem a criação de múltiplas portas seriais virtuais em sistemas operacionais (predominantemente o Windows OS). Com a ajuda de portas COM virtuais adicionais, os desenvolvedores podem testar a troca de dados entre as interfaces RS232 e RS485. Quando se trata de funcionalidade avançada e facilidade de uso, o Virtual Serial Port Emulator parece ser o programa mais poderoso disponível atualmente. A solução é totalmente compatível com várias versões do sistema operacional Windows. Acima disso, o emulador de porta serial para Windows 10 é assinado digitalmente com WHQL, o que garante seu desempenho e estabilidade.

Princípios básicos de emulação de porta serial


1. Uma grande vantagem das interfaces seriais virtuais é que elas podem ser usadas para testar e depurar software quando não há uma porta COM física disponível no sistema.

Por exemplo, para depurar totalmente um programa de comunicação serial, pelo menos duas portas seriais físicas são necessárias. Como a maioria dos PCs modernos é equipada com uma única porta COM, um programador pode precisar de dois computadores ou uma placa de expansão PCI adicional com uma porta serial para depurar um aplicativo.

Alternativamente, um desenvolvedor pode recorrer à ajuda de um eficiente emulador de porta serial, o Virtual Serial Port Driver, que é capaz de criar várias portas COM virtuais na mesma máquina. Também vale mencionar que o desenvolvimento de aplicativos de comunicação não é a única área em que o conceito de portas virtuais é amplamente usado. O driver de porta serial virtual de 64 bits é considerado particularmente útil para testar aplicativos de muitos outros tipos.

2. Graças a um simulador de porta serial, é possível trocar dados entre dois ou mais aplicativos sem usar a tecnologia complexa de software de comunicação entre processos e compartilhamento de recursos. Dessa forma, para fornecer troca de dados, um programador utiliza portas COM virtuais em vez de portas físicas, portanto a velocidade de transferência de dados entre aplicativos é determinada pelos parâmetros do sistema (o tipo de processador, a quantidade de memória física disponível etc.). ) e não pelas características de uma porta serial. Como regra geral, a velocidade de transferência de dados através de portas COM virtuais é maior em comparação com a transmissão de dados através de portas seriais reais.

3. O software conecta portas seriais virtuais com um cabo virtual de modem nulo para que as portas COM possam ser usadas para comunicar dados entre diferentes aplicativos através da interface RS232. Configurado para esse propósito, as portas virtuais não usam as configurações padrão da velocidade de transferência de dados.

Usando o VSPD com linguagens de programação


★ VSPD com C/C++


Para usar a funcionalidade de emulador de porta virtual em C e C++, é necessário carregar dinamicamente o arquivo DLL, selecionar as funções necessárias e chamá-las. Veja um exemplo de como você pode fazer isso no 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;
};

Você também pode ver um ótimo exemplo de como programar uma porta COM virtual usando Visual Basic e Visual C ++ para comunicação entre o AVR e o PC usando o Virtual Serial Port Driver.


★ VSPD com Visual Basic


A instalação de funções do VSPD é muito mais fácil para usuários do Visual Basic. Tudo o que você precisa fazer é colar as seguintes linhas no arquivo de origem do 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

Coloque VSPDCTL.DLL no diretório do seu programa. Agora a função pode ser chamada diretamente.

★ VSPD com Delphi


Aqui estão as declarações de função para o 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";

O Delphi pode carregar o ArmAccess dinamicamente ou estaticamente. Aqui está um exemplo de código para carregamento dinâmico:

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

Requer: Available on Windows , 5.5MB tamanho
Versão 9.0.575 (23rd , 2019) Notas de versão
Categoria: Communication Application
Olga Weis 19 de abril, às 15:31
Olga Weis 27 de julho às 09:14