По-моему у тебя с виндовым терминалом проблемы попробуй поменять сериалы местами - софтсериал слушать Монитором Ардуино. которым сейчас ты слушаешь аппаратный, а аппаратный - соответственно своим внешним сериалом
СПС час попробую как ты говоришь, но я слушал по этому порту тепловычислитель СПТ 941 у него RS 2332 все ОК данные вменяемые
Упростите задачу. Напишите в скетче циклический вывод строки текста из ардуины через софтсериал---UART-USB конвертор --- USB PC на компьютер. И пока не получите ожидаемого - не отвлекайтесь. Иначе будете блудить в трех соснАх. Тут четыре места для ошибки 0. Проблема с библиотекой софтсериала 1. Перепутали TX, RX 2. Глючный модуль конвертора 3. Прога неправильно понимает приходящие данные Используйте Ардуиновский монитор порта, только меняйте в настройке IDE номер порта на тот, откуда читаете данные. Муторно, но так мы исключаем влияние сторонней программы. ПС. Выложите получаемый хекс-файл прошивки ардуины, я прогоню в Протеусе. Или сами это сделайте.
Столкнулся с похожей проблемой. Решено следующим образом. Инициализируйте SoftwareSerial для работы с инверсной логикой. Так работает порт RS232C компьютера на аппаратном уровне. 0 для него равно логическому "1". Поставьте в инициализации софтверного порта параметр true. Моя строка для инициализации в Arduino Uno. Компьютер под Windows 7x64. Пины 2 и 3. SoftwareSerial mySerial(rxPin, txPin, true); // Пин для RX, TX. Инверсная логика в данных порта И должно быть вам счастье.
Если ТС связывает софтсериал Ардуины с компом через УСБ-Сериал конвертор, то инвертировать программно уровни - нет необходимости. Конвертор это делает сам, - так положено оборудованию по стандарту. Конкретно, мой Силикон Лабс конвертор это делает. Поэтому - совет дельный. Надо проверять.
Как я понял из переписки, пины 12/11 Arduino аппаратно напрямую подключены к порту RS232 компьютера. Конечно надо проверить . Тем более это очень просто, инверсия предусмотрена в самой библиотеке SftwareSerial.
У меня прямо сейчас на столе 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 тыс. строк.
Чисто теоретически проблема может быть в настройках последовательного порта в программе, которой "слушаются" данные. Если что, эти настройки скоростью порта не ограничиваются. Еще там есть количество бит (вроде должно быть 8), тип проверки четности (вроде должно быть выключено) и количество стоповых бит (вроде 1). Конкретные значения этих параметров для SoftwareSerial надо уточнить. Еще есть аппаратный и программный контроль передачи данных. Вроде все должно быть выключено.
спасибо за отклик я уже все перепробовал, но просматривается какая то странная хрень если сообщения начинается с пробели ноля то хотя бы не много есть логики в сообщении
про программный контроль передачи данных я раньше не слышал и не встречался с этим хотя есть большой опыт работы с ком портом
случайно заметил закономерность странную если перед сообщение " 0test" (пробел0test) то в ответ приходит что то более вменяемое ".test."
С типовыми настройками Softserial я столкнулся с тем, что com со стороны компьютера все время принимал ff, когда со стороны Arduino передачи не было. В принимаемый поток постоянно летели ff и эпизодически появлялись кривые байты, которые якобы передавало Arduino. То есть от Arduino в канале был ноль, а com порт понимал, что идут данные, то есть у него были логические единицы. Из этого я сделал вывод, что com порт все время понимал, что идет передача, а на самом деле там ее не было. Инверсия потока от Arduino все исправила.
Программное управление - это использование служебных символов xOn и xOff (0x11/0x13) в канале, которые говорят о начале и конце передачи полезной информации.