8

シリアル ポートを使用した多くのコード サンプルを見てきましたが、それらも動作するコードであると言う人がいます。問題は、コードを試してみてもうまくいかないことです。

import serial

ser = serial.Serial(
    port=0,
    baudrate=9600
    # parity=serial.PARITY_ODD,
    # stopbits=serial.STOPBITS_TWO,
    # bytesize=serial.SEVENBITS
)

ser.open()
ser.isOpen()

print(ser.write(0xAA))

それが私に与えるエラーは次のとおりです:「SerialException:ポートはすでに開かれています」。問題はpython3.3を使用していますか、それともインストールする必要がある追加の何かがありますか? Python3.3 で COM ポートを使用する他の方法はありますか?

4

1 に答える 1

10

したがって、話の教訓は..初期化時にポートが開かれます。ser.open()によってシリアル ポートがすでに開かれているため、 は失敗しますser = serial.Serial(.....)。そして、それは一つのことです。

そこにあるもう1つの問題は、ser.write(0xAA)これが「1バイトの0xAAを送信する」ことを意味すると思っていたのですが、実際には170(0xAA)のゼロを送信していました。functionwriteでは、次のように表示 されました。data = bytes(data)ここで、 data は渡す引数です。関数 bytes() は文字列を引数としてとらないようですので、:serial.write()で文字列を直接送信することはできませんser.write(bytearray(TheString,'ascii'))が、仕事はします。

追加を検討していますが:

if(type(data) == type('String')):
    data = bytearray(data,'ascii')

ただし、ser.write()それにより私のコードが他の PC で動作しなくなります。

于 2013-04-17T07:59:51.703 に答える