Array de Bytes Cshapr - Dúvida

12/04/2015

0

Fala galera, tudo bem? Estou construindo uma aplicação de baixo nível em que eu recebo uma mensagem no formato de bytes em determinado tempo. A minha função que recebe esta mensagem de bytes, a armazena na minha variável local do tipo byte que é chamada de buffer[]. A minha dúvida é a seguinte, eu preciso pegar o primeiro byte (byte inicial) e o último byte (byte final) destas mensagens que me são enviadas. Do meu array de bytes que é o buffer[]. E isso porque quando eu identificar que terminei de receber tal mensagem, eu terei que criar um intervalo de tempo.

Alguém sabe como eu poderia pegar o primeiro e o último byte deste array de bytes ? Estarei no aguardo, obrigado!
Fábio Carvalho

Fábio Carvalho

Responder

Posts

13/04/2015

Thiago Santana

Qual a linguagem utilizada Fábio?
Responder

13/04/2015

Lucas Ramos

Qual a linguagem utilizada Fábio?


Thiago ele colocou na descrição C#.

Fábio,

Essa função pode te auxiliar para o intervalo de Tempo

Thread.Sleep

Primeiro byte
buffer[0]?

Último byte
buffer[buffer.Length - 1]
Responder

13/04/2015

Fábio Carvalho

Qual a linguagem utilizada Fábio?


c#


Fábio,

Essa função pode te auxiliar para o intervalo de Tempo

Thread.Sleep

Primeiro byte
buffer[0]?

Último byte
buffer[buffer.Length - 1]


Lucas, valeu!Irei tentar, caso dê certo irei postar aqui mais tarde.
Responder

13/04/2015

Thiago Santana

Não me atentei Lucas.
Mas a ideia é essa mesmo primeiro elemento posição 0.
Ultimo elemento posição = tamanho do array - 1
Responder

16/04/2015

Fábio Carvalho

Então galera, consegui utilizando um exemplo da MS. O Length não dava porque ele pega o tamanho do array, eu precisava de algo pra ler dentro do buff também, então fiz uma verificação utilizando inteiros mesmo, dei um readbuffer pra pegar esse buff em uma das variáveis, e utilizei temporizador. Muito obrigado aos que me ajudaram!

private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            try
            {
                //retrieve number of bytes in the buffer
                int bytes = 1, bytesLast = 0;

                while (bytesLast != bytes)
                {
                    Stopwatch sw = new Stopwatch();

                    bytesLast = bytes;
                    // delay em microsegundos ------------------------------------------------------------

                    sw.Start();
                    while ((sw.ElapsedTicks / (Stopwatch.Frequency / (1000L * 1000L))) < interchar_delay_us) ;
                    sw.Stop();
                    //------------------------------------------------------------------------------------

                    bytes = sp.BytesToRead;
                }

                //create a byte array to hold the awaiting data
                comBuffer = new byte[bytes];
                //read the data and store it
                sp.Read(comBuffer, 0, bytes);
                if (bytes > 4 && bytes < 13)
                {
                    if(clsProtocolo.ChecarCRC(comBuffer))
                        EventDataRecived(comBuffer);

                    Console.WriteLine();
                    foreach (var b in comBuffer)
                    {                        
                        Console.Write(String.Format("{0:X} ", b));

                    };                 
                }
                

            }
            catch
            {
                //    MessageBox.Show("Erro");
                Console.WriteLine("ERROR");
            }
            //    Console.ReadKey();
        }

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar