![]() |
|
Модераторы: 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-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||
|
|||||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Спасибо, Уважаемый! В понедельник попробую и отпишусь - сегодня в командировке. Еще раз спасибо!!!!
|
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Чегото ничего не слышно... Подавал логические "1" и "0" на входа CTS и DSR - звука никакого небыло. В процессах com2beep есть. Что делать? Или может надо на оба входа сразу подать?
Это сообщение отредактировал(а) cambit - 20.2.2012, 16:42 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 11 Всего: 135 |
вставить вместо PlaySound
Если сообщение выводится, то проблема в параметрах PlaySound, если нет - то Вы просто не получаете события. Если Вы написали свою программу, то выкладывайтё её сюда, если же взяли от t_gran и ничего не изменяли - то не нужно, она и так здесь есть. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Использовал ту, что прислали. НО! Где в коде "PlaySound"?
Я видел только
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 11 Всего: 135 |
смотрел по диагонали... ну, замените этот Beep на MessageBox. Важно узнать, что не отрабатывает - перехват сигналов с порта или реакция на этот перехват. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
М-Да.... Открыл прилагаемый файл com2beep.c в VC++ 6.0 нажал создать .ехе получил 5 ошибок и 5 предупреждений. Вот они:
com2beep.c D:\Boock\com2beep\com2beep.c(14) : error C2275: 'HANDLE' : illegal use of this type as an expression c:\program files\microsoft visual studio\vc98\include\winnt.h(207) : see declaration of 'HANDLE' D:\Boock\com2beep\com2beep.c(14) : error C2146: syntax error : missing ';' before identifier 'handle' D:\Boock\com2beep\com2beep.c(14) : error C2065: 'handle' : undeclared identifier D:\Boock\com2beep\com2beep.c(15) : warning C4047: '=' : 'int ' differs in levels of indirection from 'void *' D:\Boock\com2beep\com2beep.c(17) : warning C4047: 'return' : 'void *' differs in levels of indirection from 'int ' D:\Boock\com2beep\com2beep.c(90) : error C2275: 'HANDLE' : illegal use of this type as an expression c:\program files\microsoft visual studio\vc98\include\winnt.h(207) : see declaration of 'HANDLE' D:\Boock\com2beep\com2beep.c(90) : error C2146: syntax error : missing ';' before identifier 'handle' D:\Boock\com2beep\com2beep.c(90) : warning C4047: '=' : 'int ' differs in levels of indirection from 'void *' D:\Boock\com2beep\com2beep.c(93) : warning C4047: '!=' : 'int ' differs in levels of indirection from 'void *' D:\Boock\com2beep\com2beep.c(99) : warning C4022: 'Disconnect' : pointer mismatch for actual parameter 1 Error executing cl.exe. com2beep.exe - 5 error(s), 5 warning(s) Что-то не так сделал? Я так полагаю, этот код вставлять нужно в созданный ранее проект? Это сообщение отредактировал(а) cambit - 20.2.2012, 18:30 |
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Тестируйте. Сам отпишусь только завтра, ибо у нас уже за полночь, а завтра на работу. :-(
Присоединённый файл ( Кол-во скачиваний: 2 )
com2beep.7z 4,40 Kb-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Всё, можете забирать. Прикрутил я звук и протестировал. У меня работает на УРА.
Как протестируете, отпишитесь. Присоединённый файл ( Кол-во скачиваний: 4 )
com2sound.7z 88,03 Kb-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Извините, господа, некоторое время отсутствовал. Прогу попробовал - работает на УРА! Спасибо огромное!!!!
И даже не надо делать защиту от дребезга контактов - прога ждет окончания воспроизведения файла. А вот дальше - снова воспроизводит тот же файл по кругу, пока не отпущу кнопку. А надо бы чтобы один раз - и все... Что и, главное, куда дописать? Это сообщение отредактировал(а) cambit - 27.2.2012, 17:55 |
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Не вопрос, сделаем. Только уточните, мелодия должна полностью проиграть, или играть до тех пор, пока кнопка нажата? -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Вы имеете ввиду, если кнопка отпущена раньше? До конца файла, конечно.
Это сообщение отредактировал(а) cambit - 5.3.2012, 10:47 |
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
cambit, забирайте. Не забудьте пометить тему как решённую.
Присоединённый файл ( Кол-во скачиваний: 5 )
archive.7z 87,05 Kb-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Упс... извините. Инсталирую службу, захожу в администрирование - службы, пытаюсь стартовать службу - стартует и сразу останавливается, т.к. говорит "... нечего делать..." Все предыдущие запускались нормально...
|
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
cambit, прошу меня извинить. Т.к. у меня нет физически подключенного устройства, я использовал для тестирования эмулятор, ну и скомпилировал программу с ориентацией на 10-ый com-порт. Можете посмотреть, в исходниках там видно. Ну вот, исправленная версия.
Присоединённый файл ( Кол-во скачиваний: 7 )
com2sound.7z 87,05 Kb-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| cambit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.2.2012 Репутация: нет Всего: нет |
Cпасибо, Уважаемый ! Все работает. Благодарю за помощь!!!
|
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |