Печать массива байтов на экране последовательного монитора Arduino IDE
Мне нужно напечатать указанный ниже массив байтов на экране последовательного монитора Arduino IDE
char b[]= {'0x7E', '0x00', '0x1C','0x90', '0x00', '0x13', '0XA2', '0x00', '0x41', '0x58', '0x1C', '0xCB', '0xFF', '0xFE', '0xC1', '0x7C', '0x00','0x0F', '0x00', '0x01', '0x00', '0x00', '0x37', '0x46', '0x46', '0x46', '0x00', '0x00', '0x00', '0xE7' };
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(b[]);
delay(500);
}
Но всякий раз, когда я пытался распечатать, возникала проблема с ошибкой, которая не была решена, а именно
C:\Users\Misha\Desktop\test\Test_2\Test_2.ino: In function 'void loop()':
Test_2:8:18: error: expected primary-expression before ']' token
Serial.println(b[]);
^
exit status 1
expected primary-expression before ']' token
Любые предложения по этому поводу будут вам очень полезны.
@varul jain, 👍2
Обсуждение1 ответ
Лучший ответ:
Таким образом невозможно распечатать массив.
Если вы хотите напечатать массив шестнадцатеричных значений (с двумя цифрами), вам необходимо использовать функцию sprintf
и изменить объявление массива b
.
uint8_t b[]= {0x7E, 0x00, 0x1C, 0x90, 0x00, 0x13, 0XA2, 0x00,
0x41, 0x58, 0x1C, 0xCB, 0xFF, 0xFE, 0xC1, 0x7C,
0x00, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x37, 0x46,
0x46, 0x46, 0x00, 0x00, 0x00, 0xE7};
int i;
void printHex(uint8_t num) {
char hexCar[2];
sprintf(hexCar, "%02X", num);
Serial.print(hexCar);
}
void setup() {
Serial.begin(9600);
}
void loop() {
for(i=0; i<sizeof(b); i++){
printHex(b[i]);
}
Serial.println();
delay(500);
}
Выходные данные:
7E001C900013A20041581CCBFFFEC17C000F0001000037464646000000E7 7E001C900013A20041581CCBFFFEC17C000F0001000037464646000000E7 7E001C900013A20041581CCBFFFEC17C000F0001000037464646000000E7
В этом случае аналогично. Отображаются только значения LSB, но значения MSB не отображаются на экране последовательного монитора., @varul jain
Что вы хотите напечатать? Символ ASCII или шестнадцатеричное значение? В последовательном мониторе Вы хотите это: 7E 00 ... ?, @leoc7
@varuljain Я обновил ответ., @leoc7
Кстати, буфер слишком мал, чтобы содержать два символа и символ «\0»., @KIIV
Мне очень хочется понять, КАК использовать Serial Monitor., @martymarty
Мне очень хочется понять, КАК использовать строку ввода Serial Monitor для записи/изменения элементов массива (вместо объявления массива, как это сделано в [1 ответ] выше. Марти, 8 января 2020 г., @martymarty
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- ошибка: espcomm_upload_mem failed при загрузке скетча
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Связь Arduino master/slave с использованием RS485
- Миграция проекта Arduino Uno R3 в Wemos D1 R2 — проблемы с распиновкой
что такое
b[]
? Переменная массива — это простоb
., @JurajЭй, спасибо за предложение. Всякий раз, когда я также использовал
Serial.println(b)
, но он печатал только значение LSB, я не мог распечатать значения MSB., @varul jainконечно. вы не можете распечатать массив с помощью
print
, и неверный синтаксис в этом не поможет., @JurajО каких значениях MSB вы говорите? У вас просто есть список из 8-битных значений. В них нет ничего «MSB» или «LSB». Я думаю, вам нужно вернуться и переосмыслить то, что вы делаете и спрашиваете, и привести эти два понятия в соответствие., @Majenko