私はPython3経由で双方向通信を確立しようとしています。私のUSBポートの1つに接続されたレーザー距離計があり、私はそれにコマンドを送受信したいと思います。私は送ることができるコマンドと返すものを持っているので、この部分はすでにそこにある。Python3双方向シリアル通信:データ読み込み
私が必要とするのは、リアルタイムで行うのに便利な方法です。
import serial, time
SERIALPORT = "/dev/ttyUSB0"
BAUDRATE = 115200
ser = serial.Serial(SERIALPORT, BAUDRATE)
ser.bytesize = serial.EIGHTBITS #number of bits per bytes
ser.parity = serial.PARITY_NONE #set parity check: no parity
ser.stopbits = serial.STOPBITS_ONE #number of stop bits
ser.timeout = None #block read
ser.xonxoff = False #disable software flow control
ser.rtscts = False #disable hardware (RTS/CTS) flow control
ser.dsrdtr = False #disable hardware (DSR/DTR) flow control
ser.writeTimeout = 0 #timeout for write
print ("Starting Up Serial Monitor")
try:
ser.open()
except Exception as e:
print ("Exception: Opening serial port: " + str(e))
if ser.isOpen():
try:
ser.flushInput()
ser.flushOutput()
ser.write("1\r\n".encode('ascii'))
print("write data: 1")
time.sleep(0.5)
numberOfLine = 0
while True:
response = ser.readline().decode('ascii')
print("read data: " + response)
numberOfLine = numberOfLine + 1
if (numberOfLine >= 5):
break
ser.close()
except Exception as e:
print ("Error communicating...: " + str(e))
else:
print ("Cannot open serial port.")
は、したがって、上記のコードでは、私は、レーザーファインダーの「getDistance()」機能をトリガし、mm単位で距離を返すべき「1」を送信しています。これまでのところ私は、次のコードを持っています。私はパテでこれを試して、それは動作し、4桁まで距離を返します。しかし、上記のPythonスクリプトを起動すると、出力は次のようになります。
Starting Up Serial Monitor
Exception: Opening serial port: Port is already open.
write data: 1
read data:
これは永遠に続きます。読み取りデータはありません。
ここで私は間違っていますか?
は() '')( 'ser.open前に' ser.closeを追加してください。 –
残念ながら、それは何も変化しませんでした。 –