如何在c++中从Arduino接收字符串
How to receive strings from Arduino in C++?
嘿,我有从Arduino接收字符串的问题。我在linux上运行,我想使用c++。我可以很容易地从c++代码发送字符串到arduino。为此,我使用像这样的c++代码。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream arduino("/dev/ttyACM0");
arduino << "Led onn";
arduino.close();
return 0;
}
那么我如何从Arduino接收字符串?
我不是Arduino专家,但从你的代码我得出结论:
- 您正在使用串行接口发送数据
- 您应该将串行接口连接到您的计算机(使用传统的串行电缆或USB) 编写一个c++应用程序,打开并接收串口数据。看到这个!
- 从Arduino规格中找出Arduino使用的串行通信参数(停止位,奇偶位,波特率等),并使用这些参数在您的c++应用程序中配置串口!
希望有帮助!
使用boost。asio与串行设备和c++进行通信。它像一个魅力,很容易使用。参见:http://www.boost.org/doc/libs/1_40_0/doc/html/boost_asio/overview/serial_ports.html和这个:从串行端口读取Boost Asio
下面的代码等待arduino的响应。如果响应包含"Done",则返回1。如果在给定的超时时间内没有找到,则返回-1。
修改这段代码来满足你的需要应该不难。
int Serial::waitForResponse()
{
const int buffSize = 1024;
char bufferChar[buffSize] = {' '};
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] = ' ';
wholeAnswer += std::string(bufferChar);
} else
{
noDataTime++;
usleep(1000);
}
}
if(!wholeAnswer.empty())
{
return 1;
} else
{
return -1;
}
相关文章:
- 如何在 Arduino 字符串的开头添加元素.类似于 JS unshift();
- 在Arduino中将字符串转换为(逗号分隔的十六进制)字符串到无符号字符数组
- Arduino c++ 缺少字符串的第一个字母
- 随机字符,从强制转换 Arduino 字符串到 Excel BSTR 通过 c++ DLL
- 字符串在 Arduino SPI 传输代码中变为空
- 如何在 C++ (Arduino/C++) 中将字符串转换为uint8_t?
- Arduino ESP32如何将BLEUUID对象分配到字符串中
- Arduino:将函数传递给类,返回字符串
- Arduino IDE告诉我找不到字符串文字运算符“运算符”“DRIVE”
- Arduino SIM800L:将字符串转换为字符* 错误
- 您可以在Arduino字符串中存储多少字节?
- 在类中设置Arduino字符串值
- 如何将浮点值转换为字符串,而无需为arduino使用sstream
- 如何用Arduino中的另一个字符串将字符串拆分
- Arduino:尝试将Char[]转换为字符串时为空字符串
- 比较字符串(arduino)时出现问题
- 如何在Arduino中将字符串转换为char*
- 如何在Arduino中解析来自串行监视器的字符串
- Arduino类层次结构,字符串和内存泄漏
- 将十六进制值存储为字符串(Arduino项目)