|
9 / 1 / 0
Регистрация: 06.08.2018
Сообщений: 172
|
|
Получение данные с последовательного порта. SerialDataReceivedEventHandler24.08.2020, 15:35. Показов 1546. Ответов 3
Метки нет (Все метки)
Уважаемые, Форумчане. Суть вопроса:
есть 2 формы. Из первой во второй я передаю serialport. Даже если я закрою соединение и открою его занового у меня не работает: SerialDataReceivedEventHandler. Что мне хотелось бы узнать: 1). Есть ли способ получить данные с COM-порта не отсылая команду на сам порт. То есть может ли устройство первое начать связь с моим ПК. 2). Как сделать так чтобы наконец эта хрень заработала SerialDataReceivedEventHandler. Мне нужно всего лишь чтобы эта ж...а реагировала на нажатие на кнопку на устройстве, мне не нужны ни данные ни что то еще, мне требуется только знать что да нажатие есть. Если можете дайте пример. Хрень что описана на пабликах по программированию типа использовать white, делегаты и invoke я уже пробовал реакции ноль. При нажатии на кнопку на устройстве ничего не происходит, то есть serialport.DataReceived += SerialDataReceivedEventHandler(DataRecei ved); не выполняется, хотя порт открыт, и при выполнении кода из формы то есть при нажатии на кнопку внутри программы все работает. И местами Open и DataReceived я менял, это также не дает результата. И еще раз уточню - мне не нужно читать данные, мне нужно просто знать что они пришли. Естественно мне требуется чтобы данное событие отслеживалось асинхронно, то есть не мешая работе основной формы, но при этом чтобы возвращало bool если пришли данные.
0
|
|
| 24.08.2020, 15:35 | |
|
Ответы с готовыми решениями:
3
20-40 выключателей в данные для последовательного порта
приемник последовательного порта |
|
|
|
| 24.08.2020, 23:05 | |
|
Наконец-то вы решили про событие почитать и попробовать. Я считаю - более правильный путь.
Я не верю что ничего не приходит. Вы делали тест на простом коде? без всех этих ваших кнопок и циклов? Просто запуск формы, событие и ожидание. Если ваше внешнее устройство отправляет данные, то они будут приходить. Или вы что-то не то делаете. Но это ваше желание - знать только "bool" - это всё равно "3 шага назад". Прочитать данные чтобы узнать были ли данные... и снова отправить запрос. Добавлено через 5 минут Пример простого теста: SerialPort.DataReceived Event В интернете ещё обсуждают про правильную последовательность события и открытия. Но подтверждённых проблем вроде нет. Есть ещё установленные параметры порта и т.п. Вообщем есть что изучить или проверить.
0
|
|
|
9 / 1 / 0
Регистрация: 06.08.2018
Сообщений: 172
|
|
| 25.08.2020, 02:08 [ТС] | |
|
Такое я уже делал и изучил вопрос. Данные попадают в обработчик только когда я сам в форме отправляю запрос на получение данных. При отправке с устройства без участия формы не происходит ничего. Есть вероятность что у меня трудности с асинхронным и методами и потоками. Возможно данный обработчик необходимо перевести в другой поток. В тоже время. Ваш код я дополнил он стал работать
Проблема там оказалось в банальном хотя да не спал я очень долго прежде чем смог найти ошибку. Это целая повесть о моем изучении stream в итоге необходимо было увеличить просто напросто время чтения таймаут порта и нужно было сделать дополнительно задержку через Thread чтобы порт сам скинул соединение и продолжил бы чтение. То есть та форма которую Вы предоставили работает. Однако конечно я её дополнил. Но в тоже время для получения данных если данные отправляются с устройства без команд со стороны ПК ничего не происходит хотя сам терминал указывает что данные он отправил. Потеря также в потоке как я считаю но не могу отследить даже с отладчик ом где. Так как event не происходит как следствие обходит мимо точку останова Добавлено через 2 минуты Может у вас есть не то чтобы набросок а просто показать как я мог бы вызвать чтение в отдельном потоке Task. Добавлено через 1 минуту У меня просто вопрос такой. Если я вызову чтение асинхронно то выполнитсч ли команда что вы указывали для закрытия формы. Я конечно понимаю что её нужно реализовать через BeginInvoke однако как собрать воедино также не знаю Добавлено через 55 минут Тот метод что Вы указали для асинхронно го чтения я знаю что он стандартный я его встречал на просторах инета. Единственное что я думаю что ему требуется добавить IAsyncResult ar имею ввиду обработать его однако пока не понял как. Точнее не научился тому как это сделать. Если сможете подсказать как было бы круто. А так все же думаю что верно будет использовать 2 потока основной и через Task но могу ошибаться времени просто задержка уже большая Добавлено через 2 минуты Информации просто крайне мало для именно таких задач. Особенно передача потоков basestream для последовательно го порта, такое я не встречал даже на англоязычных форумах Добавлено через 2 минуты Короче просто пока бьюсь с тем как соединить все вместе Task, DataReceived или его аналог через делегат и BeginInvoke Добавлено через 13 минут Что буду делать. По логике я думаю о следующем. 1. Создаю поток 2. Указываю внутри как вызываемый метод тот который вы указали 3. После внутри метода обрабатываю IAsyncResult через вызов его как делегата в BeginInvoke Предположим все отработает правильно. Теперь меня по той же логике ну размышлению интересует как закрыть поток. Так как нет гарантии что при закрытии формы он прекратит свое существование. Я попробую то что предположил просто надо это сделать правильно хахах
0
|
|
|
9 / 1 / 0
Регистрация: 06.08.2018
Сообщений: 172
|
|
| 25.08.2020, 10:53 [ТС] | |
|
И еще хотелось бы уточнить, чтобы Вы понимали, трудность первая после того, как Вы показали форму и ее возможное решение состояло в потере потоков. Тут я думаю аналогичное, однако получалось так:
1. в случае передачи в другую форму было что мы первую половину передаем рабочую, а возвращаем нерабочую. 2. Теперь надо понимать что в случае basestream мы будем передавать рабочую, и обработать нам также требуется рабочую часть Добавлено через 1 час 15 минут А по поводу манулов всяких я их изучил ахах. В том и суть что я это не только читал но и пробовал а ещё даже понял. Однако пока вот результата нет
0
|
|
| 25.08.2020, 10:53 | |
|
Помогаю со студенческими работами здесь
4
Программирование последовательного порта Программирование последовательного порта.
Мониторинг последовательного порта Распределение данных с последовательного порта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|