Arduino - 连接RS232串口设备(通过RS232转TTL转接口)

时间:2021-04-11 07:53:34

弄了很久,终于试验成功。
刚开始用Arduino的硬串口 0(RX)、1(TX)号口测试,一直不成功,后来怀疑是测试的时候跟电脑连接着的原因。
后来用软串口测试,避开电脑串口的干扰,成功了。

先看看RS232转TTL转接口长啥样子:
Arduino - 连接RS232串口设备(通过RS232转TTL转接口)

还是先看连接方法:

TTL_VCC——接Arduino板子5V
TTL_GND——接Arduino板子GND
TTL_RXD——接Arduino板子RXD
TTL_TXD——接Arduino板子TXD

COM口2号孔(RXD)——接设备COM口3号孔
COM口3号孔(TXD)——接设备COM口2号孔
COM口5号孔(GND)——接设备COM口5号孔

Arduino - 连接RS232串口设备(通过RS232转TTL转接口)

这里要注意的是,Arduino主板跟RS232转接板连接时,RX、TX并不是反接的,而RS232转接板跟COM设备连接时,RX、TX是反接的,这个问题要注意。

好了,接线完毕,就可以开始测试了。
来看一张整体效果图:
Arduino - 连接RS232串口设备(通过RS232转TTL转接口)

代码如下:
【库文件】软串口库 SoftwareSerial,系统自带。

#include <SoftwareSerial.h>
SoftwareSerial DLSerial(6, 7); // 软串口 RX(D6), TX(D7)
//注意这里的接线方法,软串口RX接RS232转接板的RX口,TX接RS232转接板的TX口
void setup() {
DLSerial.begin(9600); //设备波特率9600
}

void loop() {
DLSerial.write(1); //发送字节数据
DLSerial.write(3);
delay(500);
while (DLSerial.available()>0) //如果缓存中有接收到的数据
{
DLSerial.read() //读取缓存中的串口数据
delay(2);
}
delay(500);
}