Доброго времени…
Задачка следующая, на stm32 необходимо по условию читать из Serial или из Serial3. Хотел сделать по простому
HardwareSerial *MySerial;
if (a == 1) {
MySerial = &Serial;
}
else {
MySerial = &Serial3;
}
Но оказывается Serial это не HardwareSerial class.
Ругается Compilation error: cannot convert ‘USBSerial*’ to ‘HardwareSerial*’ in assignment
В интернете видел, делают свой класс с обертками над Stream. Может есть попроще способ?
gonzales:
есть попроще способ?
Ну, Вы сообщение-то сами читали? Или только нам выложили?
Заменить у себя слово HardwareSerial
на USBSerial
мамка не велит? Или по уставу не положено?
v258
14.Май.2025 10:33:31
4
А какой у него тип? И какой тип у Serial3
?
У Serial USBSerial, у Serial3 - HardwareSerial.
v258
14.Май.2025 10:38:06
6
Замените HardwareSerial *MySerial;
на Print *MySerial;
Может Вы имели в виду Stream?
Stream *MySerial;
У Print нет методов available и readBytes
BOOM
14.Май.2025 10:54:14
8
А что у Вас за аддон?
На моем (первом, что попался под руки) пишет, что не знает вообще таких как Serial3…
sketch_may14a.ino.cpp:(.text.setup+0x24): undefined reference to `Serial3'
И что за плата? Я пробовал разные выбирать (синюю / черную таблетку, 40х серию, 70х серию). Скорее всего это проблема в аддоне.
v258
14.Май.2025 10:58:01
11
Я имел в виду то, что написал. Кто мешает вам попробовать Stream
?
BOOM
14.Май.2025 11:01:19
12
Notice
This software is experimental and a work in progress. Under no circumstances should these files be used in relation to any critical system(s). Use of these files is at your own risk .
Для моих нужд Stream оказалось достаточно.
1 лайк
BOOM
14.Май.2025 11:07:34
14
Возможно, вы имели ввиду наоборот? Потому что вот такой код:
void setup() {
HardwareSerial *MySerial1;
MySerial1 = &Serial;
MySerial1->println("MySerial1");
}
void loop() {
}
Отлично компилируется:
Скетч использует 7148 байт (10%) памяти устройства. Всего доступно 65536 байт.
Глобальные переменные используют 1076 байт (5%) динамической памяти, оставляя 19404 байт для локальных переменных. Максимум: 20480 байт.
У Вас наверное стоит другое ядро для stm, в котором Serial - наследник HardwareSerial
BOOM
14.Май.2025 11:25:28
16
Возможно, я сильно в нем не копался.
У меня для STM32 используется STM32CubeIDE …
nik182
14.Май.2025 12:52:32
17
А что это за stm у которого третий сериал есть?
Дык ТС уже писал, обычный F103, виртуальный порт поверх USB + три аппаратных.
g031 например два uart и один lpuart
gonzales:
Чушь не пишите
Хрена, так себе. Ладно, не буду.