for WPF developers
Home Profile Tips 全記事一覧

データを送信する

(2016/12/03 0:35:38 created.)

System.IO.Ports.SerialPort クラスでデータを送信するときは Write() メソッドなどを使用します。

Program.cs
  1. namespace Tips_Serial
  2. {
  3.     using System;
  4.     using System.IO.Ports;
  5.     using System.Text;
  6.  
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             using (var serial = new SerialPort()
  12.             {
  13.                 PortName = "COM11",
  14.                 BaudRate = 9600,
  15.                 DataBits = 8,
  16.                 Parity = Parity.None,
  17.                 StopBits = StopBits.One,
  18.                 DtrEnable = false,
  19.                 RtsEnable = false,
  20.                 ReadBufferSize = 256,
  21.                 WriteBufferSize = 256,
  22.                 Encoding = Encoding.GetEncoding("Shift_JIS"),
  23.             })
  24.             {
  25.                 try
  26.                 {
  27.                     // 受信イベントを購読する
  28.                     serial.DataReceived += OnReceived;
  29.  
  30.                     // ポートオープン
  31.                     serial.Open();
  32.                 }
  33.                 catch (Exception ex)
  34.                 {
  35.                     Console.WriteLine(ex);
  36.                 }
  37.                 finally
  38.                 {
  39.                     Console.WriteLine("{0} ポートを" + (serial.IsOpen ? "開きました。" : "開けませんでした。"), serial.PortName);
  40.                 }
  41.  
  42.                 Console.ReadKey();
  43.             }
  44.         }
  45.  
  46.         /// <summary>
  47.         /// データ受信イベントハンドラ
  48.         /// </summary>
  49.         /// <param name="sender">イベント発行元</param>
  50.         /// <param name="e">イベント引数</param>
  51.         private static void OnReceived(object sender, SerialDataReceivedEventArgs e)
  52.         {
  53.             var serial = sender as SerialPort;
  54.             var data = serial.ReadExisting();
  55.             Console.WriteLine(data);
  56.  
  57.             // データ送信
  58.             serial.Write(data.ToUpper());
  59.         }
  60.     }
  61. }

上記の例では、受信したデータを元に、英字をすべて大文字にしたデータを Write() メソッドで送信しています。