Как павильно считать строку с com порта
- Войдите на сайт для отправки комментариев
Пнд, 19/01/2015 - 22:54
На com порт приходит строка из 9 . Никак не могу ее правильно разбить на 3 int.
На com порт приходит строка из 9 . Никак не могу ее правильно разбить на 3 int.
int smbd[3] = {0, 0, 0}; byte lineEnding = 0x0A; int bytesRead = Serial.readBytesUntil(lineEnding, (char*)smbd, 3);проверяю допустим smbd[1], и получаю там двузначное число
Если я провеяю через монитор com порта, то симво 0x0A он добавляет автоматтически при нажатии enter?
Если я правильно понял задачу, то вот что приходит на ум первое.
void setup() { Serial.begin(9600); } void loop() { char incomingBytes[9]; String buffer; if (Serial.available()) { Serial.readBytesUntil(13, incomingBytes, 9); //Serial.readBytes(incomingBytes, 9); buffer = incomingBytes; int one_int = buffer.substring(0, 3).toInt(); int two_int = buffer.substring(3, 6).toInt(); int three_int = buffer.substring(6, 9).toInt(); Serial.println(one_int); Serial.println(two_int); Serial.println(three_int); } }Если строка содержит только числа, то можно так:
//a=s1*1000000+s2*1000+s3 unsigned long a; int s1=0; int s2=0; int s3=0; void setup() { Serial.begin(9600); Serial.setTimeout(4); Serial.flush(); } void loop(){ if (Serial.available()) { a = Serial.parseInt(); //Serial.println(a); s1=a/1000000; s2=(a-s1*1000000)/1000; s3=a-s1*1000000-s2*1000; Serial.println(s1); Serial.println(s2); Serial.println(s3); } }Строку формируем в компорт a=s1*1000000+s2*1000+s3