raspberry pi 和 teensy 之间的串行通信(使用 UART / GPIO 引脚)
Serial communication between raspberry pi and teensy (using UART / GPIO pins)
我正在尝试从我的 raspberry PI 与一个小孩子(一个 arduino,可以为那些不熟悉的人伪装成鼠标和键盘的 arduino)进行交流。
我想接收有关arduino的信息,并根据该信息移动鼠标。
在arduino这边,我做了这个测试脚本:
void setup() {
Serial1.begin(9600); // According to the Teensy Docs, this is the RX1 & TX1 on my board.
// Serial itself corrosponds to the micro-usb port
}
String msg = "";
void loop() {
if(Serial1.available() > 0) {
msg = "";
while(Serial1.available() > 0) {
char read = Serial1.read();
msg += read;
}
Serial1.write('X'); // Acknowledge with reply
}
Serial1.println(msg); // Output to console for debugging
// Should be a number 1-9
// TODO: further processing
}
在 raspberry pi 上,我正在 运行 宁此测试脚本:
import time
import serial
import random
ser = serial.Serial(
port='/dev/ttyS0',
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
while True:
n = random.randint(1,9)
print("Writing", n)
ser.write(n)
time.sleep(1)
feedback = ser.read()
print(feedback) // Expecting 'X'
当我 运行 脚本时,我在串行控制台中看不到任何输出以及一条空消息 (b''
)(注意超时参数)
我已经启用了与 raspi-config
的串行通信并重新启动。当我列出设备 (ls -l /dev/
) 时,我可以看到:
lrwxrwxrwx 1 root root 5 Apr 28 20:21 serial0 -> ttyS0
lrwxrwxrwx 1 root root 7 Apr 28 20:21 serial1 -> ttyAMA0
作为附加测试,我 运行 minicom -b 9600 -o -D /dev/ttyS0
用一根线将 RX 连接到 pi 上的 TX,它成功回显。
我有代码问题还是硬件问题?也许因为它很小,所以需要一些不同的协议?参见
我不知道为什么它不能正确通信。这是我的接线:
您将 Rx 线连接在一起,将 Tx 线连接在一起。一个人传输什么,另一个人需要接收什么。你需要去 Tx-Rx 和 Rx-Tx。
我正在尝试从我的 raspberry PI 与一个小孩子(一个 arduino,可以为那些不熟悉的人伪装成鼠标和键盘的 arduino)进行交流。
我想接收有关arduino的信息,并根据该信息移动鼠标。
在arduino这边,我做了这个测试脚本:
void setup() {
Serial1.begin(9600); // According to the Teensy Docs, this is the RX1 & TX1 on my board.
// Serial itself corrosponds to the micro-usb port
}
String msg = "";
void loop() {
if(Serial1.available() > 0) {
msg = "";
while(Serial1.available() > 0) {
char read = Serial1.read();
msg += read;
}
Serial1.write('X'); // Acknowledge with reply
}
Serial1.println(msg); // Output to console for debugging
// Should be a number 1-9
// TODO: further processing
}
在 raspberry pi 上,我正在 运行 宁此测试脚本:
import time
import serial
import random
ser = serial.Serial(
port='/dev/ttyS0',
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
while True:
n = random.randint(1,9)
print("Writing", n)
ser.write(n)
time.sleep(1)
feedback = ser.read()
print(feedback) // Expecting 'X'
当我 运行 脚本时,我在串行控制台中看不到任何输出以及一条空消息 (b''
)(注意超时参数)
我已经启用了与 raspi-config
的串行通信并重新启动。当我列出设备 (ls -l /dev/
) 时,我可以看到:
lrwxrwxrwx 1 root root 5 Apr 28 20:21 serial0 -> ttyS0
lrwxrwxrwx 1 root root 7 Apr 28 20:21 serial1 -> ttyAMA0
作为附加测试,我 运行 minicom -b 9600 -o -D /dev/ttyS0
用一根线将 RX 连接到 pi 上的 TX,它成功回显。
我有代码问题还是硬件问题?也许因为它很小,所以需要一些不同的协议?参见
我不知道为什么它不能正确通信。这是我的接线:
您将 Rx 线连接在一起,将 Tx 线连接在一起。一个人传输什么,另一个人需要接收什么。你需要去 Tx-Rx 和 Rx-Tx。