7 / 6 / 3
Регистрация: 03.12.2020
Сообщений: 301
|
||||||||||||||||
Почему пропадают/искажаются сообщения SerialPort?06.03.2025, 17:09. Показов 758. Ответов 11
Метки serialport (Все метки)
Программа должна обмениваться данными с несколькими платами Arduino(сейчас подключаю 3 шт., планируется больше, но проблемы появляются и ни одной шт., и на двух…).
В тестовом режиме режиме я отправляю “99/0/0/0” – плата считывает это сообщение и отправляет обратно. В мониторе порта программы Arduino все работает четко и стабильно, без каких-либо сбоев (во всяком случае, мне не удалось такое обнаружить). Но вот когда подключаю написанную программу – начинаются проблемы: часто вместо отправленного сообщения программа получает не отображаемые символы, в кодировке Asc номера: 13, 10. Иногда программа вообще не получает никакого ответа. В программе использованы библиотеки:
0
|
06.03.2025, 17:09 | |
Ответы с готовыми решениями:
11
Visual studio 2019. Элемент serialport, почему нет метода getportnames? Почему пропадают элементы в конструкторе формы? |
07.03.2025, 09:15 | ||||||
У вас скорее всего это из-за блокировки UI потока.
Например в этом участке кода поток отпускается совсем не надолго:
Не по теме: Код настолько (даже не знаю как назвать) линейный что ли, что даже те объекты, вроде СОМ-порта, которые пытаются работать в события, то ломаются об блокировку. filat18, вам реально надо изменить код под паттерн наблюдатель. Добавлено через 5 минут Вместо блокировки потока, вроде той, на которую я указал, запускайте таймер ожидания ответа. Также измените название, а лучше разделите функционал метода ComsRead. Дело в том, что этот метод не только читает, что можно подумать на основании его названия, но и создаёт порты, пишет в них, обрабатывает нештатные ситуации. Короче, метод делает много чего и это много надо декомпозировать.
0
|
![]() ![]() |
|
07.03.2025, 12:25 | |
У вас способ обмена запрос-ответ?
0
|
7 / 6 / 3
Регистрация: 03.12.2020
Сообщений: 301
|
||||||
07.03.2025, 12:36 [ТС] | ||||||
Да.
Я вот хэлп еще раз почитал... Вроде получилось пример кода применить:
Пробовал добавить условие: If _serialPort.IsOpen = True Then, но без результатно...
0
|
![]() ![]() |
|
10.03.2025, 08:34 | |
Для запрос-ответ не надо. Лучше write и read с правильными таймаутами.
0
|
7 / 6 / 3
Регистрация: 03.12.2020
Сообщений: 301
|
|
10.03.2025, 09:48 [ТС] | |
Да я знаю и не против бы, но как Вы выше правильно отметили: прямолинейность кода не позволяет ему планомерно (без искажений и потерь) выдавать ответы в основной поток.
Очень интересное замечание! Как определить какие таймауты правильные?
0
|
![]() ![]() |
|
10.03.2025, 09:52 | |
И есть время таймаута посылки. Например, равное времени передачи 3-5 байт на используемой скорости. Если оно истекло, то пакет завершён.
0
|
![]() ![]() |
||||||
10.03.2025, 16:24 | ||||||
0
|
10.03.2025, 16:24 | ||||||
Помогаю со студенческими работами здесь
12
Почему пропадают созданные ячейки таблицы? Serialport.write и serialport.basestream.write - в чем разница C# SerialPort Неполный прием сообщений Почему не приходит сообщение группе SignalR? Почему в отправляемом почтовом сообщении появляются вопросики? Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. )
В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
|
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
|
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
|
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
|
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
|
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
|
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
|
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
|
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
|
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
|