Softwareserial

Тема в разделе "Arduino & Shields", создана пользователем Илья22, 26 янв 2021.

  1. parovoZZ

    parovoZZ Гуру

    Ну так и общайся с ним по апппаратному сериалу.
     
  2. b707

    b707 Гуру

    По-моему у тебя с виндовым терминалом проблемы
    попробуй поменять сериалы местами - софтсериал слушать Монитором Ардуино. которым сейчас ты слушаешь аппаратный, а аппаратный - соответственно своим внешним сериалом
     
  3. Илья22

    Илья22 Нуб

    накидай по подробнее как ?
    Rx Tx (D0, D1) ???
     
  4. Илья22

    Илья22 Нуб

    СПС час попробую как ты говоришь, но я слушал по этому порту тепловычислитель СПТ 941 у него RS 2332 все ОК данные вменяемые
     
  5. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Упростите задачу. Напишите в скетче циклический вывод строки текста из ардуины через софтсериал---UART-USB конвертор --- USB PC на компьютер. И пока не получите ожидаемого - не отвлекайтесь. Иначе будете блудить в трех соснАх. Тут четыре места для ошибки
    0. Проблема с библиотекой софтсериала
    1. Перепутали TX, RX
    2. Глючный модуль конвертора
    3. Прога неправильно понимает приходящие данные

    Используйте Ардуиновский монитор порта, только меняйте в настройке IDE номер порта на тот, откуда читаете данные. Муторно, но так мы исключаем влияние сторонней программы.

    ПС. Выложите получаемый хекс-файл прошивки ардуины, я прогоню в Протеусе. Или сами это сделайте.
     
    Последнее редактирование: 26 янв 2021
  6. Илья22

    Илья22 Нуб

    Попробую Ваши советы, прогоните пожалуйста Протеусе мою прошивку
     

    Вложения:

    • hex.zip
      Размер файла:
      8,6 КБ
      Просмотров:
      185
  7. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Инициализируются как выходы пины 1, 10 -12. Но "осциллограмм" на них нет. Модель - Ардуино Уно.
     
  8. Илья22

    Илья22 Нуб

    спасибо большое
     
  9. vlanaz

    vlanaz Нуб

    Столкнулся с похожей проблемой. Решено следующим образом.
    Инициализируйте SoftwareSerial для работы с инверсной логикой. Так работает порт RS232C компьютера на аппаратном уровне. 0 для него равно логическому "1". Поставьте в инициализации софтверного порта параметр true.
    Моя строка для инициализации в Arduino Uno. Компьютер под Windows 7x64. Пины 2 и 3.

    SoftwareSerial mySerial(rxPin, txPin, true); // Пин для RX, TX. Инверсная логика в данных порта

    И должно быть вам счастье.
     
  10. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Если ТС связывает софтсериал Ардуины с компом через УСБ-Сериал конвертор, то инвертировать программно уровни - нет необходимости. Конвертор это делает сам, - так положено оборудованию по стандарту. Конкретно, мой Силикон Лабс конвертор это делает. Поэтому - совет дельный. Надо проверять.
     
    Последнее редактирование: 3 фев 2021
  11. vlanaz

    vlanaz Нуб

    Как я понял из переписки, пины 12/11 Arduino аппаратно напрямую подключены к порту RS232 компьютера. Конечно надо проверить :). Тем более это очень просто, инверсия предусмотрена в самой библиотеке SftwareSerial.
     
  12. b707

    b707 Гуру

    это в какой же ардуино так?
     
  13. vlanaz

    vlanaz Нуб

    У меня прямо сейчас на столе Arduino Uno. Через USB на плате общается с IDE. В компьютере этот канал - COM2.
    Когда работает скетч, COM2 слушает программа визуализации калибровочной сферы для MEMS магнитометра.
    Пины 2/3 назначены на Soft serial (Rx/Tx). Строка инициализации 4 поста выше. В компьютере COM3 слушает терминал, который используется для записи копии обмена через COM2 в файл.
    COM3 - один из 4-х портов платы расширения Orient XWT-PE4SV1LP на PCI-Ex1. Интерфейсные микросхемы в ней MOSCHIP.
    Скорость на COM2 и COM3 небольшая - 9600. По USB свободно и 115200 идет, но здесь установлено ограничение от сторонней прикладной программы. Размер принятых таким образом файлов - 5..10 тыс. строк.
     
  14. geher

    geher Гуру

    Чисто теоретически проблема может быть в настройках последовательного порта в программе, которой "слушаются" данные.
    Если что, эти настройки скоростью порта не ограничиваются. Еще там есть количество бит (вроде должно быть 8), тип проверки четности (вроде должно быть выключено) и количество стоповых бит (вроде 1). Конкретные значения этих параметров для SoftwareSerial надо уточнить.
    Еще есть аппаратный и программный контроль передачи данных. Вроде все должно быть выключено.
     
    Последнее редактирование: 6 фев 2021
  15. Илья22

    Илья22 Нуб

    спасибо за отклик я уже все перепробовал, но просматривается какая то странная хрень если сообщения начинается с пробели ноля то хотя бы не много есть логики в сообщении
     

    Вложения:

    • SDR.png
      SDR.png
      Размер файла:
      324,5 КБ
      Просмотров:
      168
    • настройки.png
      настройки.png
      Размер файла:
      41,6 КБ
      Просмотров:
      157
    • COM.png
      COM.png
      Размер файла:
      56 КБ
      Просмотров:
      173
  16. parovoZZ

    parovoZZ Гуру

    а это что:
    только не тип, а бит.

    И что он из себя представляет?
     
  17. Илья22

    Илья22 Нуб

    про программный контроль передачи данных я раньше не слышал и не встречался с этим
    хотя есть большой опыт работы с ком портом
     
  18. Илья22

    Илья22 Нуб

    случайно заметил закономерность странную
    если перед сообщение " 0test" (пробел0test) то в ответ приходит что то более вменяемое ".test."
     
  19. vlanaz

    vlanaz Нуб

    С типовыми настройками Softserial я столкнулся с тем, что com со стороны компьютера все время принимал ff, когда со стороны Arduino передачи не было. В принимаемый поток постоянно летели ff и эпизодически появлялись кривые байты, которые якобы передавало Arduino. То есть от Arduino в канале был ноль, а com порт понимал, что идут данные, то есть у него были логические единицы. Из этого я сделал вывод, что com порт все время понимал, что идет передача, а на самом деле там ее не было. Инверсия потока от Arduino все исправила.
     
  20. vlanaz

    vlanaz Нуб

    Программное управление - это использование служебных символов xOn и xOff (0x11/0x13) в канале, которые говорят о начале и конце передачи полезной информации.