C和x2B之间的串行通信+;和Python(VEXV5和Pi)

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:

我已经和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:
    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++端似乎没有串行端口配置。您必须手动并显式地将串行链路的两侧配置为完全相同的参数。