在过去的几天里,我一直在尝试创建一个从条形码扫描仪的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读取数据流并在识别代码时发送输出。
我如何实现最终目标?
提前致谢!
答案 0 :(得分:0)
Arduino 2560引脚50和51是TTL电平信号。您需要提供RS-232驱动器来反转和电平转换信号。
示例驱动程序是MAX232CPE。
此外,softwareserial支持反转逻辑级别的选项。从Arduino页面:
inverse_logic:用于反转传入位的意义(默认为普通逻辑)。如果置位,SoftwareSerial将Rx引脚上的低电平(通常为引脚上的0伏特)视为1位(空闲状态),将高电平(引脚上的5伏电压)视为0位。它还会影响它写入Tx引脚的方式。默认值为false。
警告:对于运行在5V的电路板,不应连接输出Arduino可以处理范围之外的串行数据的设备,通常为0V至5V;对于运行电压为3.3V的电路板,不应连接0V至3.3V。