Доброго всем времени суток, пытаюсь с помощью Arduino UNO принять данные по UART и передать их. Что получается. входящие данные в ардуину - символы (#,v), или же если в DEC - числа 35 и 118. Я пытаюсь каждое число запихнуть в массив и передать их дальше через Tx, отслеживая логическим анализатором. но в результате на выходе получается 0 и 0. Прикладываю скетч, искренне прошу помощи разобраться, мучаюсь уже 5 дней... Код (C++): int8_t a[2]; int i; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { Serial.readBytes((char *)a, 2); // в a[0] первая переменная, а в a[1] вторая Serial.setTimeout(100); for (i = 0; i < 2; i = i + 1) { Serial.print(a[i]); } delay(2000); } }
Кода передатчика к сожалению нету, т.к это модуль управления заводской). Все чем располагаю - это данные с лог анализатора. http://www.fotolink.su/v.php?id=eeae80e3cc41f4aaacbf545e43b29f05
Вы уверены, что параметры принимаетмого сигнала соответвуют настройкам ардуины - скорость порта, стоп биты и тд?
хм. Честно говоря, после того как Вы сказали - не уверен... Ардуину "колупаю" чуть больше двух недель, так что еще нуб нубом). Если посоветуете в какую сторону копать, буду премного признателен.
тут дело не в ардуине, а в том устройстве, которое передает данные.Что известно про параметры передачи? Скорость порта? Четность? Стоп-биты? Потыкайте в логанализатор - может там есть настройки параметров порта?
Анализатор использую - салае логик, там настроек не очень то и много. Про параметры передачи абсолютно ничего не известно... Только то, что на скриншоте прикрепленном сверху...
Салеае вам выдал две цифры. Он сейчас имеет какие-то настройки, иначе ничего бы не выдал. Смотрите ЕГО настройки. Если эти две цифры по здравому смыслу и устройству не подходит - увеличивайте скорость приема данных в настройках в анализатора.
тогда вы рано за ардуину взялись. Для начала надо определить, как минимум, скорость передачи. Уверен, в логиканализаторе есть эти данные - иначе он бы ничего не принимал. Найдите описание да разберитесь Пока вы не определите параметры сигнала - вы очень долго можете разбираться, почему ардуина "не принимает"
Покажите скриншот и расскажите что за устройство вы читаете. Какого вы заставляете хрустальные шары тереть.
ну значит логиканализер такой определил. Зайдем с другой стороны - те данные, что прочитал логик анализер - вот эти ваши байты 35 и 118 - похожи на те, что должны приниматься с прибора?
Расскажу то, что известно. Этот прибор - плата управления, состоящая из двух частей. Одна - управление основное (датчики, тэны, дамперы), вторая часть - управление инверторным мотором. Между этими частями стоит оптрон, на который и приходит этот сигнал. Проверял осциллографом, всего там бывает два сигнала. Один на запуск, второй на стоп. Никакой технической информации о плате нет, т.к сами понимаете, коммерческая тайна завода ЛДжи. Все что есть, это осцилл, анализатор и желание))
простите, но это никуда не годится. В ардуине вы не разбираетесь, логиканализатором пользоваться не умеете, и даже про то, что в последовательном соединении бывают разные скорости - до сегодня и не подозревали. При этом вы беретесь раскодировать сигналы, о которых ничего не знаете? А с чего вы вообще решили, что связь там по последовательному интерфейсу? Или может вы даже не в курсе, что существуют и другие??? Судя по странной скорости в 122 бода - это вряд ли Сериал, а значит подключать его к Сериалу ардуины задача абсолютно бессмысленная, никаких разумных данных вы не прочитаете. Займитесь чем-нибудь более полезным.
А скрин с лог анализатора нельзя ещё меньше сделать? Рецепт - посылай в интерфейс детерминированную посылку, в лог анализаторе ставь маркеры на начло посылки и конец. Затем по времени пересылки известного количества бит вычисляешь скорость передачи.
В ардуине я только начал разбираться и это первый проект, все с чего то начинали. У меня были другие языки программирования. Про то что скорости бывают разные - я знал, но не думал что это может отразиться на считывании. Я в курсе что существуют другие, SPI, I2C. Но в этом случае, это Serial. Я и удивился что скорость такая низкая..