C和x2B之间的串行通信+;和Python(VEXV5和Pi)
我已经和Raspberry Pi和Vex v5合作了一段时间,让它们之间的串行通信正常工作。目前,我的代码很少工作,其他时间也不工作。我还不知道为什么 在Pi/Python方面,我有:C和x2B之间的串行通信+;和Python(VEXV5和Pi),python,c++,serial-port,pi,vex,Python,C++,Serial Port,Pi,Vex,我已经和Raspberry Pi和Vex v5合作了一段时间,让它们之间的串行通信正常工作。目前,我的代码很少工作,其他时间也不工作。我还不知道为什么 在Pi/Python方面,我有: import os import sys import serial import time try: VEX_PORT ='/dev/ttyACM0' ser=serial.Serial(VEX_PORT,115200,timeout=2) ser.isOpen() except:
import os
import sys
import serial
import time
try:
VEX_PORT ='/dev/ttyACM0'
ser=serial.Serial(VEX_PORT,115200,timeout=2)
ser.isOpen()
except:
VEX_PORT ='/dev/ttyACM1'
ser=serial.Serial(VEX_PORT,115200,timeout=2)
ser.isOpen()
ser.flush()
print("OK")
#message = "{}\n".format("0,4:0,-4").encode("utf-8")
while ser.isOpen():
try:
ser.write("Cheese\n".encode("utf-8"))
readText = ser.readline()
print(readText)
print(ser.out_waiting, 'out')
print(ser.in_waiting,'in')
#time.sleep(2) #in sec
except:
print("FAIL")
ser.close()
在Vex/C++方面,我有:
std::string foo = "UNINIT";
std::stringstream bar(foo);
pros::lcd::set_text(2,foo);
while (true) {
//std::cin >> foo;
foo = "";
getline(std::cin, foo);
std::cin.ignore();
if (!foo.empty()) {
pros::lcd::set_text(2,foo);
}
std::cout << "donkey\n" << std::endl;
pros::delay(2000);
}
std::string foo=“UNINIT”;
标准::stringstream条(foo);
优点:液晶显示器:设置文本(2,foo);
while(true){
//std::cin>>foo;
foo=“”;
getline(标准::cin,foo);
std::cin.ignore();
如果(!foo.empty()){
优点:液晶显示器:设置文本(2,foo);
}
std::串行链路的每一端是否都有未经验证的程序。这不是一种明智或实用的软件开发/测试方法。我建议您使用已知的工作终端仿真程序(如minicom、picocom或microcom(是Busybox的一部分))替换一侧,例如RPi侧.BTW Vex/C++端似乎没有串行端口配置。您必须手动并显式地将串行链路的两侧配置为完全相同的参数。