Я пытаюсь отправить команду (в виде байтов) с Raspberry Pi 4 на Ma c, используя последовательное соединение.
Я подключил Pi к своему Ma c по схеме здесь указано: (https://learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-a-console-cable/connect-the-lead). По сути, я использую кабель от Prolifi c Technology для подключения Ma c к контактам UART на Pi.
Последовательная консоль Linux по умолчанию отключена на Pi, согласно инструкции здесь: https://www.raspberrypi.org/documentation/configuration/uart.md
На обоих концах используется PySerial. Сторона Ma c читает, а Pi пишет.
Я вижу, что обе стороны продолжают тайм-аут, а Ma c никогда не читает никаких байтов.
Исходный код для стороны Pi:
import serial
import serial.tools.list_ports as list_ports
from time import sleep
ports = list_ports.comports()
for port in ports:
print(port)
if len(ports) == 0:
print("Couldn't find any ports")
exit(1)
# For now we only expect one port to be available
host_port = ports[0]
print("Found host port: {}".format(host_port.device))
ser = serial.Serial(
host_port.device,
9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1,
write_timeout=1,
)
while True:
print("writing")
try:
ser.write(b'hello')
except:
print("Write timeout. Continue...")
sleep(2)
Исходный код для стороны Ma c:
import serial
import serial.tools.list_ports as list_ports
from time import sleep
ports = list_ports.comports()
robot_port = None
for port in ports:
if port.manufacturer is not None and "Prolific Technology" in port.manufacturer:
robot_port = port
break
if robot_port is None:
print("Couldn't find an attached worldlike robot")
exit(1)
print("robot_port: {}".format(robot_port.device))
ser = serial.Serial(robot_port.device, 9600, timeout=10)
if ser is None:
print("Failed to create serial port")
exit(1)
while True:
print("reading")
line = ser.read(5)
print("Read: {}".format(line))
sleep(2)
Вывод из Pi:
/dev/ttyAMA0 - ttyAMA0
Found host port: /dev/ttyAMA0
writing
Write timeout. Continue...
writing
Write timeout. Continue...
…
Вывод из Ma c:
robot_port: /dev/cu.usbserial-14310
reading
Read: b''
reading
Read: b''
…
Есть идеи, почему это так?
Спасибо за ваше время!