我正在尝试弄清楚如何在Linux C++中使用串行通信读写我的Arduino。目前,我正在尝试从我的 Arduino 读取响应,我是通过以下方式“触发”的:
echo "g" > /dev/ttyACM0"
我尝试使用以下命令在终端中查看我的Arduino响应:
tail -f /dev/ttyACM0
这个功能运作良好。现在我想在C++应用程序中做同样的事情。因此,我进行了以下测试。
void testSerialComm()
{
std::string port = "/dev/ttyACM0";
int device = open(port.c_str(), O_RDWR | O_NOCTTY | O_SYNC);
std::string response;
char buffer[64];
do
{
int n = read(device, buffer, sizeof buffer);
if (n > 0) {
response += std::string(buffer);
std::cout << buffer;
}
} while (buffer[0] != 'X'); // 'X' means end of transmission
std::cout << "Response is: " << std::endl;
std::cout << response << std::endl;
close(device);
}
发生几次“消息”传输后,传输会有些混乱。我的测试应用程序将响应字符按随机顺序写入,出现了一些问题。我尝试通过以下命令配置/dev/ttyACM0设备:
stty -F /dev/ttyUSB0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
不行。有人能帮我理解如何在C++中与我的Arduino通信吗?
ftell()
返回什么结果? - πάντα ῥεῖerrno
看看到底出了什么问题。 - πάντα ῥεῖ