PySerial - полнодуплексная связь

Можно ли добиться полнодуплексной связи с помощью PySerial? В частности, возможно ли будет непрерывно контролировать порт для ввода и записи при необходимости? Я полагаю, это должно быть возможно с помощью потоков (а последовательные интерфейсы полнодуплексные нет?). Если нет, то каков наилучший подход к мониторингу последовательного порта, когда он не передает? Тайм-аут?

Изменить: вот моя попытка на это. Этот код предназначен для чипа TI CC2540 Bluetooth LE. При отправке сообщения инициализации GATT я ожидаю ответа (с подробным описанием рабочих параметров чипа)... Хотя я ничего не получаю

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 ответа

Решение

Да, аппаратное обеспечение последовательного порта дуплексное. Да, вы можете использовать потоки, чтобы выполнять Rx и Tx одновременно. Кроме того, вы можете использовать однопотоковый цикл, который выполняет чтение с коротким тайм-аутом и чередует чтение и запись.

Вы не указали тайм-аут, поэтому чтение ожидает получения полного количества байтов и только затем отображает что-либо.

Другие вопросы по тегам