|
11月は何も書いてなかったのに気づいた。 
何もやってなかったわけではなく、D-STAR関係で公開できないものを含んでいたので書いてなかったところもあり。
Announce Bot
現在、ID-91+DVAPにてリフレクターREF047に接続していることが多い。そのREF047上にIn/Outしてくる局をリスト表示だけでなく、接続している局に(正確には、接続しているmodule[A/B/C]のうちの1つmodule上の局へ)音声でコールサインを知らせる機能をもたせてみた。
- 方法
ID-91をコントロールしているソフトRS-91が起動している同PC上にEcholinkも起動させているが、このEcholinkの音声発生機能をAPI経由で利用し、REF047上に流す。
【音声の流れ】 Echolink(PC audio_Out) → ID-91(Mic_In) → DVAR HotSpot → REF047
このままだと、コールサイン発生音量がQSO音声より若干大きいため、案内をするときだけ、マスタVolを下げるようにした。
- 用途
モービル移動中だったり、ナガラワッチをしている局へコールサインと接続/切断をお知らせするもの。
- scan.vbs
Dim fso1, fso2, reader1, reader2, src1, src2, sw, sa, dCall1, dCall2
set Echo1 = WScript.CreateObject("EchoLink.EchoLinkSession","Echo_")
set ws = CreateObject("WScript.Shell")
ws.Run "c:\appli\uwsc\uwsc.exe c:\appli\uwsc\alt_u.uws" ← PCマスタVol アップ(別ソフトVic-3を常駐使用し、
マスタVolのアップ・ダウンをさせている)
sw=0
sa=0
Do while sw=0
If sa=0 Then
ws.Run "c:\appli\uwsc\uwsc.exe c:\appli\uwsc\alt_u.uws"
end if
If sa=1 Then
wscript.sleep 1000
sa=0
else wscript.sleep 8000
end if
ws.Run "c:\Echolink\wget.exe -O null http://192.168.xxx.yyy/h2t.php", vbhide ← phpをバックグラウンドで
アクセスする(DOS版Wget.exe使用)
wscript.sleep 2000
Set fso1 = CreateObject("Scripting.FileSystemObject")
Set reader1 = fso1.OpenTextFile("u:\conn.txt", 1)
Set src1 = fso1.GetFile("u:\conn.txt")
If fso1.FileExists("u:\conn.txt") Then
if src1.Size <> 0 Then
sa=1
ws.Run "c:\appli\uwsc\alt_d.uws" ← PCマスタVol ダウン
dCall1 = reader1.ReadLine
Echo1.SayString " " & dCall1
WScript.Echo Time() & " " & dCall1 & "In"
ws.Run "c:\appli\uwsc\alt_d.uws"
wscript.sleep 500
Echo1.SayPhrase 4
wscript.sleep 1500
end if
end if
reader1.Close()
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set reader2 = fso2.OpenTextFile("u:\discon.txt", 1)
Set src2 = fso2.GetFile("u:\discon.txt")
If fso2.FileExists("u:\discon.txt") Then
if src2.Size <> 0 Then
sa=1
ws.Run "c:\appli\uwsc\alt_d.uws"
dCall2 = reader2.ReadLine
Echo1.SayString " " & dCall2
WScript.Echo Time() & " " & dCall2 & "Out"
ws.Run "c:\appli\uwsc\alt_d.uws"
wscript.sleep 500
Echo1.SayPhrase 11
wscript.sleep 1500
end if
end if
reader2.Close()
loop
Wscript.Quit
--------------
(注1) u:\conn.txt → 下記サーバの/home/share/conn.txt を指す
- h2t.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
<title>REF047_IN/OUT STATUS</title>
</head>
<body>
<?php
$tmp_f = "/home/share/call_o.txt";
$con_f = "/home/share/conn.txt";
$discon_f = "/home/share/discon.txt";
$str_n = "";
$call_t = "";
if (file_exists($tmp_f)){
$call_t = file($tmp_f);
unlink($tmp_f);
}
$source_file = "http://ref047.dstargateway.org/";
$fp_in = fopen($source_file, "r");
$i = 0;
$j = 0;
$k = 0;
while (! feof($fp_in)) {
$str[$i] = trim(fgetss($fp_in, 1000));
if (strrpos($str[$i],"ype") == 1) {
$j = $i;
}
if (strrpos($str[$i],"ast Heard") == 1) {
$k = $i;
}
$i++;
}
fclose($fp_in);
array_shift ($str);
$j = $j + 2;
$k = $k - 7;
for($i = $j; $i < $k; $i++){
$str_a = substr($str[$i],0,6) . ",";
$str_n = $str_n . $str_a;
$i = $i + 5;
}
$fno = fopen($tmp_f, "w");// call_o.txt
fwrite($fno, $str_n);
fclose($fno);
$call = split(",",$str_n);// to array $call
sort($call);
$call_o = split(",",$call_t[0]);
sort($call_o);
$fo_con = fopen($con_f, "w");
$diff1 = array_diff($call, $call_o);
while(list($key,$val) = each($diff1)) {
if(strlen($val) > 0){
print $val . " Connected<br>";
fwrite($fo_con, $val." ");
}
}
print "<BR>";
fclose($fo_con);
$fo_discon = fopen($discon_f, "w");
$diff2 = array_diff($call_o, $call);
while(list($key,$val) = each($diff2)) {
if(strlen($val) > 0){
print $val . " disconnected<br>";
fwrite($fo_discon, $val." ");
}
}
print "<BR>";
fclose($fo_discon);
?>
|