.NET2.0からはSerialPortをつかえばよろしい
以下参考URL
- http://www.microsoft.com/japan/msdn/netframework/skillup/core/article2.aspx
- ここのサンプルがいい感じ
- http://d.hatena.ne.jp/Kazzz/20051109
- http://www.robotsfx.com/robot/robohow/RoboHow60/RoboHow60.html
- http://plaza.rakuten.co.jp/edevice/diary/200609280000/
引っかかりやすいのは、以下のような内容
SerialPortクラスのDataReceivedイベントは内部では非同期コールバックを使用しており、イ ベントハンドラはセカンダリスレッドからコールバックされるので、 SerialPortクラスをコントロールとして、Formや他のコントロール上で使用する場合は、 適切なInvokメソッドやMethodInvokerクラスを使用して、 UIスレッドと同期する必要があることに注意する必要がある
次のDtrEnable、RtsEnable はRS-232Cを使用するにあたって必要となる設定です。 これらはRS-232CのDTR、RTSと呼ばれる信号線に対応しています。 DTRはData Terminal Readyの頭文字で、 データを受信する準備ができたことを相手機器に伝えます。 RTSはRequest To Sendの頭文字で、 相手機器にデータを送信していいことを伝えます。 ただ、これらは常に必要となるわけではありません。 DTR、RTSなどの信号線をどのように扱うかは相手機器次第となりますので、 それにあわせる必要があります。 上述したようなVirtual PCの名前付きパイプを使ったテスト環境ではDtrEnable、 RtsEnableともにTrueとしてやらないと正常に通信することができませんでした。 しかし、筆者が所有しているオムロン社製のモデムではDtrEnableのみを Trueとすることで通信を行うことができました。