[英]Arduino and Visual C++ Serial Communication
因此,我找到了用於Arduino Visual Studio Communication的本教程: http : //playground.arduino.cc/Interface/CPPWindows
閱讀完之后,我在Arduino上編寫了一個小程序,該程序讀取字符的ASCII代碼並返回該遞增值。 我已經使用串行監視器對其進行了測試。 但是,當我在下面編寫程序時,不僅會得到答案,而且還會收到“垃圾”。
#include <iostream>
#include <string>
#include "Serial.h"
using namespace std;
int main(int argc, char* argv[])
{
Serial * Arduino = new Serial("COM8");
cout << "Communicating with COM7 enter data to be sent\n";
char data[256] = "";
int nchar = 256;
char incomingData[256] = "";
while (Arduino->IsConnected())
{
cin >> data;
Arduino->WriteData(data, nchar);
Arduino->ReadData(incomingData, nchar);
cout << incomingData << endl;
}
return 0;
}
輸出看起來如下:
F:\Serial\Debug>Serial.exe
Communicating with COM7 enter data to be sent
1
2☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺
☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺
☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺
a
☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺b☺☺☺☺☺☺
☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺
☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺
☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺☺╠╠╠╠╠╠╠╠
^C
F:\Serial\Debug>
任何人都可以闡明我應該如何更改此代碼,以便我可以發送和接收特定數量的字符,在這種情況下為一個字符。 我已經嘗試過將nchar更改為1,以便只發送一個字符。 但是,這會導致輸出顯示不同步。 任何幫助表示贊賞,謝謝。
首先,無論您從用戶那里讀取了多少(或很少),都始終發送nchar
字節。 而且,您從串行端口讀取的數據也不會像字符串一樣終止。
首先,很簡單,停止使用數組,然后使用std::string
(以避免可能的緩沖區溢出),然后發送size
字節。
然后在接收時,您需要找出接收到的字節數,然后像字符串一樣終止數組(或者也可以在其中使用std::string
,有一個構造函數可以讓您傳遞指針和大小)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.