gpt4 book ai didi

c++ - 使用 C++ 通过 RS232 在 pc 和 arduino 之间进行串行通信

转载 作者:行者123 更新时间:2023-11-30 04:02:34 26 4
gpt4 key购买 nike

我正在尝试通过 RS232 线与我的 arduino duemilanove 通信。我只是希望能够从桌面应用程序向我的 arduino 发送一个字节(或字符)。 Arduino 正在插入我电脑上的 USB COM5。我将 RS232 插入 COM1,然后将 RS232 另一端的引脚 2、3 和 5 分别连接到 arduino 引脚 TX、RX 和 GND。

我在以下链接中找到了一个用于 C++ 的串行通信类:

http://playground.arduino.cc/Interfacing/CPPWindows

我已将上述示例中的 .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");
}

当我使用 Arduino 的串行端口查看器查看打印的内容时,我得到了非常奇怪的值,这些值与我发送的内容不匹配(据我所知)。

当我发送“Hello Arduino!”时,arduino 会打印以下内容:

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。您可能需要转换器。

关于c++ - 使用 C++ 通过 RS232 在 pc 和 arduino 之间进行串行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25020887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com