[英]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工具的代码。 它会做您想做的所有事情。
查看有关使用Boost Asio读取串行端口的另一个问题:使用Boost Asio 从串行端口读取
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.