реклама на сайте
подробности

 
 
> Чтение данных из ком-порта в WINXP, избитая тема, но решения для Builder 6 нигде не нашел
skopus
сообщение May 4 2006, 11:27
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Задача стоит такая:
в устройство отправляется последовательность байт - команда на исполнение. После этого компьютер ждет кода ответа от устройства. Необходимо сделалать так, чтобы пока он ждет, можно было отправить код экстренной остановки, нажав на программную кнопку и, соответственно перестать ждать ответа.

Application->ProcessMessages(); не помогает :(
как же это делается?

нашел несколько статей по поводу того как это делается через потоки на Visual C++ 6.0
но на практике код не переносится, да и в многопоточном программировании у меня никакого опыта нет.
Всякие хитрые компоненты применять запрещено.

Помогите пожалуйста! Скоро уже защита :((

На микроконтроллере я бы сделал отправку байта по внешнему прерыванию от кнопки. Но на программном уровне в виндоус так похоже нельзя, да?

Сообщение отредактировал skopus - May 4 2006, 11:31
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aleks17
сообщение May 4 2006, 12:24
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 238
Регистрация: 17-01-05
Из: Новосибирск
Пользователь №: 2 003



Я правда в Билдере нифига не понимаю - на Visual C++ пишу, но думаю принципы те же:

Вариант 1) Многопоточное приложение.

Вариант 2) Открываешь порт для асинхронных операций (FILE_FLAG_OVERLAPPED по-моему)

и организуешь процедуру таймера, внутри которой (а не в процедуре) проверяешь на получение данных.
Go to the top of the page
 
+Quote Post
skopus
сообщение May 4 2006, 12:33
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Цитата(Aleks17 @ May 4 2006, 16:24) *
Я правда в Билдере нифига не понимаю - на Visual C++ пишу, но думаю принципы те же:

Вариант 1) Многопоточное приложение.

Вариант 2) Открываешь порт для асинхронных операций (FILE_FLAG_OVERLAPPED по-моему)

и организуешь процедуру таймера, внутри которой (а не в процедуре) проверяешь на получение данных.


а как тогда организовать многопоточное приложение? сам алгоритм?
1. Отправил строку в порт
2. Создал поток для чтения
а в первом потоке будет событие OnClick отрабатываться?

Цитата(_artem_ @ May 4 2006, 16:23) *
rezim overlapped IO ne podxodit ?


возможно и подоходит. Но в Msdn как обычно примеры для Visual C++
пробовал как-то на билдер перенести.. нудачно. Ща посмотрю еще раз
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 19:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016