![]() |
|
Модераторы: Poseidon |
![]()
|
|
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Уважаемые СПЕЦЫ! Я в Visual С++ полный "0", и, учитывая возраст (за 40) и работу, особо вникать не получится, поэтому прошу помочь: существует одна задача: нужно написать программу, которая бы резидентно висела-бы в Windows и при нажатии кнопки (сторонней, подключенной к СОМ-порту), запускала бы на выполнение медиаплеер. Нашел вот эту статью (http://www.pcports.ru/articles/com_3.php), но как изменить код, чтоб запускался файл при появлении логической "1" например, на выводе DSR(не принципиально), а не показать цифру в окошке, как в статье, не знаю. Помогите!!! Если можно - по-подробнее, начиная с САМОГО начала.
|
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 11 Всего: 135 |
легко. вместо этой строки
пишете
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Спасибо, дружище! А можно чуть проблему усложнить? Мне не нужно вообще никакое окно - просто должен запускаться файл - и все (реальное применение сего устройства - при нажатии кнопки включения микрофона для объявления по громкой связи хочу проигрывать звон колокольчиков из wav-файла - аля аэропорт или вокзал). что мне из указанного в статье примера выбросить и, главное, куда его вставить? Я запустил Microsoft Visual C++ 6.0, выбрал "MFC APPWizard (exe), прошел этот мастер до конца, используя самоучитель для MS C++ 6.0, а вот куда дальше код вставлять - не пойму...
|
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 11 Всего: 135 |
Это не нужно. Выбирайте "Win32 Application" ![]() далее ![]() далее в файле <имя проекта>.cpp появится ф-ция
В ней нужно вставить
предварительно открыв COM-порт и записав дескриптор в hFile. А в ф-ции proc1 уже вызываете ShellExecute -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Для этого есть готовая функция - PlaySound, так что никакое приложение запускать не надо А программу вашу лучше всего оформить как сервис (если сможете |
|||
|
||||
| cambit |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Для открытия порта в файл Test.cpp вставил код
Это правильно? Затем добавляем:
Просто дописать две строчки? Это и планировалось... Если поможете |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 1 Всего: 196 |
Для домашних заданий, курсовых, существует "Центр Помощи".
Тема перенесена! |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Немного помогу - вот хидер для регистрации сервиса. Использование:
Это сообщение отредактировал(а) xvr - 16.2.2012, 12:48 Присоединённый файл ( Кол-во скачиваний: 3 )
serv_mgr.zip 1,48 Kb |
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Простите, но тут чисто прикладное задание - никаким обучением и не пахнет - я ж написал:
Добавлено через 9 минут и 40 секунд Тогда вряд-ли... Если я с азами никак не разберусь... я представлял себе это по-проще - запуск без окна из какой-нибудь ветки реестра... Давайте вернемся к самой программе - Так правильно я делаю или нет? |
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Ладно, будем шаг за шагом.
Добавил в Test.cpp код открытия порта, как показал выше, пробую запустить отладку - получаю ошибку -
Что не так? Это сообщение отредактировал(а) cambit - 16.2.2012, 17:20 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 11 Всего: 135 |
в MessageBox добавьте первым параметром 0
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| t_gran |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
cambit, так вам же компилятор явно говорит, что данная функция не принимает 3 параметра, т.к. она принимает 4 (MessageBox function).
Вы наверное не совсем понимает, что такое реестр. Реестр - это хранилище данных и не более того.
Да, но если вам нужен код, то это именно сюда. В общем решил я немного облегчить ваши поиски. Тут я вам написал не большую демку. Она полностью рабочая. Это сервис, который вы устанавливаете, и который каждую секунду прослушивает 1-ый com-порт. Как только приходит какой либо пакет, системный динамик вашего ПК будет издавать звук. Чем длиннее будет пришедший пакет, тем дольше будет сигнал. Сразу оговорюсь, что я перед тем как вам выложить, его хорошо проверил - работает. Вам осталось прикрутить звук который вам нужен, и вставить вызов функции вместо Beep(). Установка сервиса:
Удаление сервиса:
Где управление сервисами, я думаю объяснять не нужно? Как только поставите, придётся запустить в ручную. Но после перезапуска системы, это уже не понадобится.
Бинарник с исходником прикрепляю ниже. Присоединённый файл ( Кол-во скачиваний: 3 )
com2beep.7z 4,84 Kb-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||||||||
|
|||||||||||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 11 Всего: 135 |
алгоритм д.б. примерно такой
могут быть какие-то нюансы, но в общем - как-то так. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Спасибо огромное, не ожидал! Обычно ограничиваются "смотри здесь ..." и т.д. Но, не посчитайте за наглость, есть несколько уточнений. Я не совсем пока не понял сути программы, но по Вашему описанию в моем случае пакет не будет приходить - не откуда, протокол RS-232 не используется. При нажатии кнопки на микрофоне на какой-либо вывод СОМ-порта (СTS или DSR или др.- аппаратно не важно) банально будет подана логическая "1" и все, палец отпустили - пропала. Поэтому я и отталкивался от статьи, указанной в первом посту, где функция SetCommMask() отслеживает события на заданных входах СОМ-порта. И еще пара мелочей - дребезг контактов выключателя -желательно бы сделать паузу приблизительно 0,2 сек.после старта PlaySound, чтоб не допустить запуска нескольких экземпляров процессов воспроизведения звукового файла, но с этим я думаю справлюсь сам. И, на конец, файл должен воспроизвестись один раз, пока нажата кнопка, второй раз - только после отпускания и её повторного нажатия. Еще раз спавибо за участие!!!!!! Если не прав - значит что-то не понял, прошу сильно не пинать... Это сообщение отредактировал(а) cambit - 16.2.2012, 20:29 |
|||
|
||||
| t_gran |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Да хоть сколько
Это тоже мелочь. Вы сейчас хотя бы реализуйте рабочую программу, а там и с этим разберётесь. Можно будет воспользоваться либо объектом синхронизации, либо свой костыль прикрутить в виде логической переменной (а-ля: isNowPlaySound). cambit, теперь картина стала ясней. Давайте попробуем так. Работу этой версии не смог проверить, в связи с отсутствием возможности установить управляющие аппаратные сигналы. Но сниффером видно, что программа слушает порт. Попробуйте.
Это сообщение отредактировал(а) t_gran - 17.2.2012, 04:25 Присоединённый файл ( Кол-во скачиваний: 3 )
com2beep.7z 5,32 Kb-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||
|
|||||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |