./configure --prefix=/usr/local/vim7 --enable-multibyte --enable-gpm --enable-cscope --with-features=huge --enable-fontset --disable-gui --without-x --disable-xim --disable-perlinterp
久しぶりにビルド
./configure --prefix=/usr/local/vim7 --enable-multibyte --enable-gpm --enable-cscope --with-features=huge --enable-fontset --disable-gui --without-x --disable-xim --disable-perlinterp
久しぶりにビルド
まだ2局ほど 599BK 形式でやっている局を呼んだだけで、それ以上のことはできてない。近畿あたりの局を呼んでみたりしたけど、パイルアップになっていないにも関わらずとってもらえなくて、聞こえるけど届かない経験をした。
いまいちバンド内の慣習 (空気を読む必要があるんだけど) がわからない。あと短縮アンテナなので全然飛んでない感じもする。
週末は ALL Asia コンテストの電話部門が行われていたらしく 21MHz が賑わっていたけど聞いただけ。ロシア?、アメリカあたりのごくごく強い局しか聞こえなかった。
CQ 出して 599BK だけをひたすらやれる限りやってみたいけど、キーイングが遅すぎると敬遠される感じがする。
90%以上ほぼ聞きとれるのが 15wpm なので、基本それで出しているんだけど、15wpm は聞いてる限りではかなり遅い感じ。18wpm 余裕でとれる程度まで上げないとスムーズにいかない感じがする。
訓練自体は 20wpm でやっていて 80% 程度はだいたいとれるけど、それは本当に符号を聞きとる以外の全てのことを頭の外に追い出してやっていて、実践では半分もとれない感じ。聞きとること以外のことを考えながらだと、かなりつらい。
YAESU の無線機のエレキーはどうやらちょっと一般的なものと挙動が違うっぽい。なんか打ちにくいなと思ってエレキーキットを買ってやってみたけど、やっぱり違う。
実際打ってみた実感としてこんな感じかな、というので正確ではないかもしれないけど、入力は - が長点キー、. が短点で、実際のキー出力 # がオン、_ がオフだとすると、
# YAESU in: -------- out: ###_###_###_ (符号後のスペースのタイミングでキーが押しっぱなしだと、キーがメモリーされてしまう) # 一般的なエレキー in: -------- out: ###_###_ (スペースのタイミングでキーを離すと符号が途切れる) in: --------- out: ###_###_###_ (符号が出てから離さないと出力がない) 同じように、同じ入力でも出力が変わる # YAESU in : -. -. out: ###_#_###_# (最初の長点が終わった瞬間、メモリーされた短点が呼びされるので、その瞬間次のキーの予約ができる。つまり実際に点が出る前に予約可能になる) # 一般的なエレキー in : -. -. out: ###_###_# (YAESU と同じように入力すると、メモリーが上書きされるので短点入力が無視される) in : -. -. out: ###_#_###_# (短点をちゃんと聞いてから打つ必要がある)
この挙動の違い、些細に思えるかもしれないけど、実際やってみるとなかなかやっかいで、YAESU 式のエレキーだと、かなり早めにキーを離すイメージをしないと余計な点が出やすい。特に短点の場合、短点は100msecもないので、脳で聞いてから離すと指が追いつかない。頑張って前の符号が終わった瞬間に離さないといけない。
一般的なエレキーのほうは点が出終わってからキーを離してもいいので、慣れやすいように思う。一方あせって早く打ちすぎると符号が消える。
長点短点1点メモリー、スクイズと、外に出る機能ではわからないんことがある。
これ、いずれか一方に慣れると、もう一方ができなくなるのでつらい。しばらく YAESU 式のほうで訓練してようやく慣れてきたけど、一般的なほうに直すかどうか悩んでる。リグ内蔵のキーヤーを使えるほうが面倒くさくないけど、結構普通のほうがいい……
メリットデメリットを考えると
YAESU 式
一般的なタイプ
モールスの学習はヘタな入門本を買うよりもThe Art and Skill of Radio-Telegraphy (PDF 和訳: 無線電信の巧みと技)を読むべきだと思った。2版が和訳されて公開されていて簡単に読むことができる。すごく気を使って書かれていて、何度読んでもおもしろい。モールスに限らず、技能修練に関する習慣付けについて発見があって素敵だと思う。
この本は初版1992年 (21年前!)、非商用に限り再配布自由、というようなライセンスになっている。著者は残念ながら2003年に亡くなってしまっていて電信を覚えてこの人と交信しようというのは叶わない。
電子申請だしもっと早く終わるのかと思ったけど、思いのほかかかった。もっと時間がかかる人もいるらしい。技適オンリーの申請だし審査するところなんてなさそうだし自動化されていそうなもんなんだけど、たぶん僕が知らない何かがあるのだろう。
コールサインは復活させず、再割り当ての J* コールをもらった。JH1UMV だった。
電波が出せるようになったので、アンテナを含めた出力のテストができるようになった。ハムフェアで買ったRF 電流計を使っていろいろ見つつ、コモンモードフィルタ (KIT-DCF-RF-29L3) の接続方法というか、ケーブルの引き回しを調整した。
あとAC電源にも同じ大進無線の DCK-3 というフィルタを入れてある。
パッチンコアもいくらか用意してあるけど、リグから出ている線がそもそもそれぐらいしかなく、現状では実際のインターフェアは観測されていないのでどこにも入れていない。
アンテナはアンテナアナライザー (RigExpert AA-54) を買って調整してあるので、だいたいはあってる。このアナライザー、とても便利なのだけれど、PCを接続すると (というより正確には USB ケーブルを繋げると) 値がおかしくなって、それを信用して調整すると死ぬ。たぶんちゃんとアースとらないとだめなのかな。繋げないで測ることにした。
しかし雨が降ってアンテナの共振点がかなり下がっていて、運用バンドからはずれてしまっていたのでどうにもならない感じだった。もうちょっと雨でも使えるような調整をしたほうがいいかもしれない。
var randomUrl = String_random(/http:\/\/[a-z]{3,8}\.example\.com\/([a-z]+\/){3}/);
console.log(randomUrl); //=> "http://nsgd.example.com/epij/tmvlh/bkjmsyahwhj/" 正規表現からそれにマッチするようなランダム文字列を生成する String_random.js というのを書きました。
Perl の String::Random みたいなのが JS でも欲しいなあと時々思うことがあったので作りました。括弧によるグルーピング・パイプによる選択も実装してあるのでそれなりに楽しい感じです。
String_random という名前は、String.random = String_random; できる感じのイメージですが、そのまま String に突っ込むと怒る人がいそうなのでこのような感じです。
ランダム文字列生成の活用方法を書きました。
最近とにかく元気がでなくて、特に仕事のやる気が全くまっさらで出てこなくて、前やってたタスク (自分の手からはずしてもらった) の影響を未だひっぱっている感じがする。
モールスの学習は、一つの現実逃避であると同時に、やればできるようになるという気持ちを取り戻したいという思いがある。現に、ちゃんとモチベーションがありさえすれば、僕のようなクズ人間でも、ちゃんと1ヶ月続けられているし、結果的に (記録をつけていないとわかりにくいんだけど) 着実に進歩している。
また、異分野の学習をすると、何かしらプログラミングで解決したい問題が発生するので、ちょうどいい問題をプログラミングで解いて楽しい思いをすることができる。
いくつか気付くことがあって、やはり以下の点が自分のモチベーション維持にとって重要だと思った
基本、独りでいさえすれば、誰にもバカにされることなく、自分の考え自分が信じられることをやり続けられる。そこに誰か意味不明なことを言うクソ人間が介入することで、重要なタイミングで余計な口出しをされ、何もかもが台無しになる。社会生活上、それらを避けることができない以上、一生やる気が回復しない。
20wpm/10wpm でレッスン40まで行ったあと、20wpm/11wpm から 20wpm/18wpm まで徐々にあげてみてる。調子がいいときと悪いときとで全然正確さが違う (70%〜90%) ので、いかんともしがたい。いまいち、ちゃんと成長しているという実感がない。
実際の交信も聞くだけ聞いて、とにかくコールサインだけでもとろうとやっているけど、まず一発ではとれない。ないしは複数回聞いてもエリアまでしかわからないことも多い。ただ、送信側が気をつかってコールサインのときだけ文字スペースを長めにしてる場合があって、これだと1発でとれたりする。しかしコールサインがとれても本文が殆どとれない。599 5nn とか、交信終了時の E E は特徴があるのでわかるけど、BK あるいは K、もうっかりしてると聞きのがす始末。
実際、プレーンテキストを 15wpm/15wpm で聞いてみると、60〜80% 程度しかとれない。プレーンテキストの場合、E S T I など短い符号が頻発するので、難易度が増すように思う。とにかく聞き慣れるしかなさそうだけど、結構萎える。
いろいろ接続方法はあるけど、汎用・簡単なのは iBUFFALO USBシリアルケーブル (BSUSRC0610BS) とメスメス変換コネクタを使って無線機のCAT端子とコンピュータを接続する方法っぽい。ストレートに普通に接続すればいい。コネクタ一緒に買っても2000円ぐらい。
BUFFALO USBシリアルケーブル(USBtypeA to D-sub9ピン)1.0m ブラックスケルトン BSUSRC0610BS cho45
BSUSRC0610BS は FTDI チップを使っている。Mac はバッファロー公式にはサポートされてはいないけど、FTDI のサイトで Mac 用のドライバも提供されていて、普通に使える。
ドライバをインストールした上で、接続すると、/dev/tty.usbserial-FTB3L9UG とかデバイスファイルができる。
Ruby でシリアルポート (RS-232C) を扱う場合、gem install serialport を使うと簡単なようだ。以下のようなコードでなんとなく操作できる。
プロトコルのマニュアルは八重洲のページからダウンロードできる。特に pack/unpack をする必要もないし、ASCII データのやりとりだけなので、プロトコル自体は難しくなく、そのまま読むことができる。
この例では、
ということをしている。
class CAT
BAUDRATE = 4800
DATABIT = 8
STOPBIT = 2
PATITYCHECK = SerialPort::NONE
Message = Struct.new(:cmd, :params)
def initialize(args)
@port = SerialPort.new(
args[:port],
BAUDRATE,
DATABIT,
STOPBIT,
PATITYCHECK
)
@read_queue = Queue.new
@read_thread = Thread.start do
while message = @port.gets(";")
_, cmd, params = *message.match(/^(..)(.+);/)
@read_queue.push(Message.new(cmd, params))
end
end
end
def command(cmd, param="")
@port.write "#{cmd}#{param};"
sleep 1
end
def scan(start, finish)
# SELECT VFO-A
command "VS", "0"
# AUTO INFORMATION
command "AI", "1"
# SET FREQUENCY
command "FA", "%08d" % start
# START SCAN
command "SC", "1"
while m = @read_queue.pop
next unless m.cmd == 'FA'
if finish < m.params.to_i
break
end
end
# STOP SCAN
command "SC", "0"
# DISABLE AUTO INFORMATION
command "AI", "0"
end
end
cat = CAT.new({ :port => '/dev/tty.usbserial-FTB3L9UG' })
cat.scan(7_000_000, 7_030_000) このように、連続してコマンドを送ったりする場合、適当に sleep を入れないとだめとか、そういうのがあるようで、ちょっと面倒くさい。うまくできるまで試行錯誤が必要そう。何かもっと正しいやりかたがあるかもしれない。
あと、応答が存在するコマンドを、こちらから一方的に連続して送りつけると、受信できるデータがまざっておかしなことになる。どんな実装になってんだよ、って感じだけど、コマンドを送るときは1つずつ確認しながら送る必要がある。ただし、応答がないコマンド (単にセット) は、応答がないので、いかんともしがたい。よくわからん!
さらにいえば、このような一連のコマンドでオートコントールしようとするなら、無線機側の操作を全 LOCK する必要がありそう。LOCK コマンド自体はあるけど、部分的にしかロックできなかったりするのでめんどい。