簡體   English   中英

Arduino和Visual C ++串行通信

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM