ポートの解放と閉鎖
(2016/12/03 0:31:43 created.)
C# で RS-232C 通信をおこなうには、System.IO.Ports.SerialPort クラスを使用します。インスタンス生成時または生成後にポート名やボーレートなどを指定します。その後、Open() メソッドでポートオープン、Close() メソッドでポートクローズをおこないます。ただし、SerialPort クラスは IDisposable インターフェースを実装しているクラスでもあるため、下記コードのように using を使用することで、Close() メソッドを省略することもできます。どちらにしろ、ポートオープン中は他のアプリケーションからアクセスできなくなるため、忘れずにポートを閉じるようにしましょう。
Program.cs
namespace Tips_Serial
{
using System;
using System.IO.Ports;
using System.Text;
class Program
{
static void Main(string[] args)
{
using (var serial = new SerialPort()
{
PortName = "COM11",
BaudRate = 9600,
DataBits = 8,
Parity = Parity.None,
StopBits = StopBits.One,
DtrEnable = false,
RtsEnable = false,
ReadBufferSize = 256,
WriteBufferSize = 256,
Encoding = Encoding.GetEncoding("Shift_JIS"),
})
{
try
{
// ポートオープン
serial.Open();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
finally
{
Console.WriteLine("{0} ポートを" + (serial.IsOpen ? "開きました。" : "開けませんでした。"), serial.PortName);
}
Console.ReadKey();
}
}
}
}
ポートが既に他のアプリケーションによって使用されているとき、UnAuthorizedAccessException 例外が発生するため、try-catch 構文で適切に対処しておいたほうが良いでしょう。
Tweet