実際にデータを送信する外部デバイスを接続する前に、シリアル接続をテストしようとしています。pySerial の「loop://」デバイスを使用しようとしていますが、データが正しく受信されません。私は非常におもちゃのプログラムから始めました。それがどのように/うまくいくかを理解していることを確認してください。明らかに私はしません。:)
ここに私のデータ「ソース」があります
def serialDataPump():
ser = serial.serial_for_url('loop://', timeout=1)
testCtr = 0;
while not bbq.closing and testCtr<10:
ser.write(bytes("Test\n", encoding='ascii'))
time.sleep(1)
testCtr += 1
ここに私のデータ「シンク」があります:
def serialDataTestRcv():
ser = serial.serial_for_url('loop://', timeout=1)
while not bbq.closing:
line = ser.readline()
sys.stdout.write('received' + str(line))
そして、ここに私のテスト関数があります - 私は2つのスレッドを使用しています:
def testSerMain():
thread1 = Thread(target = serialDataPump)
thread2 = Thread(target = serialDataTestRcv)
thread1.start()
thread2.start()
thread1.join()
bbq.closing = True
time.sleep(2)
exit()
そして最後に、これが出力です - はブロックを解除し、終了する前に正確に 11 回ループするため、最小限の EOL を受信していreadline()
ます。これは、ポンプと受信の両方がループして適切に終了していることを示しています。ただし、ご覧のとおり、空のデータと EOL のみを受け取ります。
>>>
receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''
>>>
勝つ 7、x64m py3.3
ちなみに、私は com0com について知っています - 私が使っているマシンでは実行できません。