Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
VEgor
5 / 3 / 1
Регистрация: 06.01.2014
Сообщений: 7
#1

работа с COM портом - C++

01.03.2010, 12:33. Просмотров 1419. Ответов 1
Метки нет (Все метки)

здравствуйте всем,я в форумах в первие ,и просил бы не судить очень строго. помогите пожалуйста , хочу реализовать приложение работающую с <COM> портом.А для проверки работы приложения коротко замыкаю(к.з.) ножки RD(Вх.) и TD(Вых.) , чтобы WriteFile дала данные а ReadFile считало бы те же данные с того же порта.
сначало создаю диологовое приложение <bbb> а потом например в OnInitDialog()-е создаю COM-порт
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
{
...
 
OVERLAPPED ovr;  
 
hCOM = CreateFileA("COM1", GENERIC_READ |GENERIC_WRITE, // создание синхронного порта
        0,NULL,OPEN_EXISTING,NULL,NULL);
PurgeComm(hCOM,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); ///restart
GetCommState(hCOM,&dcb);
SetCommState(hCOM,&dcb);
SetCommTimeouts(hCOM,&to);
 
SetupComm(hCOM,in,out);
 
//memset(&ovr,0,sizeof(ovr));
//ovr.hEvent =::CreateEventA(NULL,FALSE,FALSE,NULL);
 
PurgeComm(hCOM,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); ///restart
 
int in = 0;
 int out = 0;
 
return TRUE;  // return TRUE  unless you set the focus to a control
}
потом создаю кнопку и в нем создаю поток
...
CbbbDlg* lpMyObject = new CbbbDlg;
AfxBeginThread(MyFunction, lpMyObject,0,0,0,0);
 
а в MyFunction-е
...
UINT MyFunction(LPVOID pParam);
 UINT MyFunction(LPVOID pParam)
{
   CbbbDlg* lpObject = (CbbbDlg*)pParam;
  // CSingleLock FirstLock(&(lpObject->m_Critic)) ; /// что то для синхронизации
 
   lpObject->OnBnClickedButtonWrite();  // в нем WriteFile 
 
return 0;
 
}
 
а в void CbbbDlg::OnBnClickedButtonWrite()
{
   out = 20;  /// например out = 20
     while(1)
       WriteFile(hCOM,(LPCVOID)&out,sizeof(out),&dw,&ovr);
 
}
 
и создаю кнопку для чтения из порта
void CbbbDlg::OnBnClickedButtonReadCom()   ///кнопка
{
 
ReadFile(hCOM , (LPVOID)&in , sizeof(in) , &dw , &ovr);
   m_edit_int = in;  /// m_edit_int это <edit control> где должен отображатся <in>
    UpdateData(FALSE);
}
 
а в конце
void CbbbDlg::OnBnClickedButtonCancel()  /// Cancel
{
PurgeComm(hCOM,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); ///restart
    CloseHandle(hCOM);
 
    OnOK();
}
не какой ошибки не дает а после запуска приложения когда нажимаю кнопку OnBnClickedButtonReadCom() в <edit control>-е ничего не изменяется , результат <0>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2010, 12:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос работа с COM портом (C++):

Общие вопросы по работе с COM-портом - C++
У меня Win7. На системе классический встроенный последовательный порт и Usb преобразователь (FTDI). Если посмотреть параметры порта из...

Работа с COM-портом - C++ Builder
Подскажите, какие компоненты нужны для работы с ком-портами? а именно (хотя бы для начала) отправка шестнадцатиричного кода на порт, к...

Работа с COM портом - C++ Builder
по COM порту через Agilen подключается вольтметр с адресом 1. необходимо &quot;прозвонить&quot; все порты и автоматически сделать рабочим тот, куда...

Работа с Com портом - C++ Builder
Привет всем! У меня собственно такая ситуация, есть bluetooth и телефон Nokia устанавливаю соединение через виртуальный com порт, мне...

Работа с COM портом - C++ Builder
Здравствуйте! В процессе написания программы работы с устройством, подключенным к ПК через преобразователь интерфейсов RS485 - USB,...

Асинхронная работа с COM портом. - C++ Builder
Здравствуйте, Как известно, в Windows с COM портом можно работать в синхронном и асинхронном режиме. Для работы в асинхронном режиме...

1
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
01.03.2010, 21:21 #2
Не могу записчать в com порт из Memo.

Здесь как раз ваш пример.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2010, 21:21
Привет! Вот еще темы с ответами:

Работа с COM портом в Builder C++ 6.0 - C++ Builder
Добрый день, уважаемые форумчане. Никогда не спрашивал совета на форумах, но нужна подсказка. Кто располагает временем, буду очень...

И снова работа с COM портом - C++ Builder
Приветствую всех. Уже измучился и измаялся весь пытаясь написать функцию. Помогите, пожалуйста... Описание задачи Создается...

Работа с COM портом на С++ Builder 6 - C++ Builder
Работаю я с GSM модемами, пишу под них программу на C++ Builder 6. Посылаю в модем, через COM порт соответственно, AT команды (строку...

Работа с COM портом и вообще... - C++ Builder
Друзья спасайте! Для обмена необходимо выдать сигналы DTR = 1(+) и RTS = 0(-). Как это сделать? Я знаю регистры в которые нужно...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.