Функция availableForWrite() возвращает ошибку при компиляции для Arduino nano 33 BLE
В моем коде я использовал функцию availableForWrite(), как показано ниже. Когда я компилирую его для nano 33 IoT, все в порядке и отлично компилируется. Однако, когда я меняю плату на nano 33 BLE, я получаю два сценария: 1. использование Arduino IDE в качестве компилятора> не дает ошибок, но плата не после программирования. 2. используя веб-компилятор на веб-сайте Arduino > выдайте следующую ошибку:
error: 'class Arduino::USBSerial' has no member named 'availableForWrite'; did you mean 'available'?"
мой код:
NoreplyTime=millis();
TimePassed= millis()-NoreplyTime;
while(!Serial.availableForWrite()){
TimePassed= millis()-NoreplyTime;
if (TimePassed>1000){
return false;
}
}
даже просто имея:
while (!Serial.availableForWrite());
выдает ошибку ТОЛЬКО для платы nano 33 BLE!
Мысли?
@Afshin, 👍0
Обсуждение1 ответ
Лучший ответ:
В новых ядрах Arduino используется общий API, поддерживаемый в отдельном репозитории. Это было давно скопировано из ядра AVR и не содержит каких-либо функций, добавленных позже в другие ядра. Функция Stream.availableForWrite была добавлена в репозиторий Arduino API 5 месяцев назад.
Для ядра Arduino Mbed они создали ветку в репозитории API Arduino для перемещения ядра Arduino. в пространстве имен С++ «arduino». Но это было до того, как был добавлен availableForWrite. Таким образом, версия API, используемая в ядре Mbed, не имеет этой функции.
Я сообщил об этом как об ошибке. Даже если они добавят функцию в API, я сомневаюсь, что они добавят ее реализацию в Serial.
Спасибо за объяснение. Я новичок в программировании и понятия не имею, как это исправить, но тем временем я просто удалил его из своего кода и попытался убедиться, что у меня всегда есть место для получения данных! У меня вопрос, может показаться глупым, ссылка, которую вы предоставили для репозитория, содержит инструкции по установке, я должен установить его или Arduino IDE сделал это сам?, @Afshin
@Afshin, API Arduino является частью пакета плат, который вы установили для Nano 33 BLE., @Juraj
- Последовательный порт Arduino nano 33 BLE не работает с приложением С#
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Как управлять встроенными светодиодами Arduino Nano 33 BLE Sense?
- Проблемы с последовательной связью от Arduino к Bluetooth HC-05
- Как Arduino может проверить, подключен ли он к ПК и включен ли компьютер?
- Как отправлять и получать беззнаковые целые (unsigned int) от одного arduino к другому arduino
"но плата не после программирования" Что не так? Нужно дальше описывать. «веб-компилятор на веб-сайте Arduino», какой сайт компилятора с какими настройками? Возможно, используемое ядро на этом сайте не реализует этот метод., @chrisl
Извините ! Мне нужно было уточнить дальше. После программирования nano 33 BLE кажется, что ЦП не может выполнить эту командную строку и не может установить последовательное соединение. Удивительно, но нет никаких проблем, когда я программирую nano 33 IOT с тем же кодом, и он отлично работает . Мне кажется, что последовательная библиотека не включает команду «Serial.availableForWrite()» для плат BLE., @Afshin