通过采用c RS232 PC和Arduino的串行通信++ [英] Serial communication between pc and arduino via RS232 using c++
问题描述
我想通过RS232线与Arduino的我要duemilanove沟通。我只是希望能够一个字节(或字符)从桌面应用程序发送到我的Arduino。在Arduino是插到USB COM5我的电脑上。我有RS232插入COM1,然后我对连接到Arduino的引脚RS232的另一端引脚2 3和5 TX,RX和GND,分别为。
I am trying to communicate with my arduino duemilanove via an RS232 cord. I simply want to be able to send a byte (or char) to my arduino from a desktop application. The Arduino is plugging into USB COM5 on my computer. I have the RS232 plugged into COM1, and then I have pins 2 3 and 5 on the other end of the RS232 connected to arduino pins TX, RX, and GND, respectively.
我找到了c进行串口通信类++以下链接:
I found a serial comm class for c++ at the following link:
http://playground.arduino.cc/Interfacing/CPPWindows
我已经加入从上面的例子Serial.h和Serial.cpp h和.cpp文件(我认为示例使用SerialClass.h和SerialClass.cpp,我只是改变了名称)。
I have added the .h and .cpp files from the above example as Serial.h and Serial.cpp (i think the example uses SerialClass.h and SerialClass.cpp, I just changes the names).
在我的Arduino,我有以下的code运行:
On my arduino, I have the following code running:
// 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 ++程序如下:
And my c++ program is the following:
// 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");
}
当我使用的Arduino的串行端口观众看到的只是把打印的内容,我越来越不符合我送什么(只要我可以告诉)很奇怪的值。
When I use the Arduino's serial port viewer to see what is bring printed, I'm getting very strange values that don't match what I'm sending (as far as I can tell).
当我送你好Arduino的!,Arduino的打印以下内容:
When I send "Hello Arduino!", the arduino prints the following:
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
这似乎并不为你好Arduino的!正确的十六进制,但我不知道为什么它是不正确的。没有人有任何线索,我做错了什么?
This does not appear to be the correct hex for "Hello Arduino!", but I have no idea why it's not correct. Does anyone have any clue what I'm doing wrong?
推荐答案
Arduino的使用TTL逻辑串行连接。它在0和5V预计值。 RS232使用不同的电压-V到+ V。您可能需要一个转换器。
Arduino used TTL logic for Serial connection. It expects values at 0 and 5V. RS232 used a different voltage -V to +V. You may need a converter.
这篇关于通过采用c RS232 PC和Arduino的串行通信++的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!