Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> The Com Ports again, Способы и методы 
:(
    Опции темы
Lex/TU
Дата 18.3.2005, 00:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Никогда не работал с асинхронным режимом 232 порта помогите smile
Какие функции использовать и как этот режим инициализировать ???
  Вверх
np9mi7
Дата 1.4.2005, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: нет
Всего: 10



Блин, чувак мне это нужно. Слушай месяц прошел. Разобрался???


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
_hunter
Дата 1.4.2005, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



работать так же (CreateFile / ReadFile ) а для инициализации нужно в CreateFile передать структуру overlapped
+ все єто уже не раз обсуждалось...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
np9mi7
  Дата 2.4.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: нет
Всего: 10



Может есть какая стороняя бесплатная библиотека для работы с com портом? Вы ничего не использовали?

А обязательно работать через create file может можно какнибудь подругому?

Это сообщение отредактировал(а) np9mi7 - 2.4.2005, 14:17


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Nastya
Дата 2.4.2005, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 3
Всего: 44



Я все делаю средставми winApi.
Как всегда CreateFile,, только устанавливаешь флаг FILE_FLAG_OVERLAPPED - дескать работать буду асинхронно.
Потом при чтении/записи передаешь в последнем параметре указатель наструктуру OVERLAPPED.
В ней должен быть уже создан event (есть там такое поле).
Так вот. в этом случае при чтении/записи функция не будт ждать когда действие завершитс, ты можешь рабоать дальше, а вот когда это произойдет, тогда у тебя event будет системой выставлен.
вобщем чаще всего это ждут при помощи WaitForSingleObject.
Но в чем суть такого подхода.
Тут в параллельном потоке можно ждать от порта других сообщений.
при помощи функции WaitCommEvent.
Вобщем, вот тебе MSDN
ms-help://MS.MSDNQTR.2003APR.1033/dnfiles/html/msdn_serial.htm
Вот тебе он же в переводеsmile
http://www.bcbdev.ru/msdn/hh/commun_6g37.htm
наслаждайся.
Если чего надо спрашивай



--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
knave
Дата 4.4.2005, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: нет
Всего: 5



в воскресень посылал парню одному пример работы с ком портом. Могу и тебе послать (елси это конечно был не ты). Еслинет от могу итебе выслать. Вообще на эту тему есть приеры тут codeproject.com


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
np9mi7
Дата 4.4.2005, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: нет
Всего: 10



Это был не я... smile
Многопоточные примеры?


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
knave
Дата 5.4.2005, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: нет
Всего: 5



Прием данных с порта в нити.
А более одного пиложеия или одной нити с ком портом работать не получится на прямую. Если тебе надо раздавать данные из ком порта нескольким программам или нитям, тогда надо мутить свой серер ком порта. Котрый будет хранить данные которые пришли, и отдавать их тому тко попросит. Может конечно у MS такой уже сделан, я с этим не разбирался.

Когда производится чтение с порта, он очишается.

Это сообщение отредактировал(а) knave - 5.4.2005, 13:06


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
WM_SASHA
Дата 7.8.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.4.2007
Где: Узбекистан г.Ташк ент

Репутация: нет
Всего: нет



привет всем...а как подать напряжение на CTS(готовность к передаче)? например мне хочеться чтобы был подсчёт замыканий на ком порте.если я правильно понял замыкать нужно жилы  CTS и DSR...кстати когда я получаю событие EV_DSR ,сбрасывается ли CTS на единицу?нужно чтобы напряжение подавалось всегда,от ком порта больше и не требуется,кроме как сообщать о замыкании CTS и DSR.
PM MAIL   Вверх
takedo
Дата 10.8.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: -1
Всего: 3



WM_SASHA, походу в виндовсе со стандартным драйвером никак smile 


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
WM_SASHA
Дата 10.8.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.4.2007
Где: Узбекистан г.Ташк ент

Репутация: нет
Всего: нет



Код


   hCom = CreateFile( TEXT("\\\\.\\COM1"),
    GENERIC_READ | GENERIC_WRITE,
    0,    // exclusive access 
    NULL, // default security attributes 
    OPEN_EXISTING,
    FILE_FLAG_NO_BUFFERING,
    NULL
    );
    

    GetCommState(hCom, &m_dcb);

    m_dcb.BaudRate = 9600;
    m_dcb.ByteSize = 8;
    m_dcb.Parity = NOPARITY;
    m_dcb.StopBits = ONESTOPBIT;
    m_dcb.fAbortOnError = TRUE;
    m_dcb.fRtsControl=RTS_CONTROL_ENABLE;

    SetCommState(hCom, &m_dcb);


                 SetCommMask(hCom, EV_DSR);    // 


    OVERLAPPED o->hEvent = CreateEvent(
    NULL,   // default security attributes 
    FALSE,  // auto reset event 
    FALSE,  // not signaled 
    NULL    // no name 
    );
             EscapeCommFunction(hCom,SETRTS)  // или CLRRTS......этой функцией я пытался установить RTS в ноль(т.е 10 вольт).наверно я 
                                                                         //неправильно понял перевод этой функции
        
    while(!pparams->bKill)    // не важно
    {
        if (WaitCommEvent(hCom, &dwEvtMask, &o)) 
    
        if (dwEvtMask & EV_DSR) 
        {
                                   SetDlgItemText(pparams->hwnd,IDC_EDIT,(LPCTSTR)L"Test OK");
        }
                }




думал что так можно.....однако отсюда вылез вопрос: почему WaitCommEvent(hCom, &dwEvtMask, &o)) сразу срабатывает?потому что 
нет записи и чтения в порт?....пробовал вставить функции записи или чтения перед циклом, и после создания события в структуре OVERLAPPED.........всёравно проскакивает..........и как написать правильный цикл ожидания события,чтобы загрузка процессора не была высокой.....Sleep() не помогает...не помогает он и в другой программе...несколько потоков делают вычисления..ставлю 1000 милисекунд....всёравно загрузка процессора 100 процентная.
может чтение и запись выделить в другой поток?а начинать чтение или запись в цикле перед WaitCommEvent(hCom, &dwEvtMask, &o)), используя функцию посылающая строку для чтения или записи в другой поток, и сразу же возвращающую управление в вызывающий поток?.....ой намутил я smile 
PM MAIL   Вверх
ksili
Дата 11.8.2007, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Цитата(WM_SASHA @  11.8.2007,  03:24 Найти цитируемый пост)
почему WaitCommEvent(hCom, &dwEvtMask, &o)) сразу срабатывает?

Попробуй перед циклом сбросить событие : ResetEvent(o.hEvent);

Это сообщение отредактировал(а) ksili - 11.8.2007, 06:37


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0962 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.