我有一个用户与C#WPF程序一起交互的设备.当用户按下设备上的按钮时,该程序必须发出哔声,指定的时间长度或用户按下按钮的时间,以较短者为准.可用于产生蜂鸣声/音调的唯一扬声器是计算机BIOS扬声器; 我们不能假设其他发言者在附近(并且假设不会有任何其他发言者实际上是安全的).
如何在必要的持续时间内产生连续音?
到目前为止,我发出了许多哔哔声,但不是连续的音调.
首先,启动一个线程:
private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) {
if(this.Visibility == Visibility.Visible){
mBeepThread = new Thread(new ThreadStart(ProduceTone));
mBeepThread.Name = "Beep Thread";
mBeepThread.Start();
}
}
Run Code Online (Sandbox Code Playgroud)
线程本身:
bool mMakeTone = false;
private void ProduceTone(){
while(this.Visibility == Visibility.Visible){
if(mMakeTone ){
Console.Beep();
}
else{
Thread.Sleep(10);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在按下按钮的持续时间内,将mMakeTone布尔值翻转为true,直到设备本身指定的时间.
我怀疑它只是对上面的Console.Beep()行的快速更改,但我不确定它会是什么.
\a是一个escape sequence表示字符常量的铃声警报.关于MSDN的Console.Beep()方法说明:
通过控制台扬声器发出哔哔声.
我们来看看这个示例代码:
public static void Main(string[] args)
{
Console.WriteLine("\a");
Console.Beep();
}
Run Code Online (Sandbox Code Playgroud)
这段代码会发出2声嘟嘟声,它们听起来和我一样.现在我需要看到证据.
当我反编译该Console.Beep()方法时,它使用Win32Native.Beep来自kernel32.dll ;
public static void Beep(int frequency, int duration)
{
Win32Native.Beep(frequency, duration);
}
Run Code Online (Sandbox Code Playgroud)
他们的频率和持续时间可能不同,我没有说这些东西,但他们的来源是相同的(Win32Native.Beep)?哪个来源\a用于铃声警报?
我已经在eclipse javaSE1.7上尝试了这个代码,它应该发出一声哔哔声,但事实并非如此.这是为什么?
public class Main {
public static void main(String args[]) {
// ASCII bell
System.out.print("\0007");
System.out.print("\007");
System.out.flush();
}
}
Run Code Online (Sandbox Code Playgroud)
要调试防火墙延迟问题,我需要一个应用程序,它会在检测到HTTP GET请求时在服务器端发出蜂鸣声.
这段代码(test.ashx):
<%@ WebHandler Language="C#" Class="TestHandler" %>
using System;
using System.Web;
public class TestHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
HttpResponse Response = context.Response;
try
{
Response.Write("Before beep");
Console.Beep();
Response.Write("After beep");
}
catch (Exception ex)
{
Response.Write(ex.Message + "<br />\n" + ex.InnerException.Message);
}
}
public bool IsReusable { get { return false; } }
}
Run Code Online (Sandbox Code Playgroud)
仅在IIS Express中进行调试时才会生成声音.将Web应用程序移动到IIS后,声音消失.
是否有任何类可以通过不同的音调在扬声器中发出声音?System.Beep() 是原始的,我无法以双倍形式发送频率。
比如说,我想要播放 A 声音或 B# 声音。我希望函数调用如下:
double d = 425,545;
int duration = 500;
int volume = 0.8;
f(d, duration, volume)
f(ToneClass.A, duration, volume)//or like this
Run Code Online (Sandbox Code Playgroud) 这个python代码的PHP版本是什么?
import winsound
winsound.Beep(537, 2000)
Run Code Online (Sandbox Code Playgroud) 从来没有在bash上编码但需要紧急的东西.对不起,如果这不是常态,但我真的想得到一些帮助.
我有一些抛出到stdout的消息,根据消息类型(消息是一个带有"found"字样的字符串)我需要bash脚本发出蜂鸣声.
到目前为止,我已经想出了这个.
output=$(command 1) # getting stdout stream?
while [ true ]; do
if [ "$output" = "found" ]; then # if the stdout has the word "found"
echo $(echo -e '\a') # this makes the beep sound
fi
done
Run Code Online (Sandbox Code Playgroud)
我不知道在哪里/如何添加grep或awk命令检查具有单词"found"的字符串并且仅返回"found",以便在if条件下它可以检查该单词.
谢谢!
我.vimrc在Mac OS下的OSX中有以下配置.
let mapleader = ','
nnoremap <leader>af :Autoformat<CR> " autoformat document
nnoremap <leader>ig :IndentGuidesToggle<CR> " indent guides toggle
nnoremap <leader>nt :NERDTreeToggle<CR> " nerd tree toggle
nnoremap <leader>tb :TagbarToggle<CR> " tagbar toggle
Run Code Online (Sandbox Code Playgroud)
命令工作正常,但是当我使用它们时,终端会发出声音提示错误,光标移动位置大约4行.在iTerm2和GVim中使用Vim时都会发生这种情况.
知道为什么会这样,以及如何解决它?
我试过这个,但它只是一个空行:
import os
a=300
b=2000
os.system('play --no-show-progress --null --channels 1 synth %s sine %f' % ( a, b))
Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习如何在 Powershell 中编码。那么,我该如何做呢?
我查了MS网站,但不清楚...