繁体   English   中英

从com端口C ++读取

[英]Read from com port C++

我正在尝试与Arduino微控制器通信。 这在C#中非常容易做到,但是我在c ++中无法弄清楚。 这是我的arduino代码...

void loop()
{
  if (Serial.available() > 0)
  {
    byte input = Serial.read();
    Serial.write(input);
  }
}

因此,您发送到arduino的所有内容都将被发送回给您。

我可以使用fstream库读取对其的写入。 问题是当我尝试从缓冲区读取内容时,什么也没有。

int main(int argc, char** argv)
{
fstream filestr;
filestr.open ("COM4", fstream::in | fstream::out | fstream::trunc);

if (!filestr.is_open())
{
    cout << "error opening port";
}
else
{
    cout << "port opened";
}

char* input = new char();
cin >> input;
filestr.write(input, 1);
filestr.flush();

char * buffer = new char [1];
buffer[0] = -1;

filestr.read (buffer,1);
while ((int)buffer[0] == -1)
{
    filestr.read (buffer,1);
}
cout << buffer[0];

cin >> input;

filestr.close();
return 0;  
}

因此,我发送了一些数据并开始循环读取,直到arduino做出响应。 第一次读取不会得到任何回报,因为arduino尚无时间响应,因此我一直在读取直到获得数据为止。 但是我似乎从未得到回应。 如果我在第一次阅读之前稍加延迟并给arduino时间做出响应,那么它确实可以工作。 当我阅读某些东西时,阅读器的位置会向前移动吗? 当我从缓冲区读取内容时,它是否会自动从缓冲区中删除? 有人知道怎么做吗?

您应该获取arduino firmata Windows工具的代码。 它会做您想做的所有事情。

http://firmata.org/wiki/Main_Page

查看有关使用Boost Asio读取串行端口的另一个问题:使用Boost Asio 从串行端口读取

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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