Serial Monitor в Arduino работает, но другой последовательный терминал работает только в одном направлении
У меня есть код Arduino, работающий на Adafruit Feather STM32F405 Express, и пока я тестирую его с помощью последовательного монитора Arduino, все работает идеально. Поскольку я хочу использовать последовательный терминал (приложение на C# или "Терминал Br@y++") через тот же COM-порт, я могу писать свои команды, они выполняются (выходные контакты отправляют ожидаемый сигнал), но я не получил последовательную обратную связь.
Мой код Arduino :
void setup() {
Serial.begin(115200); // initialise USB Serial Port
pinMode(pumpP, OUTPUT); // Pump Pin is an output
}
void loop() {
if (Serial.available() > 0) {
command = Serial.readStringUntil('\n');
}
if (command == "do-it"){
digitalWrite(5, HIGH);
Serial.println("did it!");
}
}
На последовательном мониторе Arduino я пишу "сделай это", и я получил "сделал это!", и я вижу, как меняется уровень вывода 5. Во всех последовательных приложениях, которые я мог бы использовать, я вижу, как меняется уровень вывода 5, но не "сделал это!".
Я настроил Arduino, как описано на этой странице Adafruit : https://learn.adafruit.com/adafruit-stm32f405-feather-express/arduino-ide-setup [ краткое описание: используйте библиотеку STM32F4, номер платы = "Adafruit Feather STM32F405", поддержка USB = "CDC ( универсальный последовательный заменяет USART)", метод загрузки = "STM32CubeProgrammer (DFU)" ] И я подключаю вывод DFU к 3,3 В во время загрузки и сбрасываю плату после этого.
Самое худшее в этой истории то, что в первый раз все сработало нормально. С тех пор как прошла неделя или две, я больше не заставляю его работать.
@2diabolos.com, 👍1
Обсуждение1 ответ
Спасибо @Majenko, вы дали решение : Я поставил галочку "RTS/CTS" в разделе "рукопожатие" терминала Брэя, и я получил все свое серийное сообщение от STM32.
Я предполагаю, что это распространенное мнение о большем, чем stm32? как вы узнали, это где-то написано в документации по Arduino?
для таких людей, как я, которые не знают, что такое RTS/CTS, вот вы: http://www.brainboxes.com/faq/items/what-is-rts--cts-hardware-flow-control - или не так прямолинейно https://en.wikipedia.org/wiki/RS-232#RTS,_CTS,_and_RTR
Забавно понять, что эта "5-контактная связь" виртуализируется в USB.
@Majenko: если вы хотите "владеть" решением, я позволю вам написать его самостоятельно, я установлю ваш ответ в качестве решения.
У меня была аналогичная проблема с Adafruit Feather M0 Express, который использует чип ATSAMD, и включение DTR (DtrEnable класса SerialPort) в моей программе C# устранило эту проблему для меня., @drojf
- Нахожусь ли я на пределе времени передачи UART?
- Как создать устройство USB CDC. (Я использую черную таблеточную плату stm32f103c8), и я хочу читать данные через USB на моем Raspberry Pi в качестве последовательного порта.
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
Это похоже на проблему с программами последовательного терминала. В конце концов, они должны сделать то же самое: подключиться к COM - порту, настроить его и прослушивать/отправлять на нем. Поэтому, если они не работают, но последовательный монитор Arduino работает, это будет означать, что они делают что-то не так., @chrisl
Убедитесь, что ваша программа последовательного терминала утверждает флаги DTR и RTS порта CDC/ACM., @Majenko
Это "своего рода работа". Мне нужно подключиться без функции RTS, и после подключения я нажимаю кнопку RTS, и она работает. Когда я подключаюсь с включенной функцией RTS, она не получает никакого сообщения. Кажется немного странной и не стабильной рабочей вещью. Следует ли активно включать/выключать DTR перед каждым ожидаемым сообщением ? когда я держал его на высоком уровне, он не работал (за исключением одного или 2 сообщений)., @2diabolos.com