Отправка в COM порт числа и сохранение его в переменной
- Войдите на сайт для отправки комментариев
Ср, 17/08/2016 - 22:25
Здравствуйтеюю. Пожалуйста, помогите найти решение.
Представим такую ситуацию:
Ардуинка висит на COM3. Приложение на компьютере отправляет на COM3 целые числа от 0 до 100. При чтении буфера функция Serial.read() возвращает отправленное число по одной цифре:
1 0 0
Как можно порлучить на ардуинке готовую переменную с значением отправленного числа?
Прочитать по одной цифре, складывая в строку, а потом преобразовать в целов функцией atoi
Прочитать по одной цифре, складывая в строку, а потом преобразовать в целов функцией atoi
До нельзя понятно и так, но хоть небольшой примерчик можно?
Ну, приведите свой текст, как Вы по одной цифре читаете. Там будет видно как туда atoi вставлять.
можно через "concat" складывать в строку :)
Прочитать по одной цифре, складывая в строку, а потом преобразовать в целов функцией atoi
До нельзя понятно и так, но хоть небольшой примерчик можно?
#76 DigiUSB замени на Serial
Переделал под serial, но светодиоды так и не загорелись.
Кто-нибудь приведите простой пример, чтобы при отправке в терминал цифры 100 на ардуине в переменная (допустим var) имела значение 100. Дальше сам разберусь. Спасибо.
Вроде нашел то что нужно, но здесь не используется ни atoi ни concat
char a = 0; long b = 0; boolean End, minus = 0; void setup() { Serial.begin(9600); } void loop() { if(Serial.available()){ delay(2); a = Serial.read(); if(a == 45){ minus = 1; } if(a >= 48 && a <= 57){ b *= 10; b += a - 48; End = 1; } } else if(End == 1){ if(minus == 1){ b = -b; } Serial.println(b, DEC); analogWrite(3,b); b = 0; minus = 0; End = 0; } }Переделал под serial, но светодиоды так и не загорелись.
если не заработало, значит не переделал.
у меня так получилось
// Чтение из последовательного порта компа числовых значений и // исполнение по ним команд (вкл-выкл светодиод) // возврат в порт числа и соотв ему символа, если такой имеется int incomingInt = 0; void setup() { Serial.begin(9600); pinMode(13,OUTPUT); } void loop() { if (Serial.available()) { incomingInt = Serial.parseInt(); if(incomingInt == 100) digitalWrite(13,1); if(incomingInt == 90) digitalWrite(13,0); Serial.print(incomingInt); Serial.print('='); Serial.write(incomingInt); Serial.print('\n'); } }