gpt4 book ai didi

C++ 将字节写入串行流

转载 作者:太空狗 更新时间:2023-10-29 11:46:43 25 4
gpt4 key购买 nike

我意识到这种问题遍布整个 Internet,但似乎没有什么是正确的。

我正在尝试通过串行流向 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 ;

最佳答案

serial.write(str.data(), str.size());

您当前的代码使用sizeof data,这是一个指针的大小,并且没有告诉您所指向数据的长度。

使用“默认”波特率似乎也不太可能奏效。

如果您在修复这些问题后仍然遇到问题,则可能是您的非标准 SerialStream 类(它不是标准 C++ 库或 POSIX 的一部分)。如果您提供指向它的链接,我们可以查看它是否正确。

我建议为您的序列号使用 POSIX 标准函数 opentcsetattrreadwrite端口使用情况,因为它们被广泛使用并且任何错误早已被发现并修复。

关于C++ 将字节写入串行流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com