Я хочу получать и сохранять шестнадцатеричные значения с ПК на STM32-uC через UART.
Полученные HEX-значения выглядят следующим образом:
FF00 4a85 04b5 08aa 6b7r 00FF
(FF00 и00FF просто проверяют байты)
Я хочу сохранить много (разных) строк данных, которые выглядят так: 4a85 04b5 08aa 6b7r
4a85 04b5 08aa 6b7r
4a85 04b5 08aa 6b7r
4a85 04b5 08aa 6b7r
4a85 04b5 08aa 6b7r
4a85 04b5 08aa 6b7r
...................
Позже мне нужно читать память и получать значения int из каждого2 байта:
04D1 -> 1233
- Вопрос:
Я создаю несколько массивов
volatile uint8_t testarrays[8][5000]; //data storage
и инициализирую с помощью:
uint8_t received_str[12] //4 Bytes: `FF 00 and 00 FF` checksum
uint32_t h=0;
while(h<5000){
if (receive_done_flag == TRUE) { //UART receive data
testarrays[0][h]=received_str[2];
testarrays[1][h]=received_str[3];
testarrays[2][h]=received_str[4];
testarrays[3][h]=received_str[5];
testarrays[4][h]=received_str[6];
testarrays[5][h]=received_str[7];
testarrays[6][h]=received_str[8];
testarrays[7][h]=received_str[9];
}
receive_done_flag == FALSE
h++;
}
Верна ли моя идея?
Вопрос:
Как позже прочитать данные из хранилища?uint16_t x = 0;uint16_t y = 0;uint8_t motorspeed_hex [8];
uint16_t speed_hex_M1;
uint16_t speed_hex_M2;
uint16_t speed_hex_M3;
uint16_t speed_hex_M4;
while(y<vert_length){
x=0;
while(x<hor_length){
motorspeed_hex[x] = testarrays[x][y];
x++;
}
uint16_t speed_hex_M1 >> 8 = motorspeed_hex[0]
uint16_t speed_hex_M1 = motorspeed_hex[1]
uint16_t speed_hex_M2 >> 8 = motorspeed_hex[2]
uint16_t speed_hex_M2 = motorspeed_hex[3]
uint16_t speed_hex_M3 >> 8 = motorspeed_hex[4]
uint16_t speed_hex_M3 = motorspeed_hex[5]
uint16_t speed_hex_M4 >> 8 = motorspeed_hex[6]
uint16_t speed_hex_M4 = motorspeed_hex[7]
y++;
}
Теперь я должен преобразовать speed_hex_M1 .. в int-значения, как я могу сделать это в c?
Большое спасибо!