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

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


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

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

まず、ソースが欲しいという方がいると思いますので、こちらに用意しました。
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/09/30 23:12 ] プログラミング VB,C# | TB(0) | CM(0)

モールス信号変換機作ってみた(※Windows7のみ対応)

こんにちは!

なんとなくですが、C#でモールス信号変換機を作ってみました。

モールス信号変換機


ダウンロード
※ Windows7 のみ対応
ソースが欲しいという方はこちら

英数字やひらがなカタカナを入力してボタンを押せば、
モールス信号に変換して一音ずつ再生されます。

Windows7のみ対応です。
このアプリでは、パソコン端末のビープ音を出すよう作ってあるのですが、
それがどうやら音を出せないOSがある(「解説」の項)ということなので、
自分で確かめれたWindows7のみ対応とさせていただきます。
これに気づいたのが、「アプリができた!」となった直後。。。
他のOSで、起動・画面表示はできても音声が再生されない、となったとしても非対応OSとして悪しからず。
申し訳ないです (;^_^A

モールス信号に関しては完全に素人なので、
実際に使われているモールス信号と大きな違いがあったとしても
許していただきたいです m(_ _)m
実際のモールス信号に触れたことがないので、
モールス符号の規則にただただ従ってプログラムを組みました。
もし要望があれば対応も検討しますが、
あくまで趣味の範囲で作ったものなので、義務感を持った対応は致しかねます。

また、プログラミングに関するお話は次の日記に書きましたので、興味ある方はご覧ください。

以下、同梱のreadme.txtにも記載していますが、使い方を含む諸事項をここでも記させていただきます。

*** ↓↓↓ ここから引用 ↓↓↓ ***

===============================
◆ 起動方法 ◆
===============================
モールス信号変換機.exeをダブルクリックで開いてください。


===============================
◆ 操作説明 ◆
===============================
【1.入力言語ラジオボタン】
入力言語を選ぶラジオボタンから適切なものを選んでください。
各ラジオボタンの意味は以下の通り
《1:欧文和文自動判定》
テキストボックスに入力された文字が英数字、一部記号のみ → 欧文と判定
英数字以外にひらがな等が入っている → 和文と判定
漢字が混ざっているなど、上記以外のケース → 判定不能
《2:英字のみの入力(欧文)》
欧文モールス信号として扱う。
扱えない文字(ひらがな等)があった場合はエラーメッセージ出力
《3:日本語のみの入力(和文)》
和文モールス信号として扱う。
テキストボックスに英字が入力されていた場合、
和文モールス信号中に英字が入力されたものとみなし、
全角の'('と')'が英字文字列の前後に挿入されます。
※ 入力文字列が全て英字の場合も'('と')'が挿入されます。

【2.文字入力テキストボックス】
テキストボックスに文字を入力して下さい。
入力可能な文字列は「◆ 入力可能文字 ◆」の項を参照して下さい。
なお、テキストボックス中での改行は以下の文字が入力されたものとして
取り扱っています(あくまでアプリの仕様として、です。)
欧文モールスモード → 空白スペース
和文モールスモード → 段落を意味する特殊文字'」'

【3.音の高さテキストボックス】
お好みの音の高さを入力して下さい。
32~32767Hz(ヘルツ)の間で設定できます。
不正値(数値変換不可の場合も含む)の場合、
変換ボタン押下時にデフォルト値(800Hz)に設定されます。
※ 端末音源を使用しています。OSによっては音が再生されない場合があります。

【4.音の長さテキストボックス】
一点のお好みの音の長さを入力して下さい。
1~1000ミリ秒の間で設定できます。
不正値(数値変換不可の場合も含む)の場合、
変換ボタン押下時にデフォルト値(100ミリ秒)に設定されます。
※ 端末音源を使用しています。OSによっては音が再生されない場合があります。
また、音の長さの規則性は以下に準じます。
http://www.benricho.org/symbol/morse.html より
別表第一号 モールス符号(第十二条関係)から
*** ↓↓引用ここから↓↓ ***
一 符号の線及び間隔
1 一線の長さは、三点に等しい。
2 一符号を作る各線又は点の間隔は、一点に等しい。
3 二符号の間隔は、三点に等しい。
4 二語の間隔は、七点に等しい。
*** ↑↑引用ここまで↑↑ ***

【5.変換ボタン】
文字入力後、変換ボタンを押してください。
変換が上手くいった場合、
右側のテキストボックスに変換後のモールス信号と発信中の内容が表示され、
音が順次再生されます。
変換に失敗した場合、変換ボタン下のところにエラーメッセージが表示されます。


===============================
◆ 入力可能文字 ◆
===============================
このアプリでは以下の文字が入力可能です。
・欧文モールス信号
英字:A-Z
数字:0-9
記号:. , ? ! - / @ ( ) " "" "(全角半角スペース)
※ 原則、大文字小文字全角半角区別なし(変換ボタン押下時に自動変換)

・和文モールス信号
ひらがな:あ-ん
カタカナ:ア-ン
英字:A-Z
数字:0-9
記号(欧文と共通): . , ? ! - / @ ( ) " "" "(全角半角スペース)
記号(和文のみ) : ヰ ヱ ゛ ゜ ー 、 」 ( )
※ 原則、大文字小文字全角半角区別なし(変換ボタン押下時に自動変換)

入力可能文字かの判別は以下のURLを参照しました。
よろしければ、そちらも参照してください。
・wikipedia より 「モールス符号」のモールス符号欄
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%BC%E3%83%AB%E3%82%B9%E7%AC%A6%E5%8F%B7#.E6.AC.A7.E6.96.87.E3.83.A2.E3.83.BC.E3.83.AB.E3.82.B9.E7.AC.A6.E5.8F.B7


===============================
◆ インストール ◆
===============================
インストールは不要です。
削除したい場合は、
モールス信号変換機のフォルダごとexeファイルを削除していただければ結構です。


===============================
◆ 参考・参照URL ◆
===============================
・wikipedia より 「モールス符号」
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%BC%E3%83%AB%E3%82%B9%E7%AC%A6%E5%8F%B7
・みんなの知識 ちょっと便利帳 より 「モールス符号 (モールス信号)《一覧》」
http://www.benricho.org/symbol/morse.html


===============================
◆ 免責事項 ◆
===============================
モールス信号変換機.exeおよびソースの二次配布を禁止します。
このソフト動作中に起きました、
何らかのトラブルや損失・損害等につきましては
一切責任を問わないものとします。

また、このアプリはあくまでプログラミングの趣味の範疇で作成されたものであり、
モールス信号に関しては全くの素人であるため、
実際に使用されるモールス信号と著しい違いがあったとしても
その責任は一切負わないものとします。

*** ↑↑↑ 引用 ここまで ↑↑↑ ***


とりあえず、楽しんでいただけたらと思います。

では。
[ 2015/09/30 23:11 ] プログラミング VB,C# | TB(0) | CM(0)

サクラエディタのGrep結果をエクセル用に整形する

仕事でサクラエディタのGrep結果をエクセルでまとめる必要が出てきたことがあったので、そのときのやり方を記しておきます。


【手順】
1.サクラエディタでGrepをかける
2.置換ダイアログを開き、正規表現機能をONにする
3.    を
         で置換(「すべて置換」)
4.置換後、Grep結果をクリップボードにコピーし、エクセルシートに貼り付け

【画像付き手順】
1.サクラエディタでGrepをかける
grep1.png

2.置換ダイアログを開き、正規表現機能をONにする
3.    を
         で置換(「すべて置換」)
Grep2.png
grep3.png

4.置換後、Grep結果をクリップボードにコピーし、エクセルシートに貼り付け
grep4.png


エクセルの各セル毎に値や文字列が貼り付けされるよう、Grep検索結果の所々をタブ(\t)に変換しているだけです。
なお、この置換で使っている正規表現についてはこちらを参照してください。
(置換前の正規表現で主に使っているのは「量指定子(数量子)」の項、置換後は「置換で使える参照」の項にあります)

誰かのお役に立てればと思います。
[ 2014/11/03 20:24 ] 雑記 | TB(0) | CM(0)

東京にやって来まして

転職して東京へやって来ました。


仕事内容は同じくプログラミングですが、将来的にスマホアプリを手掛けることを目標にしています。

今はまだこちらへ来て1ヶ月と浅いですが、それでもだいぶ東京の暮らしに慣れてきました。

来る前は大都会であちこち高層ビルが立ち並ぶ姿を想像していたのですが、住んでみると意外とそうではないことが分かりました。

高層ビルが密集している所はあるにはあるのですが、そこから電車で5分ほど離れると住宅地や下町が広がっている感じで、都会的なところと田舎的なところが混ざってるといった印象が強かったです。


まだ来たばかりでこれからいろいろあるとは思いますが、自分なりに頑張っていきたいと思います。

それでは!
[ 2014/11/03 14:45 ] 雑記 | TB(0) | CM(0)

小説「なばなの絵描き」  あとがき

小学生の弟を連れて、三重県にある「なばなの里」へ行ったときに思い浮かんだ作品です。
なので舞台のモデルはなばなの里です。
とても素敵なところなので、一度行ってみるといいと思います。

別の日。用でホテル滞在をしている際、時間が余ったので形にしてみました。

楽しんでいただけたらと思います。
[ 2014/09/15 19:01 ] 未分類 | TB(0) | CM(0)