Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164

Последовательный порт в основном потоке

25.11.2024, 11:51. Показов 3960. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Приведите пожалуйста пример программы, в которой взаимодействие с COM-портом происходит в одном потоке с формой. В качестве примера достаточно организовать ожидание получения любого количества байт из порта. При этом требуется соблюдение событийно-ориентированного принципа. Предполагаю, что такое возможно только при использовании WinAPI-функции MsgWaitForMultipleObjects (MsgWaitForMultipleObjectsEx).
Спасибо. )
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2024, 11:51
Ответы с готовыми решениями:

GDI+. Почему в отдельном потоке картинки сохраняются как белые прямоугольники, а в основном потоке - всё Ок?
Всем привет, делаю функцию уменьшения картинок при помощи библиотеки GDI+, в отдельном потоке происходит уменьшение картинки и её...

Не рисуется форма в основном потоке
Всем привет. Есть долгая процедура - рекурсивно собирает все из каталогов FTP сервера. ListAllFiles Пытаюсь поставить окно...

Почему в Windows-11 программа не отправляет запросы в последовательный порт
Программа работает в Windows-7 и в Windows-10, как в 32-х, так и в 64-х разрядных версиях. Для проверки использую Virtual Serial Port...

23
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
27.11.2024, 19:22  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Beltar Посмотреть сообщение
Я эту функцию не использовал.
Спасибо за ответ. В таком случае предполагаю что Вы помочь не сможете. Но это не означает что Ваше участие в данной теме бесполезно. )
Цитата Сообщение от Beltar Посмотреть сообщение
Вам же никто не мешает изучить исходники того же CPort.
Я достаточно хорошо знаком с данным компонентом и заглядывал в его внутренности.
Цитата Сообщение от Beltar Посмотреть сообщение
Уж тот, кто написал библиотеку на которой до сих пор весь дельфовый мир сидит, должен понимать, как сделать работу с портом правильнее всего.
Звучит логично. Но думаю это как раз тот случай, когда говорят об исключении из правил. Данный компонент также использует дополнительные потоки (по одному на каждый порт). Если в дальнейшем мне удастся решить данную задачу, то это будет являться подтверждением моего мнения.
Цитата Сообщение от Beltar Посмотреть сообщение
Компьютеры для людей, а не люди для компьютеров.
Это здесь не при чём. Если не заставлять систему "справляться с большим числом потоков" (ненужных), то от этого жизнь пользователя никак не ухудшится. И при этом у программиста будет меньше риск допустить ошибку.
0
 Аватар для Beltar
835 / 449 / 39
Регистрация: 05.05.2022
Сообщений: 3,167
27.11.2024, 19:31
Вот когда передо мной встала задача переписывать на фиг систему учета выработки цеха, я, во избежание, выкинул свой колхоз с ненадежностью которого я в один момент до того столкнулся, и поставил CPort.

Собственно для этого библиотеки и придумали, чтобы повторно использовать уже отлаженное. Более того, человечество до сих пор использует Фортран, потому что на нем реализована и, главное, отлажена туева хуча разного матана. И выгоднее компилятор Фортрана оптимизировать, чем это все на C++ переписывать.

И это тоже компьютер для людей, программисты тоже люди. В противном случае до сих пор бы на Ассемблере писали.
0
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
27.11.2024, 19:59  [ТС]
Beltar, думаю будет глупо не согласиться с Вашим последним сообщением. )
Но при этом, Вы же не будете отрицать, что нас окружает уж очень много совершенно неоптимизированного софта? И речь конечно не только о каких-то там потоках. Лично я не хотел бы быть автором таких программ. )

Добавлено через 14 минут
Beltar, и кстати заметьте: в Delphi до сих пор нет стандартного компонента по работе с COM-портом. Как думаете, почему? Не потому ли что авторы Delphi считают взаимодействие с портом достаточно простой задачей, которая сводится всего к двум-трём вызовам WinAPI-функций, поведение которых вполне понятно? То есть вполне возможно, что следует рассматривать данный компонент как что-то излишнее. Но, на цвет и вкус, как говорится... )
0
0 / 0 / 0
Регистрация: 27.11.2022
Сообщений: 2
15.04.2025, 10:13
MsgWaitForMultipleObjects
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.04.2025, 10:13
Помогаю со студенческими работами здесь

Запуск метода в основном потоке из другого
Есть код: class AnotherClass { public EventWaitHandle wh = new AutoResetEvent(false); private Int32...

Реализация своего таймера в основном потоке
Всем добрый день. Возникла такая задача, нужно реализовать таймер, но при этом не использовать многопоточность. То есть нужно сделать...

Как реализовать генерацию события в основном потоке?
Всем здравствуйте! У меня есть некий класс, в котором в отдельном потоке выполняется циклическая операция, после каждой с итераций...

Нотификация объекта в основном потоке из дочернего потока
Проблема такая: имеется объект типа А в котором создается объект типа Б (вложенный). В классе Б есть сокет по которому передаются или...

Получение значения переменного из асинхронного метода в основном потоке
Всем привет! Есть программа на сервере в нем я получаю данные с оборудования(допустим бытовой счётчик электроэнергии) и отправляю её...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Гайд, как ворваться в вайб-кодинг в мае 2026
Noname2331 17.05.2026
Простите за получившееся полотно текста, я даже не знаю, как его разбить на главы. Тут, что называется, ни добавить ни убавить, одна сцена одним дублем. На моих глазах недавно случилось чудо. Как. . .
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru