通常、C# でシリアル ポート通信を実装するには 4 つの方法があります:
最初: MSCOMM コントロールを使用する、これが最も簡単で便利な方法です。ただし、この機能を自由に制御することは困難であると同時に、この制御はシステム自体に含まれていないため、登録する必要がありますが、この記事では扱いません。 http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=320 をご覧ください。この著者は非常に熱心で、私は彼に電子メールを送ったことがある。
2 番目: Microsoft は、.NET の P/Invoke 呼び出しメソッドに基づいて実装された新しいシリアル ポート コントロールを開始しました。詳細については、Microsoft の Web サイト http://msdn.microsoft.com/msdnmag/ を参照してください。 issues/02/ 10/NETSerialComm/default.aspx にアクセスすると、詳細情報に簡単にアクセスできます。
3 番目: サードパーティのコントロールを使用するだけですが、通常は料金を支払う必要がありますが、これは現実的ではないため考慮されません
4 番目: API を使用して自分でシリアル ポート通信を作成します。これはより困難ですが、私たちにとっては、欲しい様々な機能を実現するのに便利です
この記事では4番目の方法でシリアル通信を実現していますが、自分で書くのではなく、海外ネットユーザーの既製のパッケージ化されたクラスライブラリを使用していますが、関数は私たちのものより単純です。それで十分です。
端末のテキスト メッセージ操作全体で、シリアル ポートとの通信に使用される関数は 4 つだけです。つまり、シリアル ポートのオープン、書き込み、読み取り、クローズです。以下は、クラス ライブラリの 4 つの関数の定義です:
シリアル ポートを開く:
関数のプロトタイプ: public void Open()
説明: プリセット ポートを開く
例:
using JustinIO; static JustinIO.CommPort ss_port = new JustinIO.CommPort(); ss_port.PortNum = COM1; //端口号 ss_port.BaudRate = 19200; //串口通信波特率 ss_port.ByteSize = 8; //数据位 ss_port.Parity = 0; //奇偶校验 ss_port.StopBits = 1;//停止位 ss_port.ReadTimeout = 1000; //读超时 try { if (ss_port.Opened) { ss_port.Close(); ss_port.Open(); //打开串口 } else { ss_port.Open();//打开串口 } return true; } catch(Exception e) { MessageBox.Show("错误:" + e.Message); return false; }
シリアルポートを書き込みます:
関数プロトタイプ: public void Write(byte[] WriteBytes)
WriteBytes は、通信のためにバイト配列に変換する必要があることに注意してください
例:
ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMIr")); //携帯電話のブランドを取得します
シリアルポートを読み取ります:
関数プロトタイプ: public byte[] Read (int NumBytes)
NumBytes キャッシュ番号を読み取ります。実際のアプリケーションでは、文字変換が必要であることに注意してください。
string return = Encoding.ASCII.GetString (ss_port.Read (128)); // 128 バイトのバッファを読み取ります
シリアルポートを閉じます:
関数プロトタイプ: ss_port.Close()
例:
ss_port.Close( );
シリアル通信には長さと内容が含まれるため、ここではこれについてのみ説明します。
上記で、端末のテキスト メッセージングに必要なさまざまな原始的なテクノロジを理解しました。次はそれを試してみましょう。
りー