Array de Bytes Cshapr - Dúvida
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!
Alguém sabe como eu poderia pegar o primeiro e o último byte deste array de bytes ? Estarei no aguardo, obrigado!
Fábio Carvalho
Curtidas 0
Respostas
Thiago Santana
12/04/2015
Qual a linguagem utilizada Fábio?
GOSTEI 0
Lucas Ramos
12/04/2015
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]
GOSTEI 0
Fábio Carvalho
12/04/2015
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.
GOSTEI 0
Thiago Santana
12/04/2015
Não me atentei Lucas.
Mas a ideia é essa mesmo primeiro elemento posição 0.
Ultimo elemento posição = tamanho do array - 1
Mas a ideia é essa mesmo primeiro elemento posição 0.
Ultimo elemento posição = tamanho do array - 1
GOSTEI 0
Fábio Carvalho
12/04/2015
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(); }
GOSTEI 0