嘿我从Arduino接收字符串时遇到问题。我在linux上运行,我想使用C ++ fotr。我很容易从C ++代码发送字符串到arduino。为此,我使用这样的C ++代码。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream arduino("/dev/ttyACM0");
arduino << "Led on\n";
arduino.close();
return 0;
}
那么如何从Arduino接收字符串?
答案 0 :(得分:2)
我不是Arduino专家,但从我的代码中我得出结论:
希望有所帮助!
答案 1 :(得分:0)
使用boost.asio与串行设备和C ++进行通信。它就像一个魅力,非常容易使用。请参阅:http://www.boost.org/doc/libs/1_40_0/doc/html/boost_asio/overview/serial_ports.html和此:Reading from serial port with Boost Asio
答案 2 :(得分:-1)
下面的代码等待来自arduino的响应。如果响应包含“Done”,则返回1.如果在给定的超时内没有找到它,则返回-1。
不应该证明难以更改此代码以满足您的需求。
int Serial::waitForResponse()
{
const int buffSize = 1024;
char bufferChar[buffSize] = {'\0'};
int counter = 0;
std::string wholeAnswer = "";
int noDataTime = 0;
while(wholeAnswer.find("Done") == std::string::npos) //Done string was found.
{
if(noDataTime > 10000)
{
std::cout << "timeout" << std::endl;
return -1;
}
counter = read(this->hSerial, bufferChar, buffSize - 1);
if(counter > 0)
{
noDataTime = 0;
bufferChar[counter] = '\0';
wholeAnswer += std::string(bufferChar);
} else
{
noDataTime++;
usleep(1000);
}
}
if(!wholeAnswer.empty())
{
return 1;
} else
{
return -1;
}