Help with Serial Hex Data


hi,

i'm working on reading 5 byte hex code that's being sent digi connectport x4 via serial mega adk. data being sent every 30 seconds. format of data : 0xaa, 0x"", 0x"", 0x"ffff", 0xaa header, 2 bytes contain voltage value remote xbee has been parsed , packed, 0x"ffff" crc value.

my general input comes in 0xaa 0x03, 0xbc, 0xa1, 0x50.

what i'm having trouble pulling packed value out of data stream. loose part of packet , don't know how fix that.. , have trouble crc calculation. i've commented out of xmodem crc stuff i've seen online moment.



code follows:

#include <crc16.h>


byte data[5];  //for holding id receive
int val = 0;
int voltage = 0;

unsigned char mess[5] = {data[5]};
void setup()
{
  // start serial port 19200 bps
  uint16_t crc_out; //crc call
  serial.begin(9600); //start serial
  serial1.begin(9600); //start serial1
  // crc_out = calc_crc(mess,10,0xffff); //calcs crc on fly
  // serial.println(crc_out, hex); //expecting 0xffff


  // delay(500);
  //  serial.flush();
  // serial.println();
  // serial.println("rfid module started in auto read mode, waiting card...");
}

void loop()
{
  val = serial1.read();
  while (val != 0xaa)
  {
    val = serial1.read();
    delay(2000);
  }
  //we read header (0xaa)
  data[0] = serial1.read();    // lo-hex
  data[1] = serial1.read();    // high-hex
  data[2] = serial1.read();    // checksum
  data[3] = serial1.read();    // checksum
  // hex voltage value
  delay(50);
  serial.print("data input: ");
  (int = 0; < 2; i++)
  {
    if (data == 4);
    serial.print(data, hex);
    //delay(100);
    //serial.println();
    voltage = map(data[0,1], 0, 1023, 0, 255);
    //serial.println();
    serial.print(voltage);

  }
  serial.println();
  //crc_out = calc_crc(mess,10,0xffff); //calcs crc on fly
  // serial.println(crc_out, hex); //expecting 0xffff
}

// uint16_t calc_crc(unsigned char *msg,int n,uint16_t init)
//{
// uint16_t x = init;

//  while(n--)
//  {
//   x = crc_xmodem_update(x, (uint16_t)*msg++);
// }

//  return(x);
//}

//uint16_t crc_xmodem_update (uint16_t crc, uint8_t data)
//{
// int i;

//  crc = crc ^ ((uint16_t)data << 8);
//for (i=0; i<8; i++)
//{
// if (crc & 0x8000)
// crc = (crc << 1) ^ 0x1021; //(polynomial = 0x1021)
//else
// crc <<= 1;
//}
// return crc;
//}


my current output : 3bc



1.
code: [select]
unsigned char mess[5] = {data[5]}; thing doing here!!!!

2.
code: [select]
void loop()
{
 val = serial1.read();
have no right assume there data available!..

3.
code: [select]
data[0] = serial1.read();    // lo-hex
 data[1] = serial1.read();    // high-hex
 data[2] = serial1.read();    // checksum
 data[3] = serial1.read();    // checksum
again have no right assume data avaliable let alone 5 (or 6) bytes.

over score 0/1000.

mark


Arduino Forum > Using Arduino > Programming Questions > Help with Serial Hex Data


arduino

Comments

Popular posts from this blog

Connecting Raspberry Pi 2 to P10(1R)-V706 LED Dot Matrix - Raspberry Pi Forums

TypeError: <unknown> is not a numpy array - Raspberry Pi Forums

datso and removing imagetitle - Joomla! Forum - community, help and support