4

ハイパーターミナルでは、「X64-CL_iPro_1_Serial_0」と呼ばれるシリアル ポートに接続でき、カメラとの間で ASCII テキストを送受信できます。ただし、pySerial で同じポートに接続しようとすると、例外がスローされます。

SerialException: could not open port X64-CL_iPro_1_Serial_0: [Error 2] The system cannot find the file specified.

ハイパーターミナルがポートを検出して通信できる理由がわかりませんが、Python はできません。シリアル ポートのリストを表示する pySerial Web サイトからこのスクリプトをダウンロードしましたが、表示されたポートは COM1 と COM2 だけで、どちらにも接続できませんでした。

私のコードは非常に単純で、次のようになります。

import serial
port = "X64-CL_iPro_1_Serial_0"
ser = serial.Serial(port)

私は何か間違ったことをしていますか?これを回避する方法はありますか? ありがとうございます。

編集: このポートはデバイス マネージャーに表示されず、COM1 や COM2 にも表示されないことにも注意してください。

4

2 に答える 2

1

問題は、リンクした列挙コードにあります。次の 2 つの点で間違っています。

  1. 固定の GUID_CLASS_COMPORT を使用して列挙します。代わりに、SetupDiClassGuidsFromName を介して GUID を要求し、名前を要求するクラスの説明として "Ports" を渡す必要があります。
  2. このコードは、ポートのフレンドリ名を要求することを主張しています。ただし、唯一の目的が (ユーザーに表示するのではなく) デバイスを開くことである場合は、DevicePath 要素に直接アクセスする必要があります。これは、pySerial に渡す、奇妙に見えるが完全に有効なポート名です。フレンドリ名が完全に欠落している場合もあります。
于 2010-07-20T10:46:02.600 に答える