2016-07-08 33 views
1

私のCOMポート、特にこのコードを使用して接続されているXBeeとのインターフェイスを確立しようとしています。pyserialを使用してCOMポートでエラーが発生する

from xbee import XBee 
from serial import Serial 

PORT = 'COM3' 
BAUD = 9600 

ser = Serial(PORT, BAUD) 

xbee = XBee(ser) 
# Send the string 'Hello World' to the module with MY set to 1 
xbee.tx(dest_addr='\x00\x01', data='Hello World') 

# Wait for and get the response 
print(xbee.wait_read_frame()) 

ser.close() 

ただし、このエラーは引き続き発生します。

SerialException:ポート 'COM3'を開けませんでした:WindowsError(5、 'アクセスが拒否されました')。コンピュータを再起動すると消えてしまいますが、復帰します。なぜ私は自分のコンピュータを再起動する必要はありませんので、それが起こっている理由を理解したいと思います。助けてくれてありがとう、ありがとう。私は関連性のある場合のために、Python 2.7とIDLEインターフェイスを使って作業しています。

答えて

1

シリアルポートは、一度に1つのアプリケーションでのみ開くことができます。アプリケーション「A」がポートを開くと、アプリケーション「B」は同じポートを開こうとするとアクセス拒否エラーを受け取ります。あなたのケースでは、他のアプリケーションがポートを保持していることを把握し、最初に閉じる必要があります。

+0

私はXCTUプログラムを終了しましたが、もうエラーは出ませんが、プログラムを実行してXBeesを使用するにはどうすればいいですか? – Zotto

+0

私はXBeesについて聞いたことがありません。しかし、2つの異なるアプリケーションが同じポートを同時に使用することを論理的に許可することはできません。なぜなら、2つのアプリケーションが同じディスクファイルに同時に書き込むことができないからです。衝突が発生した場合のデータ破損を防ぐ方法はありません。 XBeesライブラリがシリアルポートを制御している場合は、そのAPIを操作してPySerialを忘れる必要があります。 –

+0

あなたは正しいと思います。ありがとう! – Zotto

関連する問題