Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > WinAPI
Перезагрузить страницу Работа с Com-портом
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Денис2000 Денис2000 вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.09.2010
По умолчанию Работа с Com-портом - 15.09.2010, 17:32

Здравствуйте.
у меня такая проблема:
пишу программу на QT для работы с Com-портом.

Открываю порт:

hport = CreateFile( (WCHAR*)QString("COM%1").arg(x).utf16(),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL);


if(hport==INVALID_HANDLE_VALUE)
{
ui->sostOn->setStyleSheet("background-color: red");
}
else
{
ui->sostOn->setStyleSheet("background-color: green");
}

загорается зелёная лампочка. Значит порт открыт.

Произвожу настройки:

if(GetCommState(hport, &dcb))
{

dcb.DCBlength = sizeof(DCB);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
}


if(SetCommState(hport, &dcb)) ui->t3->setStyleSheet("background-color: green");

else ui->p->setStyleSheet("background-color: red");


загорается зелёная лампочка. Значит порт настроился.


Произвожу запись в порт:

QByteArray in; ---- настройка переменных в public
DWORD bytes;

in=ui->te->toPlainText().toAscii(); --- ввод инфы через QTextEdit
ui -- указатель на форму QtDesigner


if (WriteFile (hport, in.data(), in.size(), &bytes, NULL))
ui->inP->setStyleSheet("background-color: green");

else ui->inP->setStyleSheet("background-color: red");


загорается КРАСНАЯ лампочка. !!!!!

Может кто-нибудь сказать что я не правтльно делаю???
Заранее спасибо)))
Ответить с цитированием
  (#2 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,281
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 16.09.2010, 10:15

А что при этом говорит GetLastError? И что попадает в bytes?
Ответить с цитированием
  (#3 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,470
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 18.09.2010, 00:14

Можете применить qextserialport, чтобы не изобретать заново.
Ответить с цитированием
  (#4 (permalink)) Старый
mаjestic mаjestic вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.12.2010
По умолчанию 05.12.2010, 00:42

Я думаю беда в указанном флаге FILE_FLAG_OVERLAPPED - здесь вы открываете порт в асинхронном режиме... в этом режиме мне кажется функция всегда возвращает ноль и успешность операции нужно оценивать - основываясь на примитивах синхронизации.... да и просто запись и в следующей же строке - проверка не будут иметь успеха из-за малого интервала ожидания...
Ответить с цитированием
  (#5 (permalink)) Старый
Angel5a Angel5a вне форума
Member
 
Сообщений: 1,213
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.02.2005
По умолчанию 05.12.2010, 20:26

mаjestic сделал верное замечание, кроме того при указание данного флага последний параметр функции должен быть корректный указателем на структуру оверлеппед, что так же может провоцировать ошибки. подробности в мсдн.
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с портом в паскале Нарик Pascal 0 03.11.2010 23:12
Работа с последовательным портом myshansun Сетевое программирование 8 15.08.2009 00:26
Работа с USB портом в Builder 6 SafSerg C++ Builder 16 29.09.2008 15:30
Работа с COM-портом Dynamite Pascal 19 30.12.2007 12:02
Работа с LPT портом в режиме DMA CBR_R Assembler 7 12.10.2006 20:02
Работа с Com-портом Chelentano Железо. Написание драйверов 5 01.03.2006 20:09
Работа с параллельным портом Poker Visual C++ 10 20.10.2005 10:29
Работа с ком-портом matvey1981 С/С++ 1 20.09.2005 17:09
Работа с СОМ портом Supermario C++ Builder 8 07.07.2005 22:20
Работа с LPT портом написание кода asterix C++ Builder 1 15.03.2004 16:41
Работа с LPT-портом sag C++ Builder 1 05.08.2003 01:49
Работа с LPT портом подключение его в программный код Anonymous C++ Builder 4 15.06.2003 03:11



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов