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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конвертация строк. http://www.cyberforum.ru/cpp/thread100127.html
Существует задача преобразования текста, читаемого из файла в кодировке ANSI в кодировку ASCII, чтобы русский текст нормально отражался в программе, и наоборот, записать русский текст из программы в...
C++ Решить прикладную задачу с помощью циклического вычислительного процесса Помогите решить...Не знаю как... Решить прикладную задачу с помощью циклического вычислительного процесса. Дано натуральное n. Вычислить: "Миниатюры" ... http://www.cyberforum.ru/cpp/thread99903.html
Лаба по созданию класса C++
Задали создать класс, где нужно сделать вот это: 4. Определить в классе селекторы и модификаторы 5. Определить указатель на экземпляр класса Могли бы вы мне пояснить, что такое селекторы и...
Поток ввода и число символов C++
Есть поток, например, cin. Как прочитать число символов, ожидающих ввода в этом потоке? unsigned int n; unsigned int N; unsigned int i; char *c; char *p; ... // какая то строка, помещающая...
C++ Визуализация подчинённого отношения http://www.cyberforum.ru/cpp/thread99549.html
Предположим, есть составное отношение, состоящее из двух простых, одно из которых подчинено другому. задача: сделать класс c++ инкапсулирующий визуализацию такого отношения с группировкой. По дефолту...
C++ реализация foreach в C++, другой синтсксис нашел тут некоторое собрание библиотек на буст орг, там есть такая что содержет реализацию функции... или чего то подобного... foreach, сохожей по синтаксису с foreach из C#. Именно синтаксис её... подробнее

Показать сообщение отдельно
vegor
Сообщений: n/a

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

01.03.2010, 12:33. Просмотров 1390. Ответов 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>
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru