Oct
14

Как читать строки из последовательного порта в Arduino

10/14/2023 04:30 PM по Admin в Iot


В этом кратком руководстве мы рассмотрим, как можно читать строки пользовательского ввода с последовательного монитора Arduino или других последовательных терминалов. Быстрые шаги.

  • Определите serial_buffer_len, который будет максимальным количеством ожидаемого пользовательского ввода.
  • Установите желаемую скорость последовательной передачи данных.
  • Проверьте, есть ли у нас серийные данные, используя Serial.available().
  • Вызовите определяемую пользователем функцию read_serial_input() для загрузки serial_buffer.
//Serial buffer
#define serial_buffer_len  80
char serial_buffer[serial_buffer_len];
String user_input = "";

void setup() { 
	Serial.begin(9600);
}

void loop() {
	if (Serial.available() > 0){
		if (read_serial_input(Serial.read(), serial_buffer, serial_buffer_len) > 0) {
			user_input = String(serial_buffer);
		}
		Serial.println("serial user input:" +user_input);	
	}
}

// funtion to read user serial input
int read_serial_input(int read_ch, char *buffer, int len) {
    static int pos = 0;  
    int rpos;   
    if (read_ch > 0) {
        switch (read_ch) {
            case '\r': // Ignore CR
                break;
            case '\n': // Return on new-line
                rpos = pos;
                pos = 0;  // Reset position index ready for next time
                return rpos;
            default:
                if (pos < len-1) {
                    buffer[pos++] = read_ch;
                    buffer[pos] = 0;
                }
        }
    }
    return 0;
}

После загрузки примера кода откройте последовательный монитор и введите что-то вроде hello world, после чего вы увидите это напечатанное на последовательном мониторе. Это очень полезный фрагмент кода, если вы хотите ввести строки от пользователя и выполнить над ними действия.


Твои мысли

Поиск
СПОНСОР
КРИПТОВАТЧ
ПОДПИСЫВАЙТЕСЬ НА НАС
ОБЪЯВЛЕНИЯ

Добавлен новый инструмент: Калькулятор размеров масштабирования SVG.

СПОНСОР

Snow: ON
Snow: ON