我是 C# 的初学者。我在从串行端口条形码阅读器读取数据时遇到问题

问题描述 投票:0回答:1

我想从我的 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 都不会被执行。请帮助解决问题。

c#
1个回答
1
投票

除了扫描仪的 datawedge 设置外,您还没有显示是否设置了 DataReceived 属性。如果没有设置它就不会工作

        SerialPort port = null;
        try {
            port = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
            port.Open();
            port.DataReceived += BarCodeReader1_DataReceived;
        }
        catch { }
© www.soinside.com 2019 - 2024. All rights reserved.