C++ 使用c+通过RS232在pc和arduino之间进行串行通信+;
我正试图通过RS232线与我的arduino duemilanove通信。我只是希望能够从桌面应用程序向我的arduino发送一个字节(或字符)。Arduino正在插入我电脑上的USB COM5。我将RS232插入COM1,然后在RS232的另一端将针脚2、3和5分别连接到arduino针脚TX、RX和GNDC++ 使用c+通过RS232在pc和arduino之间进行串行通信+;,c++,visual-studio-2010,class,arduino,serial-communication,C++,Visual Studio 2010,Class,Arduino,Serial Communication,我正试图通过RS232线与我的arduino duemilanove通信。我只是希望能够从桌面应用程序向我的arduino发送一个字节(或字符)。Arduino正在插入我电脑上的USB COM5。我将RS232插入COM1,然后在RS232的另一端将针脚2、3和5分别连接到arduino针脚TX、RX和GND 我在以下链接中找到了C++的串行COMM类: 我已经将上面示例中的.h和.cpp文件添加为Serial.h和Serial.cpp(我认为示例使用SerialClass.h和SerialC
我在以下链接中找到了C++的串行COMM类:
我已经将上面示例中的.h和.cpp文件添加为Serial.h和Serial.cpp(我认为示例使用SerialClass.h和SerialClass.cpp,我只是更改了名称)在arduino上,我运行以下代码:
// ARDUINO
char incomingByte = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, HEX);
}
}
我的C++程序如下:
// C++
#include <iostream>
#include <Windows.h>
#include "Serial.h"
using namespace std;
int main(void)
{
Serial port("COM1");
char* msg = "Hello Arduino!";
int msgLen = strlen(msg);
bool writeSuccess = port.WriteData(msg, msgLen);
cout << "\n\n";
system("PAUSE");
}
I received: FFFFFFAB
I received: 3A
I received: 3A
I received: A
I received: FFFFFFFA
I received: FFFFFFEB
I received: 6D
I received: 37
I received: 15
I received: 2D
I received: 23
I received: 21
I received: FFFFFFBD
I received: 0
这似乎不是“Hello Arduino!”的正确十六进制,但我不知道为什么它不正确。有人知道我做错了什么吗?Arduino使用TTL逻辑进行串行连接。它期望值为0和5V。RS232使用了不同的电压-V到+V。您可能需要一个转换器。Ehm。。。不上拉和下拉不是为了这个原因
- TTL=低:0伏,高:5伏
- RS232=低:+3:+15V,高:-3:-15V
个人评论:我会避免解决方案1…您是否也将COM1设置为9600速度?停止/奇偶校验位是否相同?@ SLVA YEP,YEP是操作系统特有的。建议更改C++代码…但由于这个原因,Arduino有一个上拉和下拉电阻器,