[英]Serial communication between c++ and arduino
我需要使用C ++与arduino进行通信,我已经尝试过这个代码用于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;
}
Arduino代码:
int p;
void setup()
{
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop()
{
if(Serial.available())
{
p=Serial.read();
if(p!=-1)
{
Serial.write(1);
digitalWrite(13,HIGH);
delay(5000);
}
}
else
{
digitalWrite(13,LOW);
delay(1000);
}
}
所以根据这段代码,当c ++代码运行时,arduino上的引脚13的led发光5秒钟,cout应该打印1.但是led不发光而cout正在打印5(最初看到j = 5)。我正在使用这个程序来测试c ++和arduino之间的串行通信。 但我不知道发生了什么。我们是否还需要任何特殊的串行通信库? 我的代码好吗? 请帮帮我。
如果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";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.