Автор Тема: system bell  (Прочетена 1984 пъти)

st_dimitrov

  • Напреднали
  • *****
  • Публикации: 102
    • Профил
    • WWW
system bell
« -: Mar 10, 2006, 18:48 »
Здравейте приятели,

разработвам една малка програмка за у нас, и се запънах на едно място... рових из мрежата но не намерих полезна информация, а именно: по какъв начин мога да изсвиря звук през системната слушалка, като определям аз продължителността и честотата на този звук?

Ако някой е правил нещо подобно, или може да ме насочи нанякъде няма да откажа помощ '<img'>
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
system bell
« Отговор #1 -: Mar 10, 2006, 21:34 »
Примерен код

#!/usr/bin/perl -Tw
#sound fx for linux console
#$Revision 1.1$ <steffen@dett.de>

$esc = chr(27);

sub beep($$)
{
   my $freq = shift;
   my $ms   = shift;

   #mostly not working:
   #if (($ENV{'TERM'} ne "linux") or (!defined $ms)) {
   #   print chr(7);
   #   return;
   #}

   if ($freq < 1) {
      $freq = 1;
   }
   if ($freq > 20000) { #20 khz
      $freq = 20000;
   }
   if ($ms < 1) {
      $ms = 1;
   }
   if ($ms > 10000) { #10 sec
      $ms = 10000;
   }
      
   print   $esc . "[10;" . $freq . "]",   #set freq
      $esc . "[11;" . $ms   . "]",   #set delay
      chr(7) ,         #beep (ascii bell)
      $esc, "[10]",         #reset freq
      $esc, "[11]";         #reset delay

   select(undef, undef, undef, ($ms / 1000));
}

my $bufmode=$|;
$| = 1;

if ($ARGV[0] eq "high") {
   for (my $n=0; $n<5; $n++) {
      beep(3000,100);
      beep(6000,300);
   }
}

if ($ARGV[0] eq "up") {
   for (my $n=0; $n<100; $n++) {
      beep($n*20,10);
   }
}

if ($ARGV[0] eq "3up") {
   for (my $n=0; $n<100; $n++) {
      beep($n*20,10);
   }
   for (my $n=0; $n<100; $n++) {
      beep($n*20,10);
   }
   for (my $n=0; $n<100; $n++) {
      beep($n*20,10);
   }
}

if ($ARGV[0] eq "down") {
   for (my $n=100; $n>0; $n--) {
      beep($n*20,10);
   }
}
if ($ARGV[0] eq "3down") {
   for (my $n=100; $n>0; $n--) {
      beep($n*20,10);
   }
   for (my $n=100; $n>0; $n--) {
      beep($n*20,10);
   }
   for (my $n=100; $n>0; $n--) {
      beep($n*20,10);
   }
}

if ($ARGV[0] eq "wave") {
   for (my $n=0; $n<5; $n++) {
      beep(220,500);
      beep(110,1000);
   }
}

if ($ARGV[0] eq "deepdown") {
   for (my $n=0; $n<1; $n++) {
      beep(220,250);
      beep(110,500);
      beep(55,1500);
   }
}

if ($ARGV[0] eq "sirene") {
   for (my $n=0; $n<3; $n++) {
      beep(2000,250);
      beep(4000,500);
   }
   for (my $n=0; $n<3; $n++) {
      beep(2000,125);
      beep(4000,250);
   }
   for (my $n=0; $n<3; $n++) {
      beep(2000,250);
      beep(4000,500);
   }
}

$| = $bufmode;

Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

st_dimitrov

  • Напреднали
  • *****
  • Публикации: 102
    • Профил
    • WWW
system bell
« Отговор #2 -: Mar 10, 2006, 22:37 »
Благодаря колега '<img'> Ще ми свърши работа  'B)'

edit: на домашната машина работи екстра, но на рутера отказва  ':huh:' VladSun имаш ли идея от какво се получава това? Съмнява ме да е от това че на рутера няма X.
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
system bell
« Отговор #3 -: Mar 10, 2006, 22:52 »
И при мен на Сусе-то (десктоп машина) върви, но на Слак-а (рутера) не, ама не съм се задълбочавал защо е така ....
Ако ти разбереш кажи '<img'>
Единственото, което се сещам е, че на рутера няма соунд-съппорт в кернела, но много ме съмнява да е от това.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

krassswr

  • Участници
  • ***
  • Публикации: 9
    • Профил
system bell
« Отговор #4 -: Mar 11, 2006, 09:08 »
На рутера си провери дали си активирал модула "pcspkr". Можеш да плаваш и пакета ditty_0.2-1_i386.deb така се казва в дебиан, но го има и на сорс за слак. Този пакет ти дава възможност за по-финен контрол на говориретлчето.
Активен

hary

  • Напреднали
  • *****
  • Публикации: 73
    • Профил
system bell
« Отговор #5 -: Mar 24, 2006, 18:02 »
Предполагам че на рутера се свързваш отдалечено от друг комп нали '<img'>
Интресно , но се оказва че освен екрана и звуковите сигнали се редиректват към съответната конзола, т.е. като си сложиш слушалките на компа от които пускаш конзолката към гейта чуваш там някакъкви звуци а не от спикера на гейта.
Ако ако пуснеш програмчето от от самата машина се чуват звуците ( напомнят ми за ДООМ'<img'>

А при старите Линукси май не беше така .. спомням си че от сървърите се чуваха някакви звуци когато някой редактираше конфигурационните файлове
Активен

st_dimitrov

  • Напреднали
  • *****
  • Публикации: 102
    • Профил
    • WWW
system bell
« Отговор #6 -: Mar 25, 2006, 13:15 »
Седнах пред рутера и пробвах да пусна какъвто и да е звук но не... само ако задържа Бекспейс или при стартиране на рутера се чува звук от слушалката.. интересно защо'<img'>  Сигурно ми либсва някой пакет или някоя настройка някъде там...
Активен