Programação de comunicação serial com portas virtuais COM

Comunicação por porta serial

As portas seriais virtuais são essenciais quando os programas de software herdados precisam se conectar aos dispositivos da 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 LAN através de conexão TCP/IP, independentemente de quão distantes estejam um do outro.

Neste artigo, você encontrará um breve tutorial sobre emulador de porta serial virtual que mostrará como criar interfaces seriais virtuais no 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 o coloquem à frente das formas mais tradicionais de teste e depuração de aplicativos seriais.

Crie porta serial virtual agora

Conteúdo:

  1. Usando o VSPD com linguagens de programação
  2. VSPD com C/C++
  3. VSPD com Visual Basic
  4. VSPD com Delphi
  5. As vantagens do Virtual Serial Port por Eltima
  6. Perguntas frequentes sobre comunicação serial

Usando o VSPD com linguagens de programação


Atualmente, o método de teste e diagnóstico de software usando dispositivos virtuais tornou-se amplamente aceito pelos desenvolvedores do software para sistemas de comunicação. Um dispositivo virtual simula o comportamento de um dispositivo real no nível do software, permitindo ao programador testar e depurar um aplicativo na fase 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, há uma ampla variedade de ferramentas de software que permitem a criação de várias portas seriais virtuais em sistemas operacionais (predominantemente Windows OS).

O sistema operacional Windows é o principal alvo de aplicativos devido à sua enorme popularidade. A programação do Windows RS232 lida com as portas COM do sistema operacional, através das quais todos os dados entram e saem do computador. Muitas linguagens podem ser usadas, mas C é uma das principais linguagens usadas para esse tipo de programação. Você será solicitado a usar a API do WIN32 e, dependendo do seu aplicativo, talvez seja necessário se aprofundar na interface de telefonia TAPI do Windows.

O Linux é outro sistema operacional muito popular, com muitas variações em implementações específicas. Suas portas seriais são nomeadas diferentemente no Linux, com nomes como / dev / ttys0 e / dev / ttyUSB0; portanto, imediatamente existem diferenças na maneira como você aborda a programação serial do Linux. C novamente é uma opção popular de linguagem para programação serial e você estará interagindo com dispositivos que o Linux trata como arquivos. Você usará uma API como termios para se comunicar entre seu aplicativo e as portas seriais.

A natureza especializada da programação de portas seriais pode estar fora do escopo da experiência da sua equipe, e os problemas na comunicação entre o aplicativo e os dispositivos de destino pretendidos podem levar a um atraso incapacitante no seu projeto de desenvolvimento. Problemas como texto inesperadamente corrompido ou problemas de conectividade podem ser difíceis de diagnosticar para programadores sem ampla experiência em porta serial.

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 desenvolvido pela Eltima Software 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.

Crie porta serial virtual agora

VSPD com C/C++


Para usar a funcionalidade do emulador de porta virtual em C e C++, é necessário carregar dinamicamente o arquivo DLL, selecionar as funções necessárias e chamá-las. Aqui está um exemplo de como você pode fazer isso no Visual C++:

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

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

Exemplo de código:

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 com Visual Basic


A instalação das funções do VSPD é muito mais fácil para os 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 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 código de amostra 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;
Crie porta serial virtual agora

As vantagens do Virtual Serial Port by Eltima


Virtual Serial Port Driver demonstra a profundidade do conhecimento e a capacidade técnica dos programadores da Eltima. Veja alguns dos recursos e funções que a equipe trouxe para esses aplicativos e pense no que eles podem fazer pelo seu projeto.

Este aplicativo de software permite criar pares virtuais de portas seriais e transferir dados através de modems nulos virtuais. As portas virtuais aparecem no seu sistema como se fossem portas físicas, e o programa permite uma configuração fácil das suas portas virtuais.

Os principais benefícios são:


  • Com um driver de porta serial virtual, você deve adicionar um número ilimitado de pares de portas COM virtuais vinculadas por um cabo de modem nulo virtual. Além disso, o software permite 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 de par virtual ou excluir completamente um par..

  • O aplicativo possibilita não apenas criar portas COM virtuais, mas fornecer os nomes desejados, incluindo aqueles já usados 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 foram aprovados 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, Windows Server 16, Windows XP, etc.

  • O driver da porta serial virtual suporta totalmente linhas de sinal de hardware padrão, 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 driver da porta serial virtual permite emular uma 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 modelo.

  • Além disso, o Driver da porta serial virtual vem com o vspdctl.dll, que permite controlar sua funcionalidade diretamente do seu próprio aplicativo. Ao usar esta biblioteca de links dinâmicos, você poderá criar e excluir pares de portas COM virtuais rapidamente, sem precisar confiar no utilitário de configuração padrão e em sua GUI.
Crie porta serial virtual agora

Perguntas frequentes

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 desse tipo de conexão incluem fiação simples e transmissão de dados confiável em conexões de longa distância.
Para criar uma porta serial virtual no Windows 10, você precisa de uma solução de software profissional Driver de porta serial virtual . Não requer nenhum hardware e cabos adicionais. Para criar uma porta serial virtual, leia as instruções passo a passo abaixo.
Uma porta serial virtual é um pacote de software que emula totalmente as reais. Portanto, seu sistema operacional e todos os utilitários o reconhecem e interagem com ele como se fosse uma interface COM real.
Muitas vezes acontece que, ao trabalhar, o usuário se depara com o problema de falta física de uma porta de comunicação. Portanto, uma grande vantagem das interfaces seriais virtuais é que elas podem ser usadas para teste e depuração de software quando não há uma porta COM física disponível no sistema.
1. O software conecta portas seriais virtuais com um cabo de modem nulo virtual, para que as portas COM possam ser usadas para comunicar dados entre diferentes aplicativos pela interface RS232. Configuradas para esse fim, as portas virtuais não usam as configurações padrão da velocidade de transferência de dados.

2. Graças a um simulador de porta serial, é possível trocar dados entre dois ou mais aplicativos sem usar a complexa tecnologia de software de comunicação entre processos e compartilhamento de recursos. Dessa forma, para fornecer troca de dados, um programador depende de portas COM virtuais em vez de físicas. Como regra, a velocidade de transferência de dados via portas COM virtuais é maior em comparação à transmissão de dados via portas seriais reais.

3. Além disso, uma grande vantagem das interfaces seriais virtuais é que elas podem ser usadas para testar e depurar software quando não houver uma porta COM física disponível no sistema.

Os especialistas da Eltima Software podem ajudar com qualquer uma das suas necessidades de programação de portas seriais Windows ou Linux. Somos especializados em muitas linguagens de programação e plataformas de SO e podemos trabalhar com você para integrar perfeitamente seu aplicativo e os dispositivos externos que ele precisa acessar. A Eltima Port Virtualization Technology pode ser integrada a projetos de qualquer tamanho. Se você precisar de alguns procedimentos com problemas simplificados ou quiser gerenciamento de projetos em larga escala e desenvolvimento de aplicativos, a Eltima Software possui as habilidades necessárias para colocar seu projeto em funcionamento. Entre em contato com eles hoje e descubra como eles podem ajudar a resolver seus problemas de programação serial e manter seu projeto dentro do cronograma.

small logo Virtual Serial Port Driver
#1 às Software de Porta Serial
Virtual Serial Port Driver
Crie pares de portas COM virtual no Windows
4.9 classificação baseado em 97 + usuários
Obter um link de download para sua área de trabalho
Envie seu endereço de e-mail para obter um link para download rápido em sua área de trabalho e comece já!
ou