2020/09/19

MPLAB X IDE の日本語が文字化けしないようにする方法

 MPLAB X IDEで開発していると、コメントアウトした日本語が文字化けしていませんか?

 

プログラミングをやっていると、開発途中に気付いたことや忘れてはいけないことがどうしても出てきますよね。そんな時、僕たちはコメントアウトで注記を記載していきます。

時間が経ってからプログラム全体を見返すと、もう忘れてしまっている設定やコマンドがいくつも出てきます。「コメントを書いておけばよかったな」なんて思いを何度も噛み締めていると、自然とコメントアウトを書いていくようになるはず。


もしも、大切なコメントが全部文字化けしていたら、落ち込みますよね。

僕の場合、MPLAB X IDEで組み込みプログラミングをやっていた折、1日かけて記載していった全てのコメントが文字化けしてしまいました。その日はとてもやる気が起きずに、そっと開発環境を閉じて、ぼんやりと空を眺めていようと心に誓いました。


文字化けが起きないように設定をしない自分に問題があるのは理解していますが、僕以外の方々にそんな悲しみを背負ってほしくないです。

なので、今回はMPLAB X IDEで日本語の文字化けが起きないようにする対策について紹介します。

 

MPLAB X IDE の日本語文字化け対策

  1. 新規にプロジェクトを作成する場合

    "File"タブにある"New Project"から新規にプロジェクトを作成していくと、以下の順序でダイアログボックスが進んでいきます。
    • Choose Project
    • Select Device
    • Select Header
    • Select Plugin Board
    • Select Compiler
    • Select Project Name and Folder

    プロジェクトの名前や保存先ディレクトリを設定する"Select Project Name and Folder"の段階で、日本語が文字化けしないエンコーディングを設定できます。

     "Encoding" を "Shift_JIS" へ切り替えてから(画像だと赤枠部)、finishして下さい。



  2. 既存のプロジェクトの場合

    Projectのプロパティを選択し、"Project Prperties"を開いてください。

    "General"の項目を選択して下さい。

    "Encoding" を "Shift_JIS" へ切り替えてから(画像だと赤枠部)、OKして下さい。





  3. プロジェクト作成の度にやりたくない場合

    "Tools"タブの"Options"を選択して下さい。

    開いたOptionsフォームで"Embedded"を選択し、"Generic Settings"タブを選択して下さい。

    "Default Charset"を"Shift_JIS"へ切り替え、OKして下さい。



 

まとめ

今回は MPLAB X IDE でコーディングをしていく際、日本語が文字化けしてしまう問題への対策について紹介しました。

日本語表記が出来るCharset "Shift_JIS"です。

新規にプロジェクトを作成する場合、プロジェクト名や保存先ディレクトリを決定する"Select Project Name and Folder"の段階で"Encoding"へ "Shift_JIS" を設定します。

既存のプロジェクトの場合、Projectのプロパティを開き、"General"の項目にある"Encoding"へ"Shift_JIS"を設定します。

Charset をデフォルトで"Shift_JIS"にする場合、"Tools"タブから"Options"を開き、"Embedded"の"Generic Settings"タブにある"Default Charset"を"Shift_JIS"にします。


これでもう日本語が文字化けしなくなります。

いつ見返しても良いように、大切なコメントをたくさん書き入れましょうッ!

 

2020/09/16

C# でシリアル通信! オブジェクトの追加を忘れずにねッ

 「あちこちのサイトでserialPort1って変数が急に出てきているけど、どうして?」

 

最近、C#でプログラミングを行うのが多くなってきました。その折、パソコンとある機器を接続する為にシリアル通信を行わなければならなくなりました。

色々と機能を使用したいなって思い、C#でシリアル通信のプログラムをコーディングしていく最中に呟いてしまったのが、最初の言葉です。

 

現代は物とインターネットを繋ごうって言うIoTの時代です。IoTよりも古いRS-232Cなんて、もはや化石と言っても良いレガシーな話です。とはいえCOM番号を調べれば単純に接続出来るシリアル通信は、機器の機能として持っていれば便利です。。だから、産業機器を扱う工場系ではいまだに使われているところも多いそうです。

 

かくいう私も必要になってしまい、色々と調べ上げてC#でシリアル通信を行いました。せっかくなので調べ上げた成果をこの場で紹介しようと思います。

 

C#でシリアル通信を行うには、オブジェクトを追加しよう


フォームのデザインを行うタブへ切り替え、ツールボックスの検索で"serialPort"と入力して、検索を実施して下さい。

 

 

 

 

 

 

検索を行うと「すべてのWindowsフォーム」欄に"SerialPort"が出てきますので、これをダブルクリックしてフォームへ追加して下さい


フォーム下部に表示された"serialPort1"がシリアル通信を行う為に追加されたオブジェクトです。この"serialPort1"に対して接続に必要な設定を行う必要があります。


 

 

ではプログラミングに移りましょう。Let's start Coding!!


シリアル通信の設定

 COMポートを用いたシリアル通信では、大まかに以下の設定を行う必要があります。

  • COM Ports
  • BaudRate
  • DataBits
  • Parity
  • StopBits 


パソコンと接続したい機器の通信仕様を確認ください。

今回、紹介するプログラムの例では以下のようにしようと思います。

  • COM Ports COM3
  • BaudRate 9600
  • DataBits 8
  • Parity None
  • StopBits 1

 

実際のコーディングはこちらです。ボタンクリックなどから呼び出します。

private void SerialPortOpen()
{
serialPort1.BaudRate = 9600;
serialPort1.Parity = Parity.None;
serialPort1.DataBits = 8;
serialPort1.StopBits = StopBits.One;
serialPort1.PortName = "COM3";
serialPort1.Open();
if( serialPort1.IsOpen != true ) { MessageBox.Show("接続失敗"); }
}
 

ではさっそく、一つずつ解説していきます。

  • serialPort1
    フォームに追加したオブジェクトの名前です。追加したオブジェクトの中身を設定していますので、フォームに追加したオブジェクト名と一致させて下さい。

  • serialPort1.BaudRate
    BaudRate の設定項目です。整数値で指定してください。

  • serialPort1.Parity
    Parity の設定項目です。この項目は定数があらかじめ設定されているので、そちらを利用したほうが良いです。定数は以下となります。
    • none:System.IO.Ports.Parity.None
    • 奇数:System.IO.Ports.Parity.Odd
    • 偶数:System.IO.Ports.Parity.Even
    • mark:System.IO.Ports.Parity.Mark
    • スペース:System.IO.Ports.Parity.Space

  • serialPort1.DataBits
    DataBits の設定項目です。整数値を指定してください。

  • serialPort1.StopBits
    StopBits の設定項目です。この項目は、Parity同様に定数があります。定数は以下の通り。
    • none:StopBIts.None
    • 1:StopBits.One
    • 1.5:StopBits.OnePointFive
    • 2:StopBits.Two

  • serialPort1.PortName
    シリアル通信を行うCOM番号の設定項目です。文字列で指定します。

  • serialPort1.Open();
    シリアルポートをオープン状態にします。

  •  if( serialPort1.IsOpen != ture )
    serialPort1.IsOpen はシリアル接続の状態をbool型で返してくれます。
    • 接続状態:true
    • 接続失敗:false


最後に

無事に接続出来ましたか?

今回はC#によるパソコンと機器のシリアル通信の方法について紹介しました。

C#によるシリアル通信ではまずフォームにシリアル通信のオブジェクト"serialPort"を追加する必要があります。 そしてオブジェクト"serialPort"に対し、設定を行います。

行うべき設定は①COM Ports, ②BaudRate, ③StopBits, ④Parity, ⑤DataBits。設定する際には型を揃える必要がありますが、あらかじめ定数が設定されている項目もあるので、そちらを利用したほうが間違えが起きません。

シリアル通信の設定を終えたら、Open()関数でCOMポートを接続状態にします。本当に接続出来たかな? と確認する場合にはIsOpenで調べれば true or false で判断が出来ます。


絶対にオブジェクト"serialPort"をフォームへ追加して下さい。さもないと私のように頭をひねる展開が皆さんに訪れてしまうかもしれません。

 

最後まで読んでいただき、有難う御座いました。

 

2020/09/13

C# のlistsoxから色々な値を取得する4つの方法

 久しぶりのプログラミングをしていたら、忘れる事ってありませんか?

 

僕は良くあります。「これ何だったかな? 少し前に調べたんだけれど……」ってやるたびに首を傾げます。

日々、プログラミングに勤しんでいる方なら、「おいおい、そんなの基本だろう?」と思うかもしれませんが、時間を置いてしまうと人はすぐに忘れてしまいます。

 

そんな訳で、今回はC#のlistbox から色々な値を取得する4つの方法について紹介します。

 

前提条件ですが、

  • listboxの名前は"listbox1"とする
  • MessageBoxに出力できる場合は出力可能な書式とする

以上を踏まえようと思います。



①インデックス番号を取得する場合

戻り値

選択されている場合、一番上の項目ならば 0 が返り、その下ならば 1 となります。選択されていないと -1 が戻ります。

コード

MessageBox.Show(listbox1.SelectedIndex.ToString());


②選択されている項目を取得する場合

戻り値

選択されている項目をObject型で返し、選択されていないと NULL となります。

仮にToString()でString型にした場合、項目が選択されていればテキストに設定した値が取得できますが、選択されていないとErrorとなります。

コード

MessageBox.Show(listbox1.SelectedItem.ToString());

 

③選択されている項目の値を取得する場合

戻り値

DataSourceプロパティに設定しているならば、選択されている項目のValueMemberプロパティで指定した値を返します。

コード

listbox1.SelectedValue;


④選択されている項目のテキストを取得する場合

戻り値

選択されている項目のテキスト値をString型で返し、選択されていない場合は未定義が返ります。

コード

Messagebox.Show(listbox1.Text);


まとめ

今回はC#でlistbox から色々な値を取得する方法について紹介しました。

C#のlistbox ではインデックス番号を取得する際には"SelectedItem"を使用し、選択されている項目を取得する場合は"SelectedItem"を使います。項目の値を取得するには"SelectedValue"項目のテキストを取得するには"Text"とします。

"SelectedItem"と”Text"は項目が選択されているならば同じ値を取得できますが、選択されていない状態では"SelectedItem"はNULLとなり、"Text"では未定義となります。

2020/09/03

ライティングってどうやるの? ライターが気を付けるべき書き方の3つ基礎

「サイト作りを始めたいけれど、どういう文章を書けば良いのか分からない」

「この商品を皆に伝えたいけれど、どうすればいいのかな?」

 

いざ文章を書き始めようと思った時、このような思いに捕らわれてしまって、なかなか書き出せずにいませんか?

今日、Webにはたくさんの記事があります。その中で自分の書いた記事を見つけてもらえたのならば、最後まで読み切ってほしいと思うのは僕だけじゃないはず。


ということで、今回はライティングをする上で身に付けておくべき3つの基礎について紹介していこうと思います。


ライティングの基礎

Step1.記事構成の大切さ

記事構成とは記事全体のストーリーです。記事構成が良ければ伝えたい内容がボヤけずに内容を伝えていけますので、最後まで読んでもらいやすくなります。

逆に、記事構成が破綻してしまっていたら、どのようなテクニックを取り入れようとも無意味なものになってしまいます。読み手は飽きてしまったり、退屈になったりして、読むのをやめてしまうかもしれません。


さて、それでは記事構成について詳しく記載していきます。

記事構成の考え方としてよく取り入れられるのは、能の世界で用いられる「序破急や、漫画や小説などで使用する「起承転結です。どちらも学生時代に国語の授業で耳にしましたね。

「起」は導入文、「承」は記事全体の概要を説明し、「転」は結論と詳細、「結」は全体のまとめという意味になります。

  • 起:キャッチーな文章で読み手へ手短に概要を伝える導入文
  • 承:記事全体の概要説明。場合によっては結論も記載する
  • 転:結論と根拠
  • 結:概要と結論を結びつけて記事をまとめる

記事構成を前提にしながら文章をまとめていけば、読みやすいライティングになっていきます。

 

記事構成の「起承転結」を考える方法ですが、記事にしてみようと思う内容に対して情報収集をすることで決定していきます。

書籍やWeb等で情報を収集していくことで、読み手が何を求めているのか? 何を知りたいのか? といったニーズを把握できます。

さらにWebの場合、検索に関連する用語が自動で表示されますよね。例えば「ガラス」で検索をかけてみると

  • ガラス 成分
  • ガラス 液体
  • ガラス 原料
  • ガラス バーナー

"成分"や"原料"等、理化学的な情報で検索をかけているのが分かります。ガラス工芸で検索かける人って少ないのね……

この関連する用語を含めながら記事にしたい内容について調べていけば、自然に結論と根拠が明確になり、「記事にしてみようと思う内容→結論と根拠」の流れが出来上がり、ライティングをスムーズに進めていけます。


Step2.タイトルは読み手の気持ちになる

タイトルとはご存知の通り、記事の見出しです。僕たちがWebで検索をかけた時、記事の内容よりも先にタイトルを目にしてクリックしていますよね。なので、タイトルが与える印象ひとつで記事を読んでもらえるかどうかが変わってきてしまいます。

読み手の多くは何かしらの悩みや考え事を解決しようとして、Webで検索を行います。その為、タイトルは「この記事だったら分かるかな」と感じられるキーワードを使用した方が目に止まりやすいです。

タイトルに盛り込むキーワードの位置はなるべく左側へ。Webで日本語を表記する際、左から右へと並んでいるので、目の始点は常に左側に位置しています。よって左側にキーワードを置いた方が、特定の語句を検索している読み手に対して有利ですよね。

とはいえ、たくさんのキーワードを並べてタイトルを長くしたら逆効果です。一度に視認できる文字数には限りがあります。タイトルは記事の概要を30字程度の文字数に要約する気持ちでつけていきましょう。


Step3.SEO

SEOとは検索エンジン最適化(Search Engine Optimization)の頭文字を取った略語です。

検索エンジンが適正に評価し理解出来るように自分の記事を最適化することで、GoogleやYahoo、Bingなどの検索エンジンでキーワードが検索された際、検索結果の上位へ表示されるようにします。

SEO対策をする上で最も重視するべきポイントは「読み手へ価値ある情報を伝えつつ、検索エンジンが正しく理解出来る内容」という条件を満たした記事を作成することです。

特定のキーワードを記事内に多用したり、タイトルや見出しに取り入れたりして重要なキーワードだと検索エンジンに理解してもらう必要がありますが、読み手が退屈にならない程度に抑える必要があります。


まとめ

今回はライティングの基礎について記事にしました。

ライテイングにおいて重要なのは情報収集をし、結論と根拠を踏まえた上で「起承転結」に沿った記事構成を組み上げること。関連する用語についても調べておくことで、内容の幅を広げられます。

記事のタイトルへ入れるキーワードはなるべく左側へ。読み手がパッと見て把握出来るように30字程度とし、表現は魅力的に感じられるようにします。

記事とタイトルは検索エンジンが理解出来るにSEO対策をする必要があります。

MPLAB X IDE の日本語が文字化けしないようにする方法

  MPLAB X IDE で開発していると、 コメントアウトした日本語が文字化け していませんか?   プログラミングをやっていると、開発途中に気付いたことや忘れてはいけないことがどうしても出てきますよね。そんな時、僕たちはコメントアウトで注記を記載していきます。 時間が経って...