c# 获取串口扫描枪数据

之前负责过一个机场的项目,有一个环节是扫描旅客登机牌,获取旅客信息的操作,当时是拟定了使用串口扫描枪来获取登机牌信息,后面又测试了网口的,这里记录一下当时用来测试串口使用的程序,供有需求的小伙伴们参考,

1、首先引用命名空间

 

using System.IO.Ports;

2、主程序代码

 SerialPort serialPort = new SerialPort();
            //端口名  注:设备管理器中查看一下虚拟com口的名字
            serialPort.PortName = 'COM3';
                serialPort.BaudRate = 115200;//波特率,默认是9600
            serialPort.Parity = Parity.None;
            serialPort.StopBits = StopBits.One;
            serialPort.DataBits = 8;
            serialPort.DiscardNull = true;
            serialPort.DataReceived += serialPort_DataReceived;//监听方法,具体看下面
            serialPort.Open();

3、接收消息后,自动进入此方法

 void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                Logger.Warn($"DataReceived");
                SerialPort serialPort = (SerialPort)sender;
                Logger.Warn($"串口接收长度:{serialPort.BytesToRead}");
                if (serialPort.BytesToRead == 0)
                {
                    return;
                }
                else
                {
                    Thread threadReceiveSub = new Thread(new ParameterizedThreadStart(ReceiveData));
                    threadReceiveSub.Start(serialPort);
                }
            }
            catch (Exception ex)
            {
                Logger.Error($"开启监听异常:{ex.Message}");
            }
        }
private void ReceiveData(object serialPortobj)
        {
            try
            {
                SerialPort serialPort = (SerialPort)serialPortobj;
                //开辟接收缓冲区
                byte[] receiveData = new byte[serialPort.BytesToRead];

                Logger.Warn($"缓冲区长度:{receiveData.Length}");

                //从串口读取数据
                serialPort.Read(receiveData, 0, receiveData.Length);                

                //防止数据接收不完整 线程sleep(150)
                System.Threading.Thread.Sleep(150);
                string str = System.Text.Encoding.UTF8.GetString(receiveData, 0, receiveData.Length);
                //serialPort.ReadExisting();
           
                if (string.IsNullOrEmpty(  str ))
                {
                    Logger.Warn($"串口结束数据转换结果为空!");
                    return;
                }
                else
                {
                    try
                    {
                        str = str.Substring(0, 18);//只去要获取18位,这里根据你们自己的需求来
                    }
                    catch (Exception)
                    {
                        str = '000000000000';//错误码,自己拟定
                    }
                    Logger.Info($"扫描截取信息:{str}");
                }
            }
            catch (Exception ex)
            {
                Logger.Error($"扫描数据失败:{ex.Message}");
            }
        }

这里给大家安排一个串口调试工具

链接:https://pan.baidu.com/s/1rcQBa0I3rNI643XsRyKaFA 
提取码:mszd

 

 

  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
C#获取网口扫码数据的方法可以使用Socket类来实现。首先,你需要创建一个Socket对象,并指定IP地址和端口号。然后,你可以使用Receive方法来接收扫码发送的数据。以下是一个简单的示例代码: ```csharp using System; using System.Net; using System.Net.Sockets; using System.Text; class Program { static void Main() { // 创建Socket对象 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 设置IP地址和端口号 IPAddress ipAddress = IPAddress.Parse("192.168.0.1"); // 替换为扫码的IP地址 int port = 1234; // 替换为扫码的端口号 // 连接到扫码 socket.Connect(ipAddress, port); // 接收数据 byte\[\] buffer = new byte\[1024\]; int bytesRead = socket.Receive(buffer); string data = Encoding.ASCII.GetString(buffer, 0, bytesRead); // 处理接收到的数据 Console.WriteLine("Received data: " + data); // 关闭Socket连接 socket.Close(); } } ``` 请注意,你需要将代码中的IP地址和端口号替换为你实际使用的扫码的IP地址和端口号。此外,你可能还需要根据扫码数据格式进行适当的解析和处理。 #### 引用[.reference_title] - *1* *2* [c# 获取串口扫描枪数据](https://blog.csdn.net/huxinyu0208/article/details/108604001)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值