Как передать шестнадцатеричные данные внутри следующей функции - PullRequest
0 голосов
/ 02 мая 2018

У меня есть следующая программа, в которой есть функция, которая извлекает конкретные байты из кадра из 8-байтовых данных и дает соответствующее значение, необходимое на основе начального бита и длины бита (длина, отсчитанная от начального бита).

Как я могу передать данные из 8 байтов, которые в шестнадцатеричном формате, в мой указатель * данные в основной функции. Например, это мои данные кадра в шестнадцатеричном формате «05 00 00 00 00 03 E8 00». Вот моя программа. Было бы здорово, если бы кто-нибудь помог мне решить эту проблему. Должен ли я взять массив и передать данные как 0x05 0x00 0x00 0x00 0x00 0x03 0xE8 0x00 в массив, а затем дать адрес назначения массива переменной указателя? или просто возьмите переменную, которая содержит 0x050000000003E800 и присвойте этот адрес указателю. Они одинаковы? Заранее спасибо.

union u_t
{
  uint16_t u16;
  uint8_t u8[2];
};
uint16_t Frame2Data(uint8_t *data,uint8_t startBit,uint16_t length)
{
  uint16_t mask;
  uint8_t start;
  uint8_t firstByte,offset;
  uint8_t numShift;
  union u_t ut;
  /*if(length == 8)     //preliminary, has to be fixed by correct function.  
    mask =  0xff;*/
  if(length == 7)
    mask = 0x7F;
  if(length == 10)
    mask = 0x3ff;
  if(length == 12)
    mask = 0xfff;

  firstByte = startBit / 8;
  offset = (firstByte+2) * 8;
  start = startBit + length;
  numShift = offset - start;
  ut.u8[1] = data[firstByte];
  ut.u8[0] = data[firstByte+1];
  return (ut.u16 >> numShift) & mask;
}
int main()
{
  ??????????
  uint8_t sB = 46;
  uint16_t l = 7;
  uint16_t extractValue = Frame2Data(?,sB,l);
  return 0;
}

1 Ответ

0 голосов
/ 02 мая 2018

Чтобы передать данные, записанные в шестнадцатеричном формате, в data, вы можете просто написать:

uint8_t data [] = { 0x05, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x00};

Обратите внимание, что переменная mask неинициализирована, поскольку l равен 7, а все инструкции по инициализации переменной mask являются мертвым кодом, как показано красным цветом, с анализатором исходного кода:

https://taas.trust -in-soft.com / tsnippet / т / 6d486c5b

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...