У каждого аппаратного серийного порта должно быть два сигнальных вывода tx и rx. На твоей нане я вижу только один порт. Контакт-это не порт. 2 контакта-это порт.
Ну все правильно. На плате контакты TX и RX. Это есть один серийный порт. Это есть Serial без всякой единички
Тогда как будет различаться команды : отправить данные по RS-485 от вывода на экран? Serial.print(data_in); это в цикле отправляет данные на температурный датчик Serial.print(data_in,HEX); это параллельно выводит на экран.
При чем здесь библиотеки? Просто при инициализации порта указать Serial1, а библиотеки по этому индексу сами разберуться. И ещё в тех документации действительно сказано,что ,что использовать Serial не рекомендуется. Но нигде не сказано,что запрещается. Я лично использовал. И ничего. Все работает. Так,что если у человека заработает-буду удивлён.,что причина крылась в этом.
Это в каком даташите написано? Или апноут есть какой? В приведенном выше коде это в какой строчке прописывается?
Паровоз. Ссылка на даташит в посте 48 этой темы. Ответ на 2 вопрос. В строке там ,где Бегин сериал. Так ото там номер сериала ставится. А процедура называется-инициализация порта. И ещё я тебе нечаянно нажал на мне нравится. Потому,что эта клавиша рядом с клавишей ответить. Так,что ты мне должен.
ссылка на даташит чего? Прекрасно. Как модбас библиотеке сказать, чтобы она села именно на этот порт, а не на какой-либо ещё? Я вот в коде этой инструкции не вижу.
Паровоз не доставай. Библиотеке говорить ничего не надо. Она сама прочитает строку "Бегин сериал1" И сядет на порт1,что в строке указано.
Нет ,рядышком ничего инициализировать не надо. Тупо выводить в тот порт,что раннее Инициализировали и фсе. Перед тем,как выводить в порт функция вывода посмотрит,какой там порт в бегине указан, оттуда и выведет. Паровоз,ну,что ты дурачка валяешь? Просто соскучился за мной и разговор поддерживаешь ни о чем? Я тоже рад с тобой пообщаться. Но ни о таком же фуфле.
Переключил.... но результат тот же.... Может как-то по особому нужно данные передавать в порт? У меня это обычный цикл for.... правильно? Код (C++): for(i=0; i<8; i++) { Serial1.print(data_in[i]); Serial.print(data_in[i],HEX); Serial.print(" "); } Serial.println(); Status = 0; } digitalWrite(9, LOW); // Режим чтения данных Еще возник вопрос про CRC.... нашел online калькулятор, тот дает мне вообще другую цифру... Для комбинации 010300000002 CRC=0x0BC4.... может еще кто-нибудь проверить?
По отправке данных и по их прему напишите ту программу,что я Вам выслал. Без всяких форов. Теперь по поводу CRC. Я Вам его посчитал по стандартной виндосовской технологии. Это технология Применяется фирмой Овен. И практически всеми мировыми брендами. Но есть специфические фирмы ,которые с этим не согласны. И высчитывают по другому. Алгоритм остаётся как у всех,но поли ном,как аргумент может быть другим. Чтобы исключить эту неразбериху. Вам необходимо сделать следующий шаг. Узнать у производителя либо этот полином,по которому высчитывается контрольная сумма и я высчитаю её по их полинома,либо взять у них полностью команду считывания температуры С контрольной суммой. Другого пути нет