Отправить пакетную информацию на com-порт?
Я пытаюсь получить файл .bat для отправки данных моего процессора на com-порт, на котором находится мой arduino. Я пробовал несколько результатов Google (включая один с этого сайта), и все, что я нашел, просто... сотрет всю переменную, привязанную к com - порту. Arduino подключен к ЖК-дисплею (не совсем потому, что arduino microview, но в основном это так), который отображает переменные, которые я хочу, и работает так, как ожидалось, когда я помещаю данные в последовательный монитор вручную, но когда я запускаю что-либо, что должно отправлять информацию, все они становятся пустыми, когда у меня ничего нет в моем скетче это их очищает.
Файл получает данные так, как должен. Если я запущу это
wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature
потом у меня температура нормализуется. Но если я попытаюсь отправить это в ком - порт...
wmic /пространство имен:\\root\wmi ПУТЬ MSAcpi_ThermalZoneTemperature get CurrentTemperature > COM3
Arduino считывает все, что он получает, буквально как ничто, и пропускает переменные.
@Justerfrog, 👍-1
Обсуждение1 ответ
Как отметил Эдгар в комментариях, Arduino сбрасывается каждый раз, когда вы открываете последовательный порт.
Каждый раз, когда вы выполняете перенаправление, последовательный порт открывается заново, что сбрасывает Arduino в загрузчик. Затем возникает короткая задержка, пока загрузчик ищет подходящую связь для загрузки нового кода, а затем ваша существующая программа запускается заново.
В сочетании с этим возникает проблема скорости передачи данных: вам необходимо убедиться, что последовательный порт настроен на ту же скорость передачи данных, что и ваша программа.
Все вместе это означает, что простой редирект, который вы используете, на самом деле не лучший способ общения с Arduino. Вместо этого вам нужно будет написать правильную программу, которая открывает последовательный порт, ждет сброса Arduino, а затем начинает периодически искать и отправлять необходимую вам информацию.
Python и PySerial-это обычный выбор для начинающих, так как он прост в использовании и имеет множество примеров.
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Очистить существующий массив при получении новой последовательной команды
скачать и установить com0com с https://sourceforge.net/projects/com0com/ ... это создаст два связанных виртуальных последовательных порта ... подключите последовательный монитор, такой как PuTTY, или консоль arduino IDE к одному порту ... отправьте вывод WMIC на другой порт ... посмотрите, что отправляется из WMIC, @jsotola
каков ваш конкретный вопрос? ... вы не предоставили никакой информации, которая могла бы быть использована для отладки проблемы, @jsotola
Проблема в том, что пакетный файл буквально ничего не отправляет (до такой степени, что arduino устанавливает свои переменные в ничто, даже не "0", просто ничего) в тот момент, когда я запускаю файл .bat, хотя когда я просто запрашиваю информацию, она дает мне правильное значение., @Justerfrog
(@jsotola см. Выше, забыл ответить), @Justerfrog
Arduino может сбрасывать себя каждый раз, когда вы открываете последовательный порт., @Edgar Bonet
Переменные не могут быть отключены. Они всегда имеют какую-то ценность. Знаете ли вы, что именно команда wmic отправляет в каком формате? Это звучит так, как будто ваш код Arduino ожидает один формат (например, текст в формате ASCII в определенной форме), но команда отправляет его в другом формате. Вам нужно убедиться, что команда wmic отправляет именно то, что вы от нее ожидаете., @chrisl