シリアルポート(COM)書き込み動作のロールアップで.NET

最近、3通りの方法でまとめシリアル(COM)の読み取りおよび書き込み操作:
最初の方法は、マイクロソフト.NET2.0がシリアル制御、SERIALPORTクラスを立ち上げ使用することですが、彼らは.NET2.0ことができる前にそれがでなければならない
第二の方法をされて難易度は高いが、APIとのシリアル通信を記述しますが、簡単に自分の希望、様々な機能を達成できる
3つの方法のを元でのVisual Studio 6.0 MSCommコントロールを使用している、これは最も簡単で便利な方法であるが、登録が必要です

各アプローチの使用についての以下の詳細な解析、及びダウンロードの例を提供します。


いくつかの方法A.まず:
.NET 2.0は、新しいSERIALPORTオブジェクトを作成することによって、我々は、.NETプログラムでシリアルポートを制御することができ、名前空間System.IO.PortsにSERIALPORTクラスを見つけ、シリアル通信機能をサポートしています通信の全体のプロセス。

(1)。項目で説明
シリアル通信を、特性SERIALPORTクラスを設定することによって行うことができる、いくつかのパラメータを設定する必要があります。
SERIALPORT属性が含まれます:
.PortNameシリアル名、COM1、COM2とのように。
シリアル通信、シリアル通信のボーレートの速度で.BaudRateボーレート、両方同じ必要、他の非PCシステムPCとの接続は、一般的に、ボーレートは、非PCシステムによって決定された場合。
.Parityパリティ。パリティは、列挙値を選択することができる
.DataBitsデータビット
.StopBitsストップビット、列挙値ストップビット
、.Handshakeハンドシェイクを、すなわちデータフロー制御、列挙値ハンドシェイク

(2)は開閉ポート
SERIALPORTオブジェクトを作成した後の特性は、シリアルポートを設定し、シリアルを開くオープン()メソッドであること。データの読み出し及び書き込みが完了した後、(閉じる閉鎖するシリアルポートを介して)方法。
経験によると、一部のシステムでは、シリアルポートを開いた後、あなたもそうデータを読み書きするよう、RtsEnableセットにTrueに必要な、または適切にデータを読み書きすることはできません。

(3)リード-ライトデータ線は
、それが改行復帰後に遭遇するまでReadLineメソッド()メソッドがブロックされています。あなたは改行を発生していない場合は、データを読み出す場合、その後、ReadTimeout時間を待った後、TimeoutExceptionをスローします。デフォルトでは、InfiniteTimeoutにReadTimeout。データの新しい行が到着するまで、このように、ReadLineメソッドはブロックされた状態になっ。
WriteLineメソッド()メソッドは、他の当事者はタイムリーなデータを受信しない場合、それは異常なTimeoutExceptionが発生します、ブロックされています。
ためReadLineメソッド()メソッドとWriteLine()メソッドはブロックされ、そしてプログラムは、SERIALPORTシリアル通信を使用して読み取り、一般に、書き込み時には、プログラムが応答しないために起因詰まりを回避するために、別のスレッド処理に引き渡さなければなりません。

バイトまたは文字データを読み書きする(4)
データを読み取るために、バイトまたは文字データのためのread()メソッドが、この方法は、結果として、リード・パラメータを格納するデータバイトまたは文字列を必要と実際に読み取らが返されバイトまたは文字の数。
write()メソッドを使用してデータの書き込みは、この方法は、他の当事者にバイト配列、または文字データ列を送信することができます。

(5)イベント
SERIALPORTはDataReceivedイベントを提供します。データが入力されると、イベントがトリガされます。
トリガイベントは、データが到着したときに、イベントが二次スレッドでトリガされるオペレーティング・システムによって決定されます。優先順位のワーカースレッドが比較的低く、したがって、データの各バイトが到着することを保証することはできませんが、イベントがトリガされます。

 


B. 2つの方法:
.JustinIO.cs、シリアルリードとライトタイプのオンラインコレクション、非常に良いとの(1)

 

この例では、私は小さなプログラムを読んで行うキャプチャカードのシリアルポートで、JustinIOを使用します

。(3)奇妙な現象の
Iは、書き込みJustinIO.csしたいシリアルポート、キャプチャカードアプレット
開発環境:Win2003の、.NET2.0、COM1シリアルポート

奇妙な現象が発生します。
プログラムの書き込みが自分のブートを実行し、データを受信していない、送った後
、しかし、「シリアルデバッグアシスタント2.0」オープンCOM1ポート、送信を使用すると、通常の受信!
再び書き込むためのプログラムを実行し、送信し、正常な受信!
それはちょうどその時のマシン、あなたは「シリアルデバッグアシスタント2.0」とシリアル通信を使用する必要があり、私のプログラムが正常に通信できない、です!〜が
上?つもりはどのように理解していなかった
ランタイムjustio使用8bitが、7ビットがセット間違っているシリアル・データ・ビットを追跡するために使用。もともとコードで設定されています。

 

C. 3つの方法:
使用MSCommコントロール:
(1)コピーMscomm.srg、MSCOMM32.OCX、システムフォルダに三つのファイルMscomm32.dep。MSCommコントロールが許可されるべきであり、レジストリに登録されている「ライセンス」のライセンスを使用する必要がある、という注意、次のステップは、サインアップすることです。>「ファイル名を指定して実行」してから(操作はCドライブ、WIN2000にインストールされていることを仮定して)記入:.ます。Regsvr32 C - 、OCXコントロールを登録する「スタート」をクリックするには、Windowsます。regsvr32下登録ツールとの理由、(2)について:\ WINNT \ SYSTEM32 \ MSCOMM32.OCX
(3)レジストリ内の手で新しい主キー項目を作成するには:「スタート」に最初のクリックを- >「ファイル名を指定して実行」し、レジストリを開くには、コマンドregeditを記入、HKEY_CLASSES_ROOT \ライセンスを探します。ここで主キーが追加さ:4250E830-6AC2-11cf-8ADB-00AA00C00905とするコンテンツ:kjljvjjjoquqmjjjvpqqkqmqykypoqjquounを
(4)Microsoft通信コントロールツールボックスで、「追加項目」COMコンポーネント、バージョン6.0の参照を追加します。このような使用のMSCommコントロールは、シリアルポートを操作することができます!広州サロゲート[電気13802269370】  電気13802269370コンサルティング北京サロゲート   サロゲートを【マイクロ13802269370] +

おすすめ

転載: www.cnblogs.com/bbc2020/p/12502388.html