![](/img/trans.png)
[英]Visual C++: Unsuccessful communication through serial port with 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.