使用Arduino Mega 2560 - RS232从条形码扫描仪读取Tx

时间:2016-01-07 17:35:06

标签: c arduino serial-port barcode-scanner

在过去的几天里,我一直在尝试创建一个从条形码扫描仪的Tx读取的程序。 我尝试了很多不同的东西,比如不同的程序,但也有不同的扫描仪。 我写的示例程序例如是:

#include <SoftwareSerial.h>
SoftwareSerial mySerial (50, 51);
unsigned char incomingByte;


void setup ()
{
    Serial.begin (9600);
    mySerial.begin (9600);
    Serial.println ("begin initial Serial!\n");
}

void loop ()
{
    while(mySerial.available () > 0)
    {
        incomingByte=mySerial.read ();
        Serial.print (incomingByte,HEX);
    }
    Serial.println ();
}

此时我无法提供正确的连接图(当我有机会时),但是arduino MEGA 2560通过3根线连接到条形码扫描器,A Tx(引脚50),Rx(引脚51)和GND

传输数据的背景信息: startbit:0x02 停止位:0x03

终极目标: 扫描程序扫描条形码,arduino读取数据流并在识别代码时发送输出。

我如何实现最终目标?

提前致谢!

1 个答案:

答案 0 :(得分:0)

Arduino 2560引脚50和51是TTL电平信号。您需要提供RS-232驱动器来反转和电平转换信号。

示例驱动程序是MAX232CPE。

http://www.surplus-electronics-sales.com/index.php?main_page=product_info&cPath=15&products_id=828&gclid=CJv7vNWim8oCFYOEaQodSjQDFQ

此外,softwareserial支持反转逻辑级别的选项。从Arduino页面:

inverse_logic:用于反转传入位的意义(默认为普通逻辑)。如果置位,SoftwareSerial将Rx引脚上的低电平(通常为引脚上的0伏特)视为1位(空闲状态),将高电平(引脚上的5伏电压)视为0位。它还会影响它写入Tx引脚的方式。默认值为false。

警告:对于运行在5V的电路板,不应连接输出Arduino可以处理范围之外的串行数据的设备,通常为0V至5V;对于运行电压为3.3V的电路板,不应连接0V至3.3V。

Arduino SoftwareSerial Reference page