WinCE UHF超高频读卡 900HZ

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using UHFReaderWinCE;


namespace UHF超高频读写Demo
{
    public partial class WriteReadForm : Form
    {
        public WriteReadForm(List cb)
        {
            InitializeComponent();
            this.cb = cb;
        }
        private byte readerAddr = 0xff;
        private int fCmdRet = 0x30;
        List cb = new List();
        private void WriteReadForm_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Escape)
            {
                this.DialogResult = DialogResult.Cancel;
            }
        }


        private void WriteReadForm_Load(object sender, EventArgs e)
        {


            this.cbEPC.DataSource = cb;
        }


        private void button13_Click(object sender, EventArgs e)
        {


        }


        private void button12_Click(object sender, EventArgs e)
        {


        }
        bool stopflag = false;
        private void btnRead_Click(object sender, EventArgs e)
        {
            listboxContent.Items.Clear();
            int result = 0x30;
            int Len = 0;
            byte ENum = 0;
            byte Mem = 0;
            byte Num = 0;
            byte[] WordPtr = new byte[2];
            int Errorcode = 0;
            byte[] Password = new byte[4];
            byte[] Data = new byte[440];
            string str;
            if (cbEPC.Items.Count == 0)
                return;
            str = cbEPC.SelectedItem.ToString();
            if (str == "")
                return;
            ENum = Convert.ToByte(str.Length / 4);
            byte[] EPC = new byte[ENum];
            EPC = HexStringToByteArray(str);
            Mem = 3;//写用户区
            WordPtr = HexStringToByteArray(txtData.Text);
            Password = HexStringToByteArray("00000000");
            stopflag = false;
            for (int m = 0; m < 512; m++)
            {
                int wd = m * 8;
                Num = 8;
                WordPtr[0] = Convert.ToByte(wd >> 8);
                WordPtr[1] = Convert.ToByte(wd & 0x00FF);


                bool success = false;
                for (int k = 0; k < 10; k++)
                {
                    fCmdRet = RWDev.ExtReadData_G2(ref readerAddr, EPC, ENum, Mem, WordPtr, Num, Password,
                        MaskInfo.MaskMem, MaskInfo.MaskAdr, MaskInfo.MaskLen, MaskInfo.MaskData, Data, ref Errorcode);
                    if (fCmdRet == 0)
                    {
                        byte[] daw = new byte[Num * 2];
                        Array.Copy(Data, daw, Num * 2);
                        string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--" + ByteArrayToHexString(daw);
                        listboxContent.Items.Add(temp);
                        listboxContent.SelectedIndex = listboxContent.Items.Count - 1;
                        success = true;
                        break;
                    }
                }
                if (success == false)
                {
                    string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--读取失败";
                    listboxContent.Items.Add(temp);
                }
                Application.DoEvents();
                if (stopflag) break;
            }
        }
        #region 16进制字符串和字节数组相互转化
        ///
        /// 16进制字符串转化为字节数组
        ///

        ///
        ///
        private byte[] HexStringToByteArray(string s)
        {
            s = s.Replace(" ", "");
            byte[] buffer = new byte[s.Length / 2];
            for (int i = 0; i < s.Length; i += 2)
                buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
            return buffer;
        }
        ///
        /// 字节数组转化为16进制字符串
        ///

        ///
        ///
        private string ByteArrayToHexString(byte[] data)
        {
            StringBuilder sb = new StringBuilder(data.Length * 3);
            foreach (byte b in data)
                sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
            return sb.ToString().ToUpper();
        }
        #endregion


        private void btnWrite_Click(object sender, EventArgs e)
        {
            listboxContent.Items.Clear();
            if (txtData.Text.Length != 16) return;
            int result = 0x30;
            byte WNum = 0;
            byte ENum = 0;
            byte Mem = 0;
            byte Num = 0;
            byte[] WordPtr = new byte[2];
            int Errorcode = 0;
            byte[] Password = new byte[4];
            byte[] Data = new byte[440];
            string str, str1;
            if (cbEPC.Items.Count == 0)
                return;
            str = cbEPC.SelectedItem.ToString();
            if (str == "")
                return;
            ENum = Convert.ToByte(str.Length / 4);
            byte[] EPC = new byte[ENum * 2];
            EPC = HexStringToByteArray(str);
            Mem = 3;
            WNum = 4;
            byte[] writedata = new byte[8];
            writedata = HexStringToByteArray(txtData.Text);
            Password = HexStringToByteArray("00000000");
            stopflag = false;
            for (int m = 0; m < 512; m++)
            {
                int wd = m * 8;
                Num = 8;
                WordPtr[0] = Convert.ToByte(wd >> 8);
                WordPtr[1] = Convert.ToByte(wd & 0x00FF);
                bool success = false;
                for (int k = 0; k < 10; k++)
                {
                    fCmdRet = RWDev.ExtWriteData_G2(ref readerAddr, EPC, WNum, ENum, Mem, WordPtr, writedata, Password, MaskInfo.MaskMem, MaskInfo.MaskAdr,
                     MaskInfo.MaskLen, MaskInfo.MaskData, ref Errorcode);
                    if (fCmdRet == 0)
                    {
                        string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--写入成功";
                        listboxContent.Items.Add(temp);
                        success = true;
                        break;
                    }
                }
                if (success == false)
                {
                    string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--写入失败";
                    listboxContent.Items.Add(temp);
                }
                Application.DoEvents();
                if (stopflag) break;
            }
        }


        private void button1_Click(object sender, EventArgs e)
        {
            stopflag = true;
        }
    }

}

WinCE UHF超高频读卡 900HZ_第1张图片

奉上源码:仅供参考http://download.csdn.net/download/dapeng2513/10207048

你可能感兴趣的:(IT,CE)