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"をフォームへ追加して下さい。さもないと私のように頭をひねる展開が皆さんに訪れてしまうかもしれません。

 

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

 

0 件のコメント:

コメントを投稿

エラーコード 0089002D を解決する方法【 TVチューナー:PIX-DT012 】

こんにちは、Akira(Type-EDGE)です。 先日、パソコンに接続したテレビチューナーが正常に動作しなくなってしまった為、修理してほしいという案件をいただきました。 「パソコンでテレビを観る人って、本当に存在するのですね」と本音を漏らしかねましたが、最終的に映像と音声を出力...