Problema com envio de array de byte em udp

3 respostas
sarkozy

fala ae,

preciso mandar comandos em hexa, via UDP, para uma placa.Um dos comandos é esse: 55 AA 40 00 (55 AA é a assinatura)

mas o AA é muito grande para o tipo byte.

meu codigo:

public static void sendText(String texto, String ipDestino, int porta) throws SocketException, UnknownHostException, IOException 
     {
        // declara socket cliente
        DatagramSocket clientSocket = new DatagramSocket();

        // obtem endereço IP do servidor com o DNS
        InetAddress endereco = InetAddress.getByName(ipDestino);

        //   os dados enviados da visao
        byte[] dadosParaEnvio;
        dadosParaEnvio = new byte[] {0x55, 0xAA, 0x40, 0x00}; // da pau aqui pq o AA é muito grande para o tipo byte

        // cria pacote com o dado, o endereço do server e porta do servidor
        DatagramPacket datPacketSend = new DatagramPacket(dadosParaEnvio, dadosParaEnvio.length, endereco, porta);
       
        //envia o pacote
        clientSocket.send(datPacketSend);       
        clientSocket.close();
       
    }

Pessoal, como eu vou enviar o AA sendo que o tipo byte não suporta ele?

o tipo float aceita, mas o DatagramPacket não aceita float como parametro....

existe algum jeito de fazer isso que eu preciso em java?

obrigado.

3 Respostas

sarkozy

ninguem?

:frowning:

zerokelvin

Cara, nunca vi isso, mas eu usaria um String.toArrayByte() pra este texto q precisa ser enviado q vai t retornar o array[] certinnho, dae concatena no inicio essa assinatura… veja ae!

sarkozy

ai é q ta.. assim nao funciona

em cada posição do array de byte tenho que colocar um numero em hexa decimal incluindo a assinatura.

dessa forma :

byte[] dadosParaEnvio = new byte[] {0x55,0xAA, 0x40, 0x00};

só que esse AA é muito grande para o tipo byte

eu pedi um codigo exemplo para o fornecedor da placa de como ele enviava o pacote e ele me enviou isso:

// codigo em VB.Net. 

Dim udp As New UdpClient

Dim sendBytes As Byte() = New Byte() {&H55, &HAA, &H1, &H1}

sendBytes = {&H55, &HAA, &H40, &H0}

udp.Send(sendBytes, 4, txtIP.Text, txtPortUDP.Text)

em vb.net funciona e em java não?

alguem sabe o problema? O que eu estou fazendo de errado?

preciso disso com mta urgencia...

Criado 23 de março de 2011
Ultima resposta 24 de mar. de 2011
Respostas 3
Participantes 2