[英]serial communication with ARDUINO in C++
#include <iostream>
#include <fstream>
#include <stdio.h>
using namespace std;
char j='a';
main()
{
fstream arduino;
arduino.open("/dev/ttyACM0",ios::in | ios::out);
//Opening device file
if(!arduino)
cout<<"error";
arduino<<2;
arduino.clear();
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";
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进行串行通信。 我收到一个错误“ eof过早”。 这里有什么问题??
假设您的arduino实际上已连接到该端口并回显它所接收的内容,则必须考虑两点:a)在您的arduino代码获得对串行端口的控制之前,它首先尝试加载串行引导程序,因此有可能使通信的第一个字节永远不会到达您的代码。 b)即使可以,但arduino可能比您的计算机慢得多,并且在进行检查之前可能没有时间处理答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.