標準のPCシリアルポートを開くと、電気的に何が行われますか(つまり、どのピンにどのような電圧がかかるか)?
たとえば、私がトグルを維持する任務を負っている装置を制御する古代のVB6プログラム.PortOpen
いくつかのTTLを制御します。接続には2本のピンしか使用していませんでした(不良はんだがバラバラになりました)。どのピンにはんだ付けしますか?
唯一のラベル/ドキュメントはピン7と9を参照しており、括弧内に0Vと5Vを示していますが、.PortOpen
本当にRIとRTSの間に5Vを入れるだけですか?.
ポストスクリプトとして、これはセットアップに関して最も奇妙なことではありません。上記のTTL)は、BNCを介してDB9(!)に接続し、1つのピンのみを使用します。BNCシールドなので、共通のアースについての仮定があったと思います。 GNDピンに接続されていませんか?接続は機器の「フットペダル」ピンに接続されています。これは、デバイスをリモートでトリガーする方法でした。
更新
このページ によると、ポートが開いていると、DTRピンとRTSピンがハイになる可能性があります。それらがそのように構成されている場合、ポートが閉じられると、その後ローになります。
DTRとRTSが有効になっていない場合は、ポートを開くときに両方を低に設定する必要があります(そしてそれらを低に保ちます)。
@Stevenvhの回答に同意しません。特に窓用。たとえば、.NETまたはMSCOMM OCXでの「ポートオープン」および「ポートクローズ」API呼び出しは、DTRおよびRTSラインの状態を電気的に変更するかどうかを強制します。
ポートが開いているとき、DTRは、ポートを開く前に「true」に設定されていた場合、ブールプロパティDTREnableに対応する電気的状態に設定されます。デフォルトでは、「false」のままになります。ユーザーがDTREnableを設定しない場合、「ポートを開く」と、ポートを開く前と同じようにDTR回線が「false」のままになります。
ライン名「RTS」とプロパティ「RTSEnable」のロジックとデフォルトは同じです。ケーブルのもう一方の端の通信パーティと関係するワイヤの量(ハードウェアハンドシェイクとソフトウェアハンドシェイクとハンドシェイクなし)に応じて、ポートを開く前に「RTSEnable」を選択します。
逆に、ポートが閉じているとき。ピンDTRおよびRTSは、オープン時にプロパティを介して設定されていない場合、「FALSE」状態に変更されるか、「FALSE」状態のままになります。
ポートを開いても、電気的な意味では何も起こりません。その瞬間からポートがアプリケーションに割り当てられていることをOSに通知するだけです。 OSは、ポートが開いている間、他のアプリがポートにアクセスすることを拒否し、アプリがポートにアクセスできるようにします。
シリアルポートを開くと、すべてのピンが定義された状態になります(どのハンドシェイクラインがデフォルトでマーキングまたは間隔に設定されているかは覚えていませんが、標準です)。シリアルポートが開かれるまで、回線の状態は未定義である可能性があります。 Microsoftが状況を変更しない限り、シリアルポートを閉じると、ラインは閉じられる前の状態のままになるため、最後に使用したプログラムが奇妙な状態のままだった場合、次に開くまでその状態のままになります。また、これがWindowsでも問題になるかどうかはわかりませんが、DOSでは、電源投入時にシリアルポートを間抜けな状態に設定するPCがいくつかありました。少なくとも1つのブランドのPCは、別の方法で指示されるまで、継続的なロングブレークを送信するようにシリアルポートを設定します。これは、ベンダーのソフトウェアが起動する前にプラグインされた場合、特定の組み込みコントローラーに大混乱をもたらすため、記憶に残るものでした。