Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Leandro Rodrigo Oliveira

Outro Socket TCP-IP em VBA - Como "quebrar" o frame recebido

Recommended Posts

Bom  dia!

 

Estou programando um sock TCP-IP para receber dados de um scanner 2D. Porém, não consigo receber dados como pacotes. Quando recebo é como se eu estivesse pegando um Byte por vez e gostaria de saber como faço pra receber somente o Byte que eu quero. Criei um UDT da mesma forma que o manual do transmissor indica que ele transmite mas não consigo fazer com que os dados de cada pacote se "encaixem" conforme cada Byte. Segue abaixo um exemplo do código que fiz e que não recebe os dados daquele determinado pacote, mas sim aleatório.

 

Private Type packet_Header 'CRIEI O UDT CONFORME O MANUAL DO EQUIPAMENTO
    
        magic As Integer
        packet_type As Integer
        packet_size As Integer
        header_size As Integer
        scan_number As Integer
        packet_number As Integer
        timestamp_raw As Date
        timestamp_sync As Date
        status_flags As Integer
        scan_frequency As Integer
        num_points_scan As Integer
        num_points_packet As Integer
        first_index As Integer
        first_angle As Integer
        iq_input As Integer
        angular_increment As Integer
        iq_overload As Integer
        header_padding As Integer
        
    End Type

    Private Type scan_point_data
        
        distance As Integer
   
    End Type

 

Public Sub CommandButton1_Click()

 

Set tcpClient = New MSWinsockLib.Winsock

tcpClient.Protocol = sckTCPProtocol
tcpClient.Connect "169.254.218.229", "59164"
MsgBox tcpClient.State
'MsgBox tcpClient.SocketHandle
MsgBox tcpClient.BytesReceived

 

End Sub

 

Public Sub tcpClient_DataArrival(ByVal bytesTotal As Long)


Dim teste As packet_Header

 

tcpClient.GetData teste.magic ' NESSA LINHA EU GOSTARIA DE RECEBER O DADO DESSE BYTE DO FRAME, MAS ELE VEM ALEATÓRIO.

MsgBox teste.magic
 

End Sub

 

 

Editado por Leandro Rodrigo Oliveira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×