1. FTDI
USB2.0 - RS232
其接口 Type A - Male DB9
2. Female && Male
3. 接口定义
在开发的时候,经常会用到串口,请求发送地线数据准备好振铃之时数据终端准备接收数据发送数据
在使用RS232接口的设备中,尽管通常2号(接收数据,RX)、3号(发送数据,TX)和5号(信号地,GND)针脚是进行基本通信所必需的,但在某些情况下,其他针脚的作用也可能变得重要。
当你提到在扫码枪中接上1号针脚(DCD,数据载波检测)后能够正常读取数据,这意味着扫码枪或连接的系统可能使用了DCD信号来确认数据通信的准备状态。在某些串行通信协议中,DCD信号被用来指示另一端设备已经准备好发送或接收数据。如果设备或其驱动程序配置为检查DCD信号状态,未连接或不正确的DCD线路可能会导致通信失败。
4. Notice:
- 接线的时候,主接2,3,5。但有时候通信并不成功,需要看看别的引脚是否需要相接。
- 若串口端有数据出现,但是数据格式并不对,问题可能出现在代码端和通信设置。
- 扫码得到数据的时候,通信波特率不宜设置过大,9600即可,若设置115200,传输位率过大,容易造成数据丢失,具体表现为数据部分乱码。
5. 代码示例
# include <Arduino.h>
# define RS485_RE_DE_PIN 20 // 用于控制接收和发送使能的引脚
String scan_data;
void setup()
{
Serial.begin(9600); // 用于与PC通信的串口
while(!Serial);
pinMode(RS485_RE_DE_PIN, OUTPUT);
digitalWrite(RS485_RE_DE_PIN, LOW); // 初始设为接收模式
Serial1.begin(9600); // 用于与RS-485通信的串口
Serial.println("Hello ScanGun1! ");
}
void loop()
{
if(Serial1.available())
{
scan_data = readScanData();
Serial.print("扫码结果:");
Serial.println(scan_data);
}
}
String readScanData()
{
String scandata;
digitalWrite(RS485_RE_DE_PIN,LOW);
while(Serial1.available())
{
scandata = Serial1.readString();
}
return scandata;
}
0 条评论