簡體   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