C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: Beep開始/停止


(過去ログ 123 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■73514 / inTopicNo.1)  Beep開始/停止
  
□投稿者/ へそ (1回)-(2014/10/06(Mon) 12:11:13)

分類:[C#] 

Console.Beepで扱うPCのブザーについて
音の「開始」と「停止」を各々独立に実行できますか?
目的:
・ブザーを鳴らしっぱなしにしたい
・鳴らしてる間、他の処理をしたい
よろしくおねがいします。
環境:VS2010 C#


引用返信 編集キー/
■73522 / inTopicNo.2)  Re[1]: Beep開始/停止
□投稿者/ 774RR (180回)-(2014/10/06(Mon) 19:27:56)
System.Console.Beep 単独では ON だけ OFF だけという機能は無いっぽい。

ワーカースレッド作ったり BackGroundWorker 等で
1. Beep(Hz, 100); あたりをフラグが立っている間繰り返し実行するとか
2. Beep(Hz, 2147483647); して(これで実質ずっと ON なわけだ) スレッドごと殺しちゃうとか
そんなんぢゃダメかな?

Vista x64 では動かないとかいう情報もあるし他の方法を考えるほうがよさそう。
引用返信 編集キー/
■73529 / inTopicNo.3)  Re[1]: Beep開始/停止
□投稿者/ kiku (37回)-(2014/10/07(Tue) 12:51:55)
下記のようにSoundPlayerクラスを利用すれば
再生、停止、ループ再生が可能なようなので
再生したい周波数のwavファイルを作成し
上記クラスにてコントロールするのはどうでしょう?

http://dobon.net/vb/dotnet/programing/playwavfile.html

ループ再生時にはもしかすると
音が一瞬途切れたりするかもしれませんが、
wavファイルの長さが充分に長ければ気にならないかもしれません。

wavファイルの作成については、
下記が参考になりそうです。

http://blog.ume108.mobi/?p=837

引用返信 編集キー/
■73534 / inTopicNo.4)  Re[1]: Beep開始/停止
□投稿者/ へそ (3回)-(2014/10/07(Tue) 14:26:29)
774RR さん、kiku さん

ご回答ありがとうございます。

今回は、
「ワーカースレッド」で「Beep(Hz, 100); あたりをフラグが立っている間繰り返し実行する」
方法にて対応しました。
ただし、連続音にはならず間欠的に鳴りますが、それでもOKという要求仕様になりました。

・「BackGroundWorker」
・「Beep(Hz, 2147483647); してスレッドごと殺しちゃう」
・「SoundPlayerクラス」

これらについては今後機会があれば試してみます。

ご指導ありがとうございました。

引用返信 編集キー/
■73535 / inTopicNo.5)  Re[2]: Beep開始/停止
□投稿者/ へそ (4回)-(2014/10/07(Tue) 14:28:24)
一応解決ということで、お世話になりました。
解決済み
引用返信 編集キー/
■73537 / inTopicNo.6)  Re[3]: Beep開始/停止
□投稿者/ 774RR (182回)-(2014/10/07(Tue) 18:32:36)
良い子は真似してはいけないコードを晒してみるテスト

static void Main(string[] args) {
  using (System.ComponentModel.BackgroundWorker bg = new System.ComponentModel.BackgroundWorker()) {
    bg.DoWork += beeper;
    bg.RunWorkerAsync();
    System.Console.ReadLine();
  }
}
static void beeper(object sender, EventArgs e) {
  Console.Beep(2000, 2147483647);
}

我ながら極悪非道なコードだ。24日問題を作りこんでおりますね・・・

解決済み
引用返信 編集キー/
■73566 / inTopicNo.7)  Re[4]: Beep開始/停止
□投稿者/ 774RR (184回)-(2014/10/10(Fri) 12:59:49)
さすがは stackoverflow こんな記事を発見

http://stackoverflow.com/questions/1195828/c-produce-a-continuous-tone-until-interrupted
No73537 の Console.ReadLine(); の後ろに Console.Beep(2000, 1); を追加するだけ、だと。

これなら極悪非道とまでは言えないコードになったんぢゃないかな。
# 24日問題は依然あるけど。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -