Форум программистов, компьютерный форум CyberForum.ru

C++

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

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

01.03.2010, 12:33. Просмотров 1341. Ответов 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>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2010, 12:33     работа с COM портом
Посмотрите здесь:

Работа с COM портом и вообще... C++ Builder
Работа с Com портом C++ Builder
C++ Работа с COM - портом
Работа с COM портом
C++ Builder Работа с COM-портом
C++ Builder Работа с COM портом
C++ Builder Асинхронная работа с COM портом.
Работа с COM портом
C++ Работа с COM портом
Работа с COM портом C++ Builder
C++ Работа с COM-портом
Работа с COM портом C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
01.03.2010, 21:21     работа с COM портом #2
Не могу записчать в com порт из Memo.

Здесь как раз ваш пример.
Yandex
Объявления
01.03.2010, 21:21     работа с COM портом
Ответ Создать тему
Опции темы

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