PySerialを使用して全二重通信を実現できますか?具体的には、必要に応じて入力と書き込みのためにポートを連続的に監視することは可能でしょうか?スレッドを使用することが可能でなければならないと思います(シリアルインターフェイスは全二重ではありませんか?)。そうでない場合、シリアルポートを監視して送信しないときには、どのような方法が最適でしょうか?タイムアウトですか?PySerial - 全二重通信
編集:これは私の試みです。このコードはTIのCC2540 Bluetooth LEチップを対象としています。 GATTのinitメッセージを送ることに私は
import serial
import threading
from time import sleep
serial_port = serial.Serial()
GAP_DeviceInit = \
"\x01\x00\xfe\x26\x08\x03\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
def read():
while True:
data = serial_port.read(9999);
if len(data) > 0:
print 'Got:', data
sleep(0.5)
print 'not blocked'
def main():
serial_port.baudrate = 57600
serial_port.port = '/dev/ttyACM0'
serial_port.timeout = 0
if serial_port.isOpen(): serial_port.close()
serial_port.open()
t1 = threading.Thread(target=read, args=())
while True:
try:
command = raw_input('Enter a command to send to the Keyfob: \n\t')
if (command == "1"):
serial_port.write(message)
except KeyboardInterrupt:
break
serial_port.close()
あなたは簡単な例を教えてください。または、与えられたコードサンプルで直ちに問題を示すかもしれません。 2番目のアプローチの問題は、いつデータを送信する必要があるかわからないということです。ユーザーはいつでも送信するメッセージを選択できます – stephenfin
あなたは読んだスレッドを開始しませんでした。 't1.start()'を追加してください – TJD
Doh!どうもありがとう! – stephenfin