|
2 / 2 / 0
Регистрация: 29.09.2015
Сообщений: 29
|
||||||
COM-порт принимает не все пакеты21.10.2015, 10:19. Показов 1886. Ответов 12
Метки нет (Все метки)
И так, у меня есть программа которая работает с com-портом. Но проблема в том, что не всегда он получает все пакеты(где-то что-то теряет). Видимо нужно добавить Timer(). Но честно с ним не работал. Может подскажете как его реализовывать. Точнее где он нужен в чтении пакета.
0
|
||||||
| 21.10.2015, 10:19 | |
|
Ответы с готовыми решениями:
12
Сервер принимает пакеты если клиент указывает неверный порт получателя UDP. Как посылать пакеты из программки на все машины сети в определенный порт? Не принимает пакеты |
|
|
||
| 21.10.2015, 10:30 | ||
|
Если да, то просто в цикле крутить проверку на количество байт в буфере порта, как накопилось сколько должно, согласно протоколу обмена, то запускать чтение данных.
0
|
||
|
2 / 2 / 0
Регистрация: 29.09.2015
Сообщений: 29
|
||||||
| 21.10.2015, 10:35 [ТС] | ||||||
|
insite2012, это я внутри Com.Read() делаю
0
|
||||||
|
|
||
| 21.10.2015, 10:43 | ||
|
2. Слишком у вас как-то сложно, думаю можно было проще. 3. Я спрашивал, известен ли протокол. Так какой ответ?
0
|
||
|
2 / 2 / 0
Регистрация: 29.09.2015
Сообщений: 29
|
|
| 21.10.2015, 10:47 [ТС] | |
|
insite2012, ну конечно известен, я же Вам в куске кода показал, что читаю побайтово -сначала 4 байта адрес устройства, потом длину данных, потом сами данные и контрольную сумму. если что-то не так, попадает в эксепшн.
0
|
|
|
|
||
| 21.10.2015, 10:53 | ||
|
0
|
||
|
2 / 2 / 0
Регистрация: 29.09.2015
Сообщений: 29
|
|
| 21.10.2015, 10:53 [ТС] | |
|
insite2012, я наверно неправильно сформировал вопрос. Дело в том что мне кажется ответ с компорта приходит позже чем я его начинаю читать и поэтому я данные не получаю. Скорее всего надо чтоб программа немного подождала после отправки запроса. Вот я и думаю как это сделать
0
|
|
|
|
|||||||
| 21.10.2015, 11:04 | |||||||
|
Добавлено через 8 минут inavalny, в самом простом случае, без обработки ошибок и не используя потоки (хотя это все не сложно), метод чтения я бы организовал примерно так.
0
|
|||||||
|
2 / 2 / 0
Регистрация: 29.09.2015
Сообщений: 29
|
|
| 21.10.2015, 11:17 [ТС] | |
|
insite2012, То есть Вы предлагаете перед чтением с компорта проверить равен ли port.BytesToRead с количеством байтов для данного ответа на запрос..но запросы сами по себе разные и у каждого свой readCount. То есть предлагаете прописать для каждого вида запроса еще и его длину? Допустим вариантов запросов около сотни. Мне для каждого прописывать readCount??
0
|
|
|
|
|||
| 21.10.2015, 11:23 | |||
|
Для упрощения могу предложить такую организацию: делаете словарь, в который и заносите все пары размер чтения - сам запрос (или еще как-то организовать, подобным образом). Плюсы: вы будете читать именно столько, сколько следует при этом варианте запроса, а не неизвестное количество, ну и если понадобится добавить запрос (а он может использоваться не в одном метода, а в нескольких, так ведь?), то придется всего добавить одну запись в словарь.
0
|
|||
|
2 / 2 / 0
Регистрация: 29.09.2015
Сообщений: 29
|
||||||
| 21.10.2015, 13:05 [ТС] | ||||||
|
Проблема решена. Поставил просто побольше миллисекунд поспать и все заработало
0
|
||||||
|
|
||
| 21.10.2015, 14:27 | ||
|
0
|
||
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||
| 21.10.2015, 14:46 | ||
|
Протокол похож на ModBus RTU. Как правило при организации обмена с использованием этого протокола добавляется т.н. таймаут ответа. Запрос послали, начинаем принимать данные и запускаем таймер, всё, что получаем в порт - записываем в буфер пока не произойдёт одно из условий: длинна полученных данных не сравняется с ожидаемой, выйдёт время таймаута. Затем проверка контрольной суммы и обработка данных.
0
|
||
| 21.10.2015, 14:46 | |
|
Помогаю со студенческими работами здесь
13
Recvfrom() не принимает пакеты Встроенная сеть не принимает пакеты Сетевая принимает но не отправляет пакеты Подключение отправляет пакеты, но не принимает QUdpSocket не принимает пакеты на windows Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|