繁体   English   中英

与arduino的C ++通信

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM