Форум » » Serial queue » Ответить

Serial queue

kesaman2: Народ, кто подскажет как этим модулем пользоваться? Сразу скажу я знаю, что его проходят на среднем курсе программирования, но я там не был. Есть сигнал на ком порт от ардуинки - два датчика температуры. Ардуинка сдохла на перезаливку скетча и поэтому я ничего изменить в програме не могу. 2 датчика присылают на рх вход 1-го ком порта процессора с разницей 50 мс, затем через 10 секунд ещё 2 показания.Типа 25.47 прошло 50мс и от второго датчика, скажем, 24.37. Как это вывести в 2 тестовых поля. Сейчас у меня в одном текстовом поле этот сигнал меняется за 50 мс и принимает состояние последнего датчика.

Ответов - 7

Игорь K.: Вопрос не поставлен. В каком виде приходят данные на com порт процессора Crestron? Временные параметры, в общем понятны, процессор успеет.

kesaman2: Вопрос: как из одного сериал джоина сделать 2 сериал джоина и выхватывать в них данные по 1 выходу с RX c с ком порта с разницей 50мс+10с. Данные приходят так(из симпл дебагер): 12:15:45 - 03-10-2015: arduino_rx -> 25.56\x0D\x0A 12:15:45 - 03-10-2015: temp -> 25.56 12:15:45 - 03-10-2015: arduino_rx -> 25.69\x0D\x0A 12:15:45 - 03-10-2015: temp -> 25.69 12:15:55 - 03-10-2015: arduino_rx -> 25.56\x0D\x0A 12:15:55 - 03-10-2015: temp -> 25.56 12:15:55 - 03-10-2015: arduino_rx -> 25.69\x0D\x0A 12:15:55 - 03-10-2015: temp -> 25.69 12:16:05 - 03-10-2015: arduino_rx -> 25.56\x0D\x0A 12:16:05 - 03-10-2015: temp -> 25.56 12:16:05 - 03-10-2015: arduino_rx -> 25.69\x0D\x0A 12:16:05 - 03-10-2015: temp -> 25.69 temp выходит из serial substring w/empty pass с параметрами 1d 5d

Игорь K.: Ясно. Массивом переменных. Приход первого значения - присваивание переменной temp1, например, Далее по приходу \х0D\х0А присваивание пришедшее значение переменной temp2. Ключевая функция Change - определение события в виде прихода данных в порт. Из опыта доложу, что не нужно привязываться ко временам и задержками (при обработке приходящих данных), нужно чтобы программа ждала соответствующих символов и реагировала только на них.


kesaman2: Игорь K. пишет: Ключевая функция Change Имеешь ввиду сишарп?

Игорь K.: Нет, функцию Simpl+.

eoulianov: А оно не стрёмно, что они не отличаются по формату? Там выйдет так что после перезагрузки этого arduino или какого-нибудь датчика посылки с температурой станут идти в обратном порядке или одна за другой через 5 сек? Однако, если оно всё же так и есть, т.е. две посылки идут почти стразу, а потом снова через 10 сек, и приходящие ##.##\n - это то что нужно, то на SIMPL всё выходит изящно: - делаем ring counterс количеством выходов по количеству датчиков - на его выходы вешаем разрешение соответствующего количества serial buffers, на входы buffers сажаем наш входной сигнал, а выходы - будут нужными строками по датчикам. Их нужно на make string permanent. - входной сигнал суем на serial/analog oneshoot, и полученный импульс (короткий, 0s) суём на clock в ring counter, чтобы переключал на следующий буфер. - этот же импульс суём в retriggerable oneshoot на 5 сек, а по *завершению* выхода этого oneshoot делаем logic wave pulse, которую суем на reset ring counter - т.е. когда какие-то строки пришли, но потом не приходили не менее 5 сек, значит нужно переключить ring counter на 1-й выход, ибо после долгого промежутка ожидается именно первый датчик.

kesaman2: eoulianov пишет: А оно не стрёмно, что они не отличаются по формату? Там выйдет так что после перезагрузки этого arduino или какого-нибудь датчика посылки с температурой станут идти в обратном порядке или одна за другой через 5 сек? Ардуинка опрашивает датчики, а не датчики шлют ардуинке температуру. Поэтому данные всегда будут идти 10с+50мс и всегда сначала первый, потом второй датчик(у датчиков в ПЗУ зашиты 12 значные серийные номера), если 1 не подключить, то будет 0.00 и через 50 мс. Спасибо, твой алгоритм работает. Вот как это выглядит: http://www.nubiax6.ru/index.php/features/dimmer-temp-arduino



полная версия страницы