c和x2B之间的串行通信+;还有阿杜伊诺 我需要用C++与ARDUNO进行通信,我已经尝试了C++的代码: #include <iostream> #include <fstream> #include <stdio.h> using namespace std; int j=5; main() { fstream arduino; arduino.open("/dev/ttyACM0",ios::in | ios::out); //Opening device file if(!arduino) cout<<"error"; arduino<<2; arduino.clear(); arduino>> j; cout <<j; arduino.close(); return 0; } 根据此代码,当C++代码运行时,ARDUINO SO上的PIN 13的LED发光5秒,CUT应该打印1。但是LED不是发光的,CUT是打印5(见最初的J=5)。我用这个程序来测试C++和ARDUNO之间的串行通信。但我不知道发生了什么。我们是否需要任何特殊的串行通信库? 我的代码行吗? 请帮助我。
如果c和x2B之间的串行通信+;还有阿杜伊诺 我需要用C++与ARDUNO进行通信,我已经尝试了C++的代码: #include <iostream> #include <fstream> #include <stdio.h> using namespace std; int j=5; main() { fstream arduino; arduino.open("/dev/ttyACM0",ios::in | ios::out); //Opening device file if(!arduino) cout<<"error"; arduino<<2; arduino.clear(); arduino>> j; cout <<j; arduino.close(); return 0; } 根据此代码,当C++代码运行时,ARDUINO SO上的PIN 13的LED发光5秒,CUT应该打印1。但是LED不是发光的,CUT是打印5(见最初的J=5)。我用这个程序来测试C++和ARDUNO之间的串行通信。但我不知道发生了什么。我们是否需要任何特殊的串行通信库? 我的代码行吗? 请帮助我。,c++,serial-communication,C++,Serial Communication,如果j保留其旧值,则读取该值的尝试可能失败。尝试检查流状态,并检查可能的错误情况。例如: if(arduino >> j) cout << "Value received: " << j << '\n'; else if(arduino.eof()) cerr << "Premature EOF.\n"; else if(arduino.bad()) cerr << "Attempt to read
j
保留其旧值,则读取该值的尝试可能失败。尝试检查流状态,并检查可能的错误情况。例如:
if(arduino >> j)
cout << "Value received: " << j << '\n';
else if(arduino.eof())
cerr << "Premature EOF.\n";
else if(arduino.bad())
cerr << "Attempt to read from device failed.\n";
else
cerr << "Logical I/O error.\n";
if(arduino>>j)
cout如果j
保留其旧值,则读取该值的尝试可能失败。尝试检查流状态,并检查可能的错误情况。例如:
if(arduino >> j)
cout << "Value received: " << j << '\n';
else if(arduino.eof())
cerr << "Premature EOF.\n";
else if(arduino.bad())
cerr << "Attempt to read from device failed.\n";
else
cerr << "Logical I/O error.\n";
if(arduino>>j)
对不起,我是C++初学者。我遇到错误--“早熟EOF”。如何更正?我不知道到底发生了什么,但我怀疑Arduino设备可能发送了一个字节(或比您电脑的整数短),电脑需要至少sizeof(int)
字节(通常为4字节)才能满足对int
类型变量的读取。另一个可能的原因是电脑没有收到任何东西。请尝试将输入变量类型更改为char
,然后查看读取是否成功。我尝试将int更改为char,但显示了相同的错误。@Paulo1205:实际上arduino>>j代码>是文本解析,不是二进制代码的读取,代码是<>代码(sit)(int)< /COD> ByTest.Otoh,而且由于我不熟悉另一端发送的内容,因此假设它是二进制数据——将数据更改为<代码> char 可能足以排除输入上的意外非数字字符。对不起,我是C++初学者。我遇到错误--“早熟EOF”。如何更正?我不知道到底发生了什么,但我怀疑Arduino设备可能发送了一个字节(或比您电脑的整数短),电脑需要至少sizeof(int)
字节(通常为4字节)才能满足对int
类型变量的读取。另一个可能的原因是电脑没有收到任何东西。请尝试将输入变量类型更改为char
,然后查看读取是否成功。我尝试将int更改为char,但显示了相同的错误。@Paulo1205:实际上arduino>>j
是文本解析,而不是对sizeof(int)
bytes.oth的二进制读取——由于我不熟悉另一端发送的内容,因此假设它可能是二进制数据——,将数据更改为<代码> char 可能足以排除输入上的意外非数字字符。@曼迪:确保您在运行C++程序之前配置正确的波特率、奇偶校验、流控制等。例如,<代码> STTY 实用程序可以帮助这个。@曼迪:确保在运行C++程序之前,您要配置正确的波特率、奇偶校验、流控制等。例如,stty
实用程序可以帮助实现这一点。