用Visual c++编程arduino串口
Programming serial port arduino with Visual C++
我想从arduino读取模拟传感器到我的pc。
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("nr");
};
delay(2);
}
和我的visual 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); }
}
和我的程序的结果是不稳定的,我把5V输入input0,所以它必须是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;
相关文章:
- 为什么我要从串口读取垃圾?
- Linux读,写Arduino串行
- Boost Asio SerialPort。无法创建并打开串口服务
- 如何在QtWidget中使用c++串口发送数据
- 如何插入十六进制值并发送到串口?
- 我的Arduino串行命令行不起作用,我不知道为什么
- 串口打开返回 EAGAIN
- 如何制作 arduino 串行循环(连续接收数字)
- QT 5.10.1 串口不发送,为什么?
- 通过串口发送后无法获取原始值
- C++ / RS232C 串口 / 事件回调异步读取缓冲区 / 不使用线程
- Arduino 串行解析
- Arduino 串行库找不到"availableForWrite()"函数
- arduino串行而不是解析命令
- 串口读取功能的通信超时和线程不超时
- Arduino串行端口,数据未到达
- 串口通讯Arduino, c++
- 通过c++串口与Arduino对话
- 硬件串口写入arduino
- 用Visual c++编程arduino串口