【发布时间】:2016-06-02 00:47:28
【问题描述】:
我需要使用 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 sould 上运行引脚 13 的 LED 时会发光 5 秒,并且 cout 应该打印 1。但是 LED 不发光,而 cout 正在打印 5(请参阅最初的 j= 5).我正在使用这个程序来测试 c++ 和 arduino 之间的串行通信。但我不知道发生了什么。我们还需要任何特殊的库来进行串行通信吗? 我的代码好吗? 请帮帮我。
【问题讨论】:
-
@MANDY:确保在运行 C++ 程序之前配置正确的波特率、奇偶校验、流控制等。例如,
stty实用程序可以帮助解决此问题。