[英]C++ communication with arduino
使用C ++在arduino和PC(Win 7)之间进行通信。 创建通信没有问题,或者只是使用WriteFile和ReadFile简单地发送或接收数据。 但是当我想以某种方式“协调”交流时,我会遇到问题。 目标是为了周期(简单):
for (int i=0; i < 310; i++)
{
com->send(micro[i]);
}
调用过程,该过程应该将数据发送到arduino,现在只需接收回该数据即可。
int send(string input)
{
DWORD written, read;
char buffer[7] = {' ',' ',' ',' ',' ',' ',' '};
input.append("$");
if(!WriteFile(this->comMotor, input.c_str(), input.size(), &written, NULL))
qDebug() << "WriteFile failed"
if(written != input.c_str())
qDebug() << "write problem";
do
{
if(!ReadFile(this->comMotor, buffer, sizeof(buffer), &read, NULL))
qDebug() << "ReadFile failed";
if (read)
qDebug() << "buffer: " << buffer;
}while(!read);
我期望它将输入发送到arduino,然后接收类似$的输入字符串,而无需$ back。 但这是行不通的..有时它显示“无”或真正延迟,这是我不期望使用主动等待响应的结果。 我认为下一个发送的字符串应该等待响应,但显然不是。
为了完成,这是arduino中的代码:
void loop()
{
if (Serial.available())
{
char c = Serial.read();
if (c == '$')
{
if (readString.length() >0)
{
Serial.println(readString); //prints string to serial port out
int n = readString.toInt(); //convert readString into a number
}
readString=""; //clears variable for new input
}
else
{
readString += c; //makes the string readString
}
}
}
关于如何解决这个问题的任何建议,或者知道我在做什么错? 非常感谢。
编辑:编辑后的代码
已解决-Ulrich是正确的,但可悲的是,我只编辑了一个功能。 我的错。 所以问题实际上出在sizeof(input.c_str())上,在所有地方都将其更改为input.size()后,它才起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.