我意识到这种问题散布在整个互联网上,但似乎没有任何东西指向我。
我正在尝试通过串行流向 Propeller 控制板发送命令。连接似乎正在工作,但是对于我发送的任何类型的命令,它都会不断出现错误 - 它返回相同的十六进制数据:10 ffffffe1。发送的数据似乎格式不正确。董事会似乎在期待字节数据,并且(我认为)我的代码似乎正在这样做,但我就是不知道我做错了什么。我想我没有正确转换数据。这是我的代码,如下。感谢大家。
注意:下面的代码不显示读取响应;它是在我的另一个程序中完成的,它可以正常工作,它也可以正确读取来自串行终端的响应。
#include <iostream>
#include <SerialStream.h>
using namespace LibSerial;
using namespace std;
int main(int argc, char** argv) {
SerialStream serial;
serial.Open("/dev/ttyUSB0");
serial.SetCharSize(SerialStreamBuf::CHAR_SIZE_8);
serial.SetBaudRate(SerialStreamBuf::DEFAULT_BAUD);
serial.SetNumOfStopBits(1);
serial.SetFlowControl(SerialStreamBuf::FLOW_CONTROL_NONE);
if(serial.good()){
cout << "SUCCESSFUL: serial port opened at: /dev/ttyUSB0" << endl;
usleep(5000);
}
else{
cout << "ERROR: Could not open serial port." << endl;
return 1;
}
std::string str= "ver\r"; //command to get version of firmware
const char* data = str.data();
serial.write(data, sizeof data);
return 0 ;
}