スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | TB(-) | CM(-)

モールス信号変換機 プログラミングのお話

モールス信号変換機のプログラミングに関するお話です。


プログラムに関するお話なので、興味ない方はスルーしていただいて全然構いません(^ ^)ゞ

一応、最後の方にあとがき的なものも書いてあります。

まず、ソースが欲しいという方がいると思いますので、こちらに用意しました。
Visual Studio 2010 C# で開けると思います。

■ Morseクラスを使った、モールス信号再生の仕方
Morseインスタンスを作り、
文字毎にモールス信号情報が入っているMorse.Items(List)を見ながら
音声を順次再生させていくというのが基本方針です。
Morseクラス


1.Morseインスタンスを作る
(引数)inputText:モールス信号に変換したい文字列,isEnglishMode:欧文モールス信号フラグ(false=和文)


2.画面側で音を再生させる


■ Morseクラスのプロパティ構成
Morseクラスで持っている各プロパティの構成と、
主要プロパティの構成に至るまでの大雑把な過程です。

● MorseクラスのメンバItemsの構成
Morseクラス内のItemsプロパティですが、
これは文字列の各文字をモールス符号に変換したものをListとしてもっています(List<SMorseAtom> Items)
構成としては、他のプロパティも含め下表のようになっています。
※ 「␣」は半角スペースを表しています。
Morseクラス
OriginalStringプロパティ みず␣1l␣ほしい
StringForMorseプロパティ ミス゛␣1L␣ホシイ
Itemsプロパティ
(List<SMorseAtom>)
(Index) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
CharForMorse (non) (non) (non) 1 (non) (non) L (non) (non) (non) (non)
MorseCodes ・・-・- _ ---・- _ ・・ ␣|␣ ・---- _ -・--・- _ ・-・・ _ ・-・・-・ ␣|␣ -・・ _ --・-・ _ ・-
Lang Ja Non Ja Non Ja Non Num Non Ja Non En Non Ja Non Ja Non Ja Non Ja
MorseType normal 字間の"間" normal 字間の"間" normal 単語間の"間" normal 字間の"間" normal 字間の"間" normal 字間の"間" normal 単語間の"間" normal 字間の"間" normal 字間の"間" normal

Morseクラスのコンストラクタに変換したい文字列を入れる
(例:var morse = new Morse("みず␣1l␣ほしい", isEnglishMode:false);)
ことで、自動的にMorse.Itemsに値が入るように作りました。
そのMorse.Itemsを見ながら音を再生させているだけです。

● モールス信号へ変換していく手順
モールス信号には符号間、文字間、単語間の"間"(ま)があるので、それらに注意しながら作りました。
"間"についての詳しい説明はこちらのサイト(モールス信号への誘い様)が分かりやすいので、そちらを参照願います。

モールス信号へ変換していく手順なのですが、私は以下のようにしました。
0.入力チェックで変換不可文字を除いたオリジナル文字列を用意
【例:みず␣1l␣ほしい】
1.オリジナル文字列をモールス信号に変換しやすいように加工。
具体的には濁点半濁点の分離、大文字小文字ひらがなカタカナの統一。
【例:ミス゛␣1L␣ホシイ】
2.モールス信号に変換(Itemsに格納)
2-1.各文字をモールス信号に変換
&和文モードのときに英字が入っていたら'('と')'を適宜いれる
&単語間の"間"を入れる
【例:(モールス信号→)ミス゛ | 1(L) | ホシイ】
2-2.文字間の"間"を入れる
【例:(モールス信号→)ミ_ス_゛ | 1_(_L_) | ホ_シ_イ】
3.モールス信号再生
※このとき、符号間の"間"を入れる(例:「・-・-・-」 →「 ・.-.・.-.・.-」)


こんな感じです。

友人向けに軽い気持ちで簡易版モールス信号変換機を作って送ったあと、
何だか完成させたくなってここまでしました。
作っていて、和文中の英字を'('と')'で囲うことや、符号間、文字間、単語間の"間"を入れる必要があると分かり、結構苦労しました。
が、まあ自分でも納得できるとこまで作れたのでよしとしましょうか。
モールス信号へ変換するプログラム作りが目的だったので、
実際に使われているものと異なっている点があったとしても、
実機でモールス信号を使ったことのない自分にはそれに気づくことができませんし。。。

まあ、何かの参考になれば思います。
では。
2015/10/11 Ver.1.0.1 ソース内容を記事に反映
関連記事
[ 2015/09/30 23:12 ] プログラミング VB,C# | TB(0) | CM(0)

コメントの投稿













管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://kiyoshiroom.blog.fc2.com/tb.php/163-ae8f28b5









上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。