Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Другие библиотеки _ Программа - пищалка

Автор: laa88rf 30.7.2010, 12:48

Привет всем.
Не так давно начал писать программки на Qt.
Столкнулся с проблемкой. Есть сервер на FreeBSD. Звук на нем нет желания настраивать, да и колонки ставить рядом - тоже нет.
Хотел бы чтобы можно было пищать через спикер (динамик подключенный к мат. плате) в разных тональностях с разной длиной. Поиск решения никуда не привел. Из c++ похоже эту функцию убрали. Есть в Python, но и то, только под windows.

(в Pascal'е и TurboC эта функция называлась sound(in freq)).
Заранее благодарен за ответ.

З.Ы. Просьба не пинать, если тему поднял не там.


полезная тема по соседству: http://www.forum.crossplatform.ru/index.php?showtopic=4870

Автор: Iron Bug 30.7.2010, 13:44

не знаю, проканает ли это под юникс, но под линь работает:
http://www.developer.com/open/article.php/631191/Simple-Sounds-for-Linux.htm
там библиотека, можно сорц посмотреть.

а так, муторная запись в порт 0х61 или в прямо в девайс (в этом случае нужен дров). но тут нужно протокол знать.

Автор: DEADHUNT 30.7.2010, 13:46

Цитата(Iron Bug @ 30.7.2010, 14:44) *
а так, муторная запись в порт 0х61 или в прямо в девайс (в этом случае нужен дров). но тут нужно протокол знать.

мусорная запись в порт управления клавиатурой? :blink: надо документацию смотреть там должна быть специальная последовательность.

Автор: Litkevich Yuriy 30.7.2010, 15:16

Цитата(DEADHUNT @ 30.7.2010, 17:46) *
мусорная
буквой ошибся

к Qt это скорее не относится. Поэтому перетащил в "Другое"

Автор: laa88rf 31.7.2010, 10:02

к Qt это скорее не относится. Поэтому перетащил в "Другое"

Спорить не буду, хотел писать на Qt.

Цитата(Iron Bug @ 30.7.2010, 17:44) *
не знаю, проканает ли это под юникс, но под линь работает:
http://www.developer.com/open/article.php/...s-for-Linux.htm
там библиотека, можно сорц посмотреть.

а так, муторная запись в порт 0х61 или в прямо в девайс (в этом случае нужен дров). но тут нужно протокол знать.

Линь тот же юникс. ;) Но вариант с перенаправлением потока меня не радует, т.к. /dev/audio появляетя только(!) после пересборки ядра. Если мне ядро пересобирать, то проще было бы подключать колонки, а звуковой карты в сервере все равно нет.
В любом случае, printf("\a") заставляет попискивать сервер, но это не то. :(

Автор: Litkevich Yuriy 31.7.2010, 12:13

Цитата(laa88rf @ 31.7.2010, 14:02) *
хотел писать на Qt.
а в Qt нет возможности пищать системным динамиком.

Автор: Iron Bug 31.7.2010, 19:41

Цитата(laa88rf @ 31.7.2010, 13:02) *
Линь тот же юникс. ;) Но вариант с перенаправлением потока меня не радует, т.к. /dev/audio появляетя только(!) после пересборки ядра. Если мне ядро пересобирать, то проще было бы подключать колонки, а звуковой карты в сервере все равно нет.

а что плохого в пересборке ядра? дома так я его вообще раза три в месяц иногда пересобираю: с новым ядром или с дровами какими-либо. задача-то - фигня: выбрал, что нужно, и сиди себе, пей пиво - и через часик ядро готово. колонки всё-таки железо. тут вопрос: а оно нужно ваще на сервере?
а так - прямой записью в порт. но это нудно, ибо риалтайм и вся фигня.
а линь всё же не совсем юникс. он совместим с юниксом, но разница есть.

Автор: laa88rf 31.7.2010, 20:40

Цитата
а в Qt нет возможности пищать системным динамиком.

Ну вот. такая IDE/SDK, а системными девайсами не работает.

Цитата
тут вопрос: а оно нужно ваще на сервере?

вопрос бы не поднимал, если было бы не нужно. Есть сервер доступа, если несанкционированный доступ происходит - издается писк. Громкий и с определенной частотой.

Цитата
а линь всё же не совсем юникс. он совместим с юниксом, но разница есть.

Сорри за оффтоп. Просвятите. :) Какие отличия? Предок 1 - Юникс. FreeBSD получается тоже не Unix?

Автор: Алексей1153 31.7.2010, 20:43

laa88rf, задача ведь частная - напиши конкретно для этого сервера, под его систему, программку на C++ , пусть эта утилитка принимает командную строку с командой и пищит. Или через стандртный поток ввода-вывода ещё вроде можно наладить общение, но никогда этим не пользовался, не подскажу :)

А ещё вариант из области очумелых ручек - подключить сидюк (поломать лазерную систему для безопасности данных сервера, гы) и делать eject-insert-eject-insert-eject-insert-eject-insert- :D

Автор: Litkevich Yuriy 31.7.2010, 20:54

Цитата(laa88rf @ 1.8.2010, 0:40) *
Ну вот. такая IDE/SDK
Qt - библиотека, в первую очередь, для написания кроссплатформенного графического интерфейса

Автор: laa88rf 31.7.2010, 21:35

Цитата
А ещё вариант из области очумелых ручек - подключить сидюк (поломать лазерную систему для безопасности данных сервера, гы) и делать eject-insert-eject-insert-eject-insert-eject-insert-

Угу. Пустив через транзистор и max-232, а рулить отсылая данные через COM-порт. xD

Цитата
Qt - библиотека, в первую очередь, для написания кроссплатформенного графического интерфейса

Однако консольная часть тоже есть.

В принципе тема себя исчерпала.

ЗЫ. Есть еще вариант - подать системное прерывание через asm { }. Знать бы только какое. Если это только не то, что говорил Iron Bug - 0х61 прерывание.

Автор: Iron Bug 1.8.2010, 9:28

при чём тут прерывания? я написала про порт управления и привела пример готовой работающей программы с сорцом. хоть код бери, хоть из командной строки запускай. не вижу никаких проблем и не вижу связи с QT. QT - графический, чисто софтовый кроссплатформенный интерфейс, он не лезет к управлению хардварными ресурсами, если система не предоставляет такой возможности. а пересборка ядра - задача самая обычная, ничего сложного в этом нет. если нужно задействовать любой хард - то нужны дрова и поддержка ядра. что в этом особенного? нет дров - нет девайса. и никакой QT тут ни при чём. почему нужно искать какие-то окольные пути для решения банальных задач? я считаю, что вопрос исчерпан.

Автор: Litkevich Yuriy 1.8.2010, 9:53

Iron Bug, не уж-то в Юниксах нет API, позволяющего пищать системным динамиком?

по аналогии с этим: http://www.forum.crossplatform.ru/index.php?showtopic=4870

Автор: Iron Bug 1.8.2010, 11:22

никсы - сборные системы. в венде сразу есть всё. поэтому она такая дико неповоротливая и тормозная. никсы изначально задуманы как модульная система, в которую по необходимости можно включать поддержку тех или иных железяк и разных свойств. просто по умолчанию такая фича, как поддержка пищалки, не установлена в ядре. собственно, она и правда редко нужна. а для простого писка достаточно послать семёрку в вывод. собственно, никсы работают под очень разными платформами и настройки ядра по умолчанию рассчитаны на работу на всех этих платформах. но нет проблем собрать ядро с поддержкой пищалки и работать с ней по определённому протоколу.

Автор: Iron Bug 1.8.2010, 13:34

Кстати, вот ссылка на детальное описание работы с 0x61 портом напрямую:

http://www.scribd.com/doc/16750435/c-Io-Hardware-Programming-for-Pc-Speakers


Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)