![]() |
|
|
![]()
|
|
| coproral |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 6 Регистрация: 21.12.2009 Репутация: нет Всего: нет |
Всем здравствуйте! Вот такая история: передаю данные с микроконтроллера на компьютер через ком порт, в гиппер терминале все приходит, все что я хотел - я вижу. Теперь прошу Вас помочь мне реализовать прием данных через ком порт в студии 2008(MFC). Примеров мало в интернете, но есть, просто я недавно начал изучать mfc и для меня сложновато разобраться с теми примерами.
Вот на чем я остановился: http://upload.com.ua/get/901253300/ (простите что высылаю весь проект, а не кусочки кода, мне так понятней будет) подправьте и объясните пожалуйста. Ну и если есть готовый проект, поделитесь. |
|||
|
||||
| coproral |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 6 Регистрация: 21.12.2009 Репутация: нет Всего: нет |
Хорошо, задам вопрос по другому.
есть функция-
как добавить ее в класс?(студия 2008) делаю по этому - http://www.canalsiderentals.com/050300.php Это сообщение отредактировал(а) coproral - 23.12.2009, 17:34 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
В какой класс? И зачем (чем она не устраивает тебя в том виде, в каком есть, особенно если работает)? (Извини, проектов и примеров не смотрела).
-------------------- ... |
|||
|
||||
| coproral |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 6 Регистрация: 21.12.2009 Репутация: нет Всего: нет |
Вот именно, что не работает. Вставляю эту функцию и вылезает ошибка - hCom не принадлежит классу, хотя в заголовочном файле класса окна в Public я написал HANDLE hCom. В других функциях с hCom все нормально. Я так думаю что надо добавить конструктор, но куда и как будет выглядеть он? Помогите мне с КОМ портом работать. Может давайте откинем то, что я делаю и предложите мне другие способы приема-передачи через КОМ порт в MFC. Я ж не против, только помогите и растолкуйте.
|
|||
|
||||
| jonie |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
Ок, сделайте эту функцию friend-ом класса "окно", далее в private части "окна" объявите HANDLE hCom, после чего там же (в классе) его инициализируйте где-нибудь. А вот в месте создания thread-а, передавайте параметром ему this, тогда внутри процедуры ReadThread вы сможете сделать так:
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||||
|
|||||||||
| coproral |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 6 Регистрация: 21.12.2009 Репутация: нет Всего: нет |
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
вот на пальцах:
класс MyWindowEmulator эмулирует окно с его оконной процедурой. someHandle - хендл (я его еще использую для сигнализации о выходе). WorkThreadRoutine - процедура работы с хендлом. вот собственно и всё. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 6 Всего: 50 |
функция потока должна быть статической
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 6 Всего: 50 |
Дружба не есть гуд |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
Alca, а я вот захотел дружественной чтобы была...
Мне также кажется, что в данном примере дружественность вполне приемлема - по сути своей в потоке надо только и делать что зачитать байт(-ы) и вызвать callback функцию. Делать что-то публичным мне не кажется хорошей идеей. Внутри callback функции (она будет вызываться из потока чтения) можно эти самые байты ставить в очередь обработки (некий private threadsafe queue) и отсылать окну уведомление о наличие байт через PostMessage. А если байт немного (до 8-ми в мире x86), тогда можно вообще обойтись БЕЗ очереди и всяких блокировок, отсылая сразу PostMessage(this, wm_user+xxx, dword1, dword2), тем самым решается проблемы маршалинга данных. Очень удобно и ничего не торчит наружу, как в случае static функции. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 6 Всего: 50 |
А чего там торчит? |
|||
|
||||
| coproral |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 6 Регистрация: 21.12.2009 Репутация: нет Всего: нет |
Вставил и те же ошибки.
Уважаемые программисты, неужели никто не работал с ком портом? Помогите сделать следущее: |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
Alca, будут торчать методы доступа к хендлу и функция callback например.. в моем случае вообще можно сделать чтобы ничего не торчало 8)
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 6 Всего: 50 |
торчать - это значит public или protected доступ? |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |