|
|||||
<このサンプルの概要> COMポート(RS232C/シリアル)を使用して電文の送受信をするC#/VB.NETのサンプルソースです。 COMポート(RS232C/シリアル)のオープン手順は以下の通りです。 1.シリアルポート指定 2.シリアルポートの通信速度指定 3.シリアルポートのパリティ指定 4.シリアルポートのビット数指定 5.シリアルポートのストップビット指定 6.シリアルポートのオープン COMポート(RS232C/シリアル)の送信手順は以下の通りです。 1.送信電文作成 2.COMポートにデータ送信 COMポート(RS232C/シリアル)の受信手順は以下の通りです。 1.COMポートの受信待ち 2.COMポートからデータ受信 ちなみにCOMポートのCTSやDSRを確認したい時は以下のようにします。 If SerialPort1.CtsHolding = True Then 'CTSがON If SerialPort1.DsrHolding = True Then 'DSRがON また、COMポートのDTRやRTSを設定したい時は以下のようにします。 SerialPort1.DtrEnable = True 'DTRをON SerialPort1.RtsEnable = True 'RSTをON RS232C関係のその他のサンプルソースやツールはこちらです。 このサンプルの通信テストでもこちらのツールを使用しました。 通信サンプルやツール(RS232C TCP/IP UDP/IP) ' VB.NETのサンプル ' SerialPortコントロールをフォームに貼り付けています Public Class Form1 Private Sub Form1_Load( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load ' シリアルポートのオープン SerialPort1.PortName = "COM11" ' シリアルポートの通信速度指定 SerialPort1.BaudRate = 9600 ' シリアルポートのパリティ指定 SerialPort1.Parity = IO.Ports.Parity.None ' シリアルポートのビット数指定 SerialPort1.DataBits = 8 ' シリアルポートのストップビット指定 SerialPort1.StopBits = IO.Ports.StopBits.One ' シリアルポートのオープン SerialPort1.Open() End Sub Private Sub Form1_FormClosed( _ ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosedEventArgs) _ Handles Me.FormClosed ' シリアルポートのクローズ SerialPort1.Close() End Sub Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click ' シリアルポートにデータ送信 Dim dat As Byte() = _ System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes("abcあいう") SerialPort1.Write(dat, 0, dat.GetLength(0)) End Sub Private Sub SerialPort1_DataReceived( _ ByVal sender As System.Object, _ ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _ Handles SerialPort1.DataReceived ' シリアルポートからデータ受信 Dim dat As Byte() = New Byte(SerialPort1.BytesToRead - 1) {} SerialPort1.Read(dat, 0, dat.GetLength(0)) MessageBox.Show( _ System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(dat)) End Sub End Class // C#.NETのサンプル // SerialPortコントロールをフォームに貼り付けています public partial class Form1 : Form { private void Form1_Load( object sender, EventArgs e) { // シリアルポートのオープン serialPort1.PortName = "COM11"; // シリアルポートの通信速度指定 serialPort1.BaudRate = 9600; // シリアルポートのパリティ指定 serialPort1.Parity = System.IO.Ports.Parity.None; // シリアルポートのビット数指定 serialPort1.DataBits = 8; // シリアルポートのストップビット指定 serialPort1.StopBits = System.IO.Ports.StopBits.One; // シリアルポートのオープン serialPort1.Open(); } private void Form1_FormClosed( object sender, FormClosedEventArgs e) { // シリアルポートのクローズ serialPort1.Close(); } private void button1_Click( object sender, EventArgs e) { // シリアルポートにデータ送信 Byte[] dat = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes("abcあいう"); serialPort1.Write(dat, 0, dat.GetLength(0)); } private void serialPort1_DataReceived( object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { // シリアルポートからデータ受信 Byte[] dat = new Byte[serialPort1.BytesToRead]; serialPort1.Read(dat, 0, dat.GetLength(0)); MessageBox.Show( System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(dat)); } } |