中电海康固定式读写器使用示例
侧边栏壁纸
  • 累计撰写 62 篇文章
  • 累计收到 23 条评论

中电海康固定式读写器使用示例

一缕清风
2021-03-17 / 0 评论 / 13 阅读 / 正在检测是否收录...

简介

本文介绍了c#下调用中电海康固定式rfid读写器简单调用示例以及一些rfid读写器基础设置等。本示例基于中电海康读写器304编写;其他中电海康固定式读写器请自定义更改。

核心代码

using RFIDReaderDll;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CetHikExample
{
    /// <summary>
    /// 作者:www.cisharp.com
    /// 描述:此示例基于中电海康304固定式读写器编写;若其它型号的固定式读写器,请自定义更改。
    /// </summary>
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private RFIDReaderDll.RFIDClient reader;
        private void btn_conn_Click(object sender, EventArgs e)
        {
            if (btn_conn.Text == "连接")
            {
                reader = new RFIDReaderDll.RFIDClient();
                //网口方式连接
                reader.Connect(txt_ip.Text, 7880);
                //串口连接
                //reader.ConnectSerial("COM5",115200);
                reader.OnInventoryReport += Reader_OnInventoryReport;
                btn_conn.Text = "断开";
            }
            else
            {
                reader?.StopPeriodInventory();
                reader?.Disconnect();
                btn_conn.Text = "连接";
            }
        }

        private void Reader_OnInventoryReport(object sender, RFIDReaderDll.InventoryReportEventArgs e)
        {
            //与界面控件交互需要Invoke
            this.Invoke((Action)delegate
            {
                foreach (var item in e.Report.Tags)
                {
                    ri_log.Text += item.Epc + "\r\n";
                }
            });
        }

        private void btn_inv_Click(object sender, EventArgs e)
        {
            if (reader.connectstate == ConnectState.Connected && btn_inv.Text == "开启盘点")
            {
                reader.StartPerioInventory();
                btn_inv.Text = "停止盘点";
            }
            else
            {
                reader.StopPeriodInventory();
                btn_inv.Text = "开启盘点";
            }
        }

        private void btn_cfg_Click(object sender, EventArgs e)
        {
            if (reader.connectstate == ConnectState.Connected)
            {
                SET_ALLANTENNA_PARAM ant = new SET_ALLANTENNA_PARAM()
                {
                    //天线1
                    ant1 = new SET_ANTENNA_PARAMS()
                    {
                        //是否启用
                        bEnable = true,
                        //驻留时长
                        nDwellTime = 500,
                        //盘点周期
                        nInvCycle = 200,
                        //天线功率
                        nPower = 25
                    },
                    //天线2
                    ant2 = new SET_ANTENNA_PARAMS()
                    {
                        bEnable = false,
                        nDwellTime = 500,
                        nInvCycle = 200,
                        nPower = 25
                    },
                    //天线3
                    ant3 = new SET_ANTENNA_PARAMS()
                    {
                        bEnable = false,
                        nDwellTime = 500,
                        nInvCycle = 200,
                        nPower = 25
                    },
                    //天线4
                    ant4 = new SET_ANTENNA_PARAMS()
                    {
                        bEnable = false,
                        nDwellTime = 500,
                        nInvCycle = 200,
                        nPower = 25
                    }
                };

                //设置天线参数
                reader.SetAntenna(ref ant);
                MessageBox.Show("保存成功");
            }
        }
    }
}

示例程序

0

评论 (0)

取消