Здравствуйте товарищи. Подскажите пожалуйста, как я могу извлечь нужные мне данные. Через сериал я получаю бесконечно данные А50В60А50В60А........ Где А и В это сервы, числа после них это положения вала. Постоянные здесь А и В. Числа могут меняться от 0 до 1024. Как я могу присвоить переменной А значение между А и В и переменной В значения между В и А?
Мне нужно перечитать свой вопрос, так как он содержит половину ответа, или необходимо заново его составить по причине не понимания читающим написанного?
Ну это разные А. Поток идёт А50В60А55В78 и т. д. А И В это разные сервы. Переменными могут Vasya и Pupkin. Выше я назвал ими А и В, чтоб проще было понять.... Я хотел лишь смочь отделить А50 и присвоить к одной серве (Vasya) а В60 к серве Pupkin. Но мне нужны там только числа, без букав. Поток через сериал порт идёт непрерывно, даже если положение не меняется, он всё равно будет присылаться
Прилогаю скрин программы, которая отправляет и окно ком порта через которое я посмотрел, что она отправляет. Использовал есп32, через один сериал порт получал данные от программы и в формате char отправлял через второй сериал обратно на компьютер.
Я не пойму проблемы. Ну читай из порта побайтно и наполняй переменную. По приходу A, B или C переключай наполнение.
Не поймёте проблемы, так как знаете решение. А я и представить не могу как это реализуется в коде. По этому я и прошу помощи.
Покажу пример. Сразу говорю, его нельзя использовать в реальной программе, нет никаких проверок на ошибки, это именно пример. Код (C++): const uint8_t BufferSize = 5; char ReadBuffer[BufferSize]; uint8_t BufferPos; void setup() { Serial.begin(9600); Serial.println("Wait for data..."); } void loop() { while (Serial.available()) { char inChar = (char)Serial.read(); if (inChar >= '0' && inChar <= '9') { ReadBuffer[BufferPos] = inChar; BufferPos++; } else ShowData(inChar); } } void ShowData(char in) { char Symbol; int Number; switch (in) { case 'A': Symbol = 'B'; break; case 'B': Symbol = 'A'; break; default: return; } if (BufferPos) { BufferPos = 0; Number = atoi(ReadBuffer); Serial.print(Symbol); Serial.print(" = "); Serial.println(Number); memset(ReadBuffer, 0 , BufferSize); } } И если вы введёте строку в монитор порта, как на картинке то увидите разбор на части. Пробуйте.
И если вы введёте строку в монитор порта, как на картинке то увидите разбор на части. Посмотреть вложение 25298 Пробуйте.[/QUOTE] Спасибо Вам огромное добрый человек!
И если вы введёте строку в монитор порта, как на картинке то увидите разбор на части. Посмотреть вложение 25298 Пробуйте.[/QUOTE] Попробовал, но вторую переменную как получить я так и не понял. int Number; это одна переменная и она содержит в себе значения обоих осей...
Для примера она одна, и содержит по очереди значение то А то В. Если для вас это проблема, то тут только один путь, как сказали выше, он нудный, но без него никак - читать и практиковаться.