SerialPortコントロールについて への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2014/10/31 15:51:23
> 正しくは、VBで用意されているSerialPortコントロールは、
細かいことですが、SerialPort はコントロールではなく、コンポーネントです。
System.Windows.Forms.Control 継承クラスではなく、
System.ComponentModel.Component 継承クラスなので。
> COMポートを利用した通信ができる…という理解が正しいのでしょうか?
COMポートの指定は必須ですよね。そしてその上で、
「シリアル通信」を行うための代物かと思います。
指定した COMポートが VCP なのか物理なのかは関係ないですし、
物理だとして、その結線が DSub-9 なのか DSub-25 なのか、
あるいは PCMCIA、IEEE1394、USB、IrDA などであったのかなどは
特に意識する必要はありません。"COM1"、"COM3" などといった
マッピングさえ行われるのであれば。
> USBやマウスなどの接続は、
「USB」と「マウス」を同列に持ってきてしまうと、粒度が違いすぎて語れない気が。
「マウス」には、USB接続、PS/2接続、RS-232C接続、Bluetooth接続などがありますが、いずれも OS 上からみれば、特に区別せずに使われますね。
一方「USB機器」には、マウスもあれば、シリアルやLANへの変換ケーブルなどもあります。
あるいは、一つの機器が複数の役目を持っているケースもありますよね。携帯電話を接続した場合、モデムとして認識/カメラとして認識/ストレージとして認識されるなど。
細かいことですが、SerialPort はコントロールではなく、コンポーネントです。
System.Windows.Forms.Control 継承クラスではなく、
System.ComponentModel.Component 継承クラスなので。
> COMポートを利用した通信ができる…という理解が正しいのでしょうか?
COMポートの指定は必須ですよね。そしてその上で、
「シリアル通信」を行うための代物かと思います。
指定した COMポートが VCP なのか物理なのかは関係ないですし、
物理だとして、その結線が DSub-9 なのか DSub-25 なのか、
あるいは PCMCIA、IEEE1394、USB、IrDA などであったのかなどは
特に意識する必要はありません。"COM1"、"COM3" などといった
マッピングさえ行われるのであれば。
> USBやマウスなどの接続は、
「USB」と「マウス」を同列に持ってきてしまうと、粒度が違いすぎて語れない気が。
「マウス」には、USB接続、PS/2接続、RS-232C接続、Bluetooth接続などがありますが、いずれも OS 上からみれば、特に区別せずに使われますね。
一方「USB機器」には、マウスもあれば、シリアルやLANへの変換ケーブルなどもあります。
あるいは、一つの機器が複数の役目を持っているケースもありますよね。携帯電話を接続した場合、モデムとして認識/カメラとして認識/ストレージとして認識されるなど。
投稿者 VB初心者  (社会人)
投稿日時
2014/10/31 09:23:27
魔界の仮面弁士様
回答ありがとうございます。
VBで用意されているSerialPortコントロールは、Serialポートの通信しか対応できないと考えていました。
正しくは、VBで用意されているSerialPortコントロールは、COMポートを利用した通信ができる…という理解が正しいのでしょうか?
私の理解は、次の通りです。
RS232C通信を行う場合、次の概要構成で接続が確立されると思います。
COMポート --- シリアルポート --- RS232C
USBやマウスなどの接続は、
COMポート --- 仮想シリアルポート --- USB機器やマウスなどのデバイス, etc
この仮想シリアルポートが、ドライバ(D2XXドライバ)であると理解しました。
コントロール名がSerialPortコントロールなので、勝手にRS-232やRS422通信しかできないと考えてしまいました。
回答ありがとうございます。
VBで用意されているSerialPortコントロールは、Serialポートの通信しか対応できないと考えていました。
正しくは、VBで用意されているSerialPortコントロールは、COMポートを利用した通信ができる…という理解が正しいのでしょうか?
私の理解は、次の通りです。
RS232C通信を行う場合、次の概要構成で接続が確立されると思います。
COMポート --- シリアルポート --- RS232C
USBやマウスなどの接続は、
COMポート --- 仮想シリアルポート --- USB機器やマウスなどのデバイス, etc
この仮想シリアルポートが、ドライバ(D2XXドライバ)であると理解しました。
コントロール名がSerialPortコントロールなので、勝手にRS-232やRS422通信しかできないと考えてしまいました。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2014/10/30 19:44:10
そっちの方面には詳しくないのですが、D2XX ドライバを用いて
USB-パラレル+シリアル変換している、ということでしょうか。
だとしたら、.NET 側から見えているのは、あくまでも「シリアルポート」であって、
その物理的接続が USB なのか RS-232C なのかは関係無いのだと思います。
USB ポートにマウスが繋がれていれば、ポインティングデバイスと認識され、
USB ポートに HDD が繋がれていれば、マスストレージと認識され、
USB ポートにプリンターが繋がれていれば、プリンターだと認識されますが、
それと同じような話のように思えましたが…そういうことではないのかな。
USB-パラレル+シリアル変換している、ということでしょうか。
だとしたら、.NET 側から見えているのは、あくまでも「シリアルポート」であって、
その物理的接続が USB なのか RS-232C なのかは関係無いのだと思います。
USB ポートにマウスが繋がれていれば、ポインティングデバイスと認識され、
USB ポートに HDD が繋がれていれば、マスストレージと認識され、
USB ポートにプリンターが繋がれていれば、プリンターだと認識されますが、
それと同じような話のように思えましたが…そういうことではないのかな。
投稿者 VB初心者  (社会人)
投稿日時
2014/10/30 18:18:36
SerialPortコントロールを使用して通信を行っています。
VB-FT245AM(USB-パラレル変換IC)間の通信を行うことができましたが、根本的な質問です。
VB(PC)とFT245AM(USB-パラレル変換IC)との間は、USB接続しています。
SerialPortコントロールで、USB通信も行えるということでしょうか?
元々、SerialPortコントロールで行えるのは、RS-232C規格の通信だと思っていましたので、
USB通信ができていることが信じられません。
通信の接続は、次のコードで実現できていますが、
コードの中で、特に通信規格に準じた設定をしている訳でもありません。
このSerialPortコントロールというのは、色々な通信規格に自動的に対応できるのでしょうか?
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
SerialPort1.PortName = TextBox1.Text
If SerialPort1.IsOpen = True Then
MessageBox.Show("すでに" & SerialPort1.PortName & "は接続されています。", "エラー",
MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
SerialPort1.DtrEnable = True
SerialPort1.Open()
Timer1.Enabled = True
Button1.Enabled = False
Button2.Enabled = True
Catch ex As Exception
MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
ありがとうございました。理解できました。