我想从我的 USB 条形码阅读器读取数据。为此,我使用了一个虚拟 COM 端口并在 COM3 上连接到它。我可以将数据读入记事本或 Excel 文件。但是,我无法使用以下 C# 应用程序从串行端口条形码阅读器读取数据。
我的代码如下:
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
SerialPort port = new SerialPort("COM3", 115200, Parity.None, 8, StopBits.One);
public Form1()
{
InitializeComponent();
BarCodeReader1.PortName = "COM3";
BarCodeReader1.BaudRate = 115200; // 19200;
BarCodeReader1.Parity = Parity.None;
BarCodeReader1.DataBits = 8;
BarCodeReader1.StopBits = StopBits.One;
BarCodeReader1.Handshake = Handshake.None;
BarCodeReader1.RtsEnable = true;
}
private void cmd_Exit_Click(object sender, EventArgs e)
{
if ((BarCodeReader1.IsOpen))
BarCodeReader1.Close();
this.Close();
}
private void cmd_Start_Click(object sender, EventArgs e)
{
try
{
if (!(BarCodeReader1.IsOpen))
BarCodeReader1.Open();
}
catch (Exception ex)
{
MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
}
}
private void Form1_Load(object sender, EventArgs e)
{
string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
richTextBox1.Text += port + (char)13 + (char)10;
}
}
private void BarCodeReader1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string l_Data = BarCodeReader1.ReadExisting();
textBox1.Text = l_Data;
}
}
}
每当我读取条形码时,事件:BarCodeReader1_DataReceived 都不会被执行。请帮助解决问题。
除了扫描仪的 datawedge 设置外,您还没有显示是否设置了 DataReceived 属性。如果没有设置它就不会工作
SerialPort port = null;
try {
port = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
port.Open();
port.DataReceived += BarCodeReader1_DataReceived;
}
catch { }