|
5 / 5 / 2
Регистрация: 02.10.2013
Сообщений: 147
|
|||||||||||
COM - порт, при приеме с частотой 16Гц процесс чтения не прерывается13.05.2024, 10:03. Показов 1509. Ответов 19
Метки нет (Все метки)
При чтении с частотой 8Гц все проходит на ура, скорость порта 9600. увеличение скорости порта не меняет результат.
По логике вещей должен был срабатывать IDLE в железе, но возможно винда на это все плевала с высокой колокольни. Прилагаю настройки таймаутов, но они по идеи не причем.
0
|
|||||||||||
| 13.05.2024, 10:03 | |
|
Ответы с готовыми решениями:
19
Программа зависает при приеме сообщения через com порт ReadFile() возвращает 0 считанных байт через COM-порт при приёме пакета ненулевой длины Процесс распаковки прерывается |
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
|||||||
| 15.05.2024, 06:35 | |||||||
|
Смотрите. У вас с порта лезет не произвольный поток байт, а вполне "осмысленные" сообщения, имеющие определенный размер. Ну так и вычитывайте их с разбором "на лету" Вот пример моего кода. Тут идет один символ команды, и 8 байт данных (пробелы игнорируем)
1
|
|||||||
|
5 / 5 / 2
Регистрация: 02.10.2013
Сообщений: 147
|
||
| 15.05.2024, 14:47 [ТС] | ||
|
Второй способ возможен, но вот беда у меня открывается два потока, читаю с 1 порта скажем 100 значений( и мне нужно знать, что именно 100 значений я прочитал) пока эти значения считываются, со второго порта читаются другие значения( а скорость там намного ниже). Как только первый поток закончил, второй прерывает работу...
0
|
||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
|
| 15.05.2024, 16:10 | |
|
Ну значения-то чем-то разделяются... вот и парсите по разделителю. Если нет - то это какой-то неправильный прибор...
1
|
|
|
5 / 5 / 2
Регистрация: 02.10.2013
Сообщений: 147
|
|
| 15.05.2024, 17:55 [ТС] | |
|
Сейчас я так и делаю, парсит по разделителю, после того как закончился прием. А если прием не закончился то как парсить то? Если как Вы предлагаете, указывать количество байт на прием допустим 10, а на самом деле их будет 12 , то значение при разборе строки совсем другое...
Меня интересовало другое, нет ли способа принимать данные по com - порту до тех пор пока не наступит событие IDLE, как это сделано в микроконтроллерах
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 15.05.2024, 23:20 | ||
|
В любом случае, вам все правильно выше говорят - именно таки надо делать и никак иначе (точнее иначе просто получите настабильное ПО, которое ломается, стоит лишь чуть-чуть изменить условия).
2
|
||
|
5 / 5 / 2
Регистрация: 02.10.2013
Сообщений: 147
|
|
| 16.05.2024, 13:05 [ТС] | |
|
DrOffset, код который предложил Azathtot, не сразу понял. Конечно можно висеть в цикле while и принимать по одному символу пока не дойдешь до конца строки... Но я надеялся на какое-нибудь более элегантное решение, нежели валятся в цикле.
Всем спасибо.
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 16.05.2024, 13:37 | |
|
dj_oni, не, как раз принимать по одному символу совсем не обязательно. Читаете сразу буфер и отдаёте автомату его.
0
|
|
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
||
| 16.05.2024, 13:59 | ||
|
dj_oni,
Тут код под конкретную задачу был. Но я сам же выше написал, что можно читать буферами и разбирать их, складывая "остатки" в голову буфера Добавлено через 51 секунду
0
|
||
|
5 / 5 / 2
Регистрация: 02.10.2013
Сообщений: 147
|
||
| 16.05.2024, 14:16 [ТС] | ||
0
|
||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
||
| 16.05.2024, 16:24 | ||
|
0
|
||
|
5 / 5 / 2
Регистрация: 02.10.2013
Сообщений: 147
|
||||||||||||||||
| 17.05.2024, 12:51 [ТС] | ||||||||||||||||
|
Не хотелось открывать новую тему но собственно в те же ворота
при скорости 115200 и отправке команды в устройство
из софта с костылями работает только так
Из программы отправляю в терминал, строка приходит целиком и не битая...
0
|
||||||||||||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||
| 17.05.2024, 13:11 | |||
|
0
|
|||
|
5 / 5 / 2
Регистрация: 02.10.2013
Сообщений: 147
|
||
| 17.05.2024, 16:43 [ТС] | ||
|
DrOffset, Устройство конечное и его код я изменить не могу. Когда устройство принимает команду, оно возвращает принятую команду, по сути дела echo.
Мне кажется что тут все таки с настройками что то не то, у терминала проблем с приемом нет, команда проходит на ура.... а на устройстве какие проблемы. Отправлять по одному байту с ожиданием .... это просто нечто Добавлено через 2 часа 46 минут Не знаю что в приборе наворотили, но хохма вот в чем, есть такая программа Terminal 16 если с нее отправлять в прибор (с учетом экранируемых символов) отправляется 10 байт и команда проходит на ура. Есть программа Uartassist (от китайских братьев), отправляя команду из нее получаю такую же чудную потерю данных, хотя написано что отправлено тоже 10 байт. Идей просто никаких
0
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||
| 17.05.2024, 17:31 | |||
|
Я к тому, что если что-то подобное делать самому, то также, а не хардкодить тайминги.
0
|
|||
|
1186 / 468 / 68
Регистрация: 22.09.2023
Сообщений: 1,408
|
||
| 17.05.2024, 19:17 | ||
|
0
|
||
|
5 / 5 / 2
Регистрация: 02.10.2013
Сообщений: 147
|
|||
| 20.05.2024, 08:36 [ТС] | |||
|
0
|
|||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 20.05.2024, 09:02 | |
|
dj_oni, вероятно вы просто что-то не так делаете.
0
|
|
|
1186 / 468 / 68
Регистрация: 22.09.2023
Сообщений: 1,408
|
||
| 20.05.2024, 10:28 | ||
|
0
|
||
|
5 / 5 / 2
Регистрация: 02.10.2013
Сообщений: 147
|
|
| 21.05.2024, 15:16 [ТС] | |
|
В общем вся проблема в приборе, там два микроконтроллера, один с внешним миром, второй на внутреннем у первого скорость 115200 у второго 9600и обращение идет именно к внутреннему, который очень занятой и просто не успевает обработать более 5 символов (( так что тут хоть с тремя анализаторами лезь а без костылей не справится )))
0
|
|
| 21.05.2024, 15:16 | |
|
Помогаю со студенческими работами здесь
20
Почему процесс прерывается? Почему прерывается работа программы после чтения их файла? Как изменятся скорости записи и чтения при использовании карты памяти через USB порт? Процесс запуска Windows по истечении 2-х секунд прерывается и начинается перезагрузка Процесс установки игр внезапно прерывается без сообщения об ошибке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|