簡體   English   中英

使用Visual C ++編程串口arduino

[英]Programming serial port arduino with Visual C++

我想從arduino讀取模擬傳感器到我的電腦。

Arduino程序是:

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
}

void loop() {
char request[1];
if(Serial.available()){
request[0]=Serial.read();
Serial.print(analogRead(atoi(request)));
Serial.print("\n\r");
};
delay(2);                     
}

和我的視覺C ++

#include <windows.h>
#include "stdafx.h"
#include "SerialClass.h"

char buffer[20];
char buf0[200];

int _tmain(int argc, _TCHAR* argv[])
{
   Serial oSerial("COM6:");

while(1){
sprintf_s(buffer,"0");    
    oSerial.WriteData(buffer,1); 
Sleep(1000);
oSerial.ReadData(buf0,4);
printf("Sensor 0: %s \n",buf0);
Sleep(1000); }
}

並且我的程序結果不穩定,我在input0中輸入了5V,因此必須為1023:

sensor 0 :
sensor 0 : 10230
sensor 0:
100
sensor 0: 23
0
sensor 0: 10230

我嘗試使用串行監視器在arduino中運行程序。 所以可能是問題出在c ++程序中

有人有主意嗎?

我相信問題是由於您的PC正在尋找4個字符而Arduino正在按請求發送3-6個字符而引起的。

我建議您將字符接收到緩沖區中,直到收到Arduino發送的回車符(\\ r)。 然后,您可以輸出完整的字符串。 您將需要處理控制字符。

未經測試的示例:

更換

oSerial.ReadData(buf0,4);

int x=0;
int char_rev;

while(buf0[x]!='\r') {

    char_rev = oSerial.ReadData(buf0[x],1);
    if (char_rev==1) {
        x++;
    }
}
buf0[x]=0;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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