SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C#で学ぶインターネット時代のシリアル通信

C#で学ぶインターネット時代のシリアル通信(前編)

シリアル通信の概要とC#を使ったシリアル通信の実装


  • X ポスト
  • このエントリーをはてなブックマークに追加

C#によるシリアル通信の書き方

 実際にC#でプログラムを作成する場合の書き方を説明します。

[リスト1]Form1.cs(tyuusenプロジェクト)抜粋
//送信処理
using System.IO.Ports;
//SerialPortオブジェクトの生成(1)
SerialPort port=new SerialPort("COM1",9600,Parity.None,8,StopBits.One);
//通信の設定(2)
port.DtrEnable = true;
port.RtsEnable = true;
//通信開始(3)
port.Open();
//送信(4)
port.Write("9\n");
//クローズ(6)
port.Close();
[リスト2]Form1.cs(dispプロジェクト)抜粋
//受信処理
using System.IO.Ports;
Byte[] data=new Byte[100];
//SerialPortオブジェクトの生成(1)
SerialPort port=new SerialPort("COM1",9600,Parity.None,8,StopBits.One);
//通信の設定(2)
port.DtrEnable = true;
port.RtsEnable = true;
//通信開始(3)
port.Open();
//受信(5)
port.Read(data,0,port.BytesToRead);
//クローズ(6)
port.Close();	

 VS2008でプログラムを組む場合、標準でシリアル通信関数が組み込まれています。通信方法はファイルのオープン/クローズに似ています。

 まず、ドライバーに対してシリアル通信を始めたい趣旨を伝えます。これがオープンです。通信が終わると、クローズ処理です。この間のデータがケーブル内で送受信されます。

リストの解説

 もう少しリストの内容を細かく説明します。

 まず、(1)は通信をオープンするための設定です。SerialPortコンストラクタの構文は、次のとおりです。

[構文]SerialPortコンストラクタ
public SerialPort (string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits)
SerialPortコンストラクタの説明
引数 概要
portName ポート名(COM1、COM2など)
baudRate ボーレート(1200 2400 4800 9600 19200 38400 115200など)
parity チェックコード(Even None Oddなど)
dataBits 一個の文字を送るときのビット数(8か7)
stopBits ストップビット(One Twoなど)

 次に、DtrEnableプロパティでDTR(Data Terminal Ready)データ端末レディの、RtsEnabledプロパティでRTS(Request To Send)送信要求の信号を送信します(2)。DTRは「端末が受信準備ができました」という、RTSは「送る準備ができました」という信号です。

 これで通信の前準備ができましたので、Openメソッドで通信を開始します(3)。

 (4)は送信命令、\nはリターンコードで一行の終了を表します。(5)は受信命令です。

 (6)でクローズ命令を出して終了です。

 送るたびに毎回オープン・クローズを行っても良いですし、プログラム立ち上げ時にオープンしておき、内部で送受信を行い、プログラムが終わるとき、クローズしてもかまいません。

まとめ

 シリアル通信について、プログラム作成側から見たイメージを説明させていただきました。一文字(8ビット)を8本の線を使って同時に送るものがパラレル通信、1本の線で1ビットずつ決められた速さで8ビット分送るのがシリアル通信です。このパラレル通信、シリアル通信というのはよりハードに近い部分の通信形態につけられた名前です。この通信形態にのっとって、片方ずつ通信を行うものが、半二重通信、同時に通信を行うものが、全二重通信と言われています。 

 以上、今回はシリアル通信の概要からC#を使ったシリアル通信の実装についてまでを解説しました。引き続き後編では、シリアル通信を使った具体的なアプリケーションを紹介します。

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
C#で学ぶインターネット時代のシリアル通信連載記事一覧
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 横塚 利津子(ヨコツカ リツコ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3785 2009/04/27 14:59

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング