目标是无线电控制我的电脑和接口活动通过手持收发器拨打dtmf音。
我用multimon听DTMF音 我试图使用awk过滤数字并相应地继续。 例如,如果我从收音机键入“0”,系统必须重启等,但首先确认操作。 “计算机将重启,发送#确认”......
我尝试使用espeak对远程无线电进行语音确认。 连接到pc声卡的无线电接收命令并发送响应。
我不知道如何在espeak中的awk中嵌入multimon。
Multimon本身并不允许我对它的stdout做任何事情,因为它的运行(听到一个数字之后不会终止,这确实是正确的。)
如果我知道如何只是说出每个数字,而不退出自然的multimon循环,那将非常有帮助。
说,multimon -a DTMF | awk'{print}'espeak -stdin 如果这简单有效!
有可能吗?任何帮助都很好。
3年过去了,linux DTMF解码仍然无法取得进展。一旦我在Linux中没有看到任何DTMF无线电控制项目,我打算发布这个,我可以解决这个问题。
谢谢/ Mario / sao paulo巴西
答案 0 :(得分:2)
我相信我的答案已经过时了,也许你已经找到了解决这个问题的方法。
我遇到了同样的问题,并发现问题出现在multimon中。当您将stdout从multimon传递到另一个程序时,multimon不会正确刷新详细输出。
尝试修补并重新编译multimon,添加“fflush(stdout);”,如下所示:
(unixinput.c,第71行)
void verbprintf(int verb_level, const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
if (verb_level <= verbose_level) {
vfprintf(stdout, fmt, args);
fflush(stdout); //ADD THIS LINE!!!!!!!!!!!!!!!
}
va_end(args);
}
致以最诚挚的问候,
-Eduardo
答案 1 :(得分:0)
您可以使用system()
功能从espeak
脚本启动awk
。
答案 2 :(得分:0)
@OP,我不清楚你的问题,但看到那个系统()对你感兴趣,这就是你在awk中调用外部命令的方法
multimon -a DTMF | awk '{
cmd="espeak "$0 #$0 comes from the multimon output
system(cmd)
}
'