⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formmin.cs

📁 指纹识别程序
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;

namespace Fingerprint
{
    public partial class FormMin : Form
    {
        public FormMin()
        {
            InitializeComponent();
        }

        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (btnOpen.Text == "打开")
            {
                OpenSerialPort();//打开串口
            }
            else
            {

                CloseSerialPort();

            }

        }

        private void OpenSerialPort()
        {
            try
            {
                serialPort1.BaudRate = int.Parse(CmbTxtBaudRate.Text); //波特率
                serialPort1.PortName = CmbTxtPortName.Text; // 串口号
                switch (CmbTxtStopBit.Text)
                {
                    case "1": { serialPort1.StopBits = System.IO.Ports.StopBits.One; break; }
                    case "1.5": { serialPort1.StopBits = System.IO.Ports.StopBits.OnePointFive; break; }
                    case "2": {serialPort1.StopBits = System.IO.Ports.StopBits.Two; break;}
                    case "None":{ serialPort1.StopBits = System.IO.Ports.StopBits.None; break;}

                }
                serialPort1.DataBits = int.Parse(CmbTxtDataBits.Text);  //数据位
                
                serialPort1.DtrEnable = chkDtrEnable.Checked;  //DTR

                serialPort1.RtsEnable = chkRtsEnable.Checked;  //RTS

                switch (CmbTxtParity.Text)
                {
                    //奇偶校验
                    case "Even":{serialPort1.Parity=System.IO.Ports.Parity.Even;break;}
                    case "Space": { serialPort1.Parity = System.IO.Ports.Parity.Space; break; }
                    case "Odd": { serialPort1.Parity = System.IO.Ports.Parity.Odd; break; }
                    case "None": { serialPort1.Parity = System.IO.Ports.Parity.None; break; }
                    case "Mark": { serialPort1.Parity = System.IO.Ports.Parity.Mark; break; }                
                }

                

                serialPort1.Open();

                btnOpen.Text = "关闭";
                pic_state.Image = Properties.Resources.Opened;

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                pic_state.Image = Properties.Resources.Closed;
            }


        }

        private void CloseSerialPort()
        {
            serialPort1.Close();
            btnOpen.Text = "打开";
            pic_state.Image = Properties.Resources.Closed;
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            SendDataToRs232();//发送数据

        }

        private bool SendDataToRs232()
        {
            //发送数据
            try
            {
            //    switch (chkHexMode.Checked)
            //    {
            //        case true:
            //            {
                            //Hex 发送
                            byte[] buf = HexCon.StringToByte(SendData.Text); 
                            serialPort1.Write(buf, 0, buf.Length);
                            //break;
                //        }
                //    case false:
                //        {
                //            //普通发送
                //            //serialPort1.WriteLine()
                //            if (chkCrLf.Checked == true)
                //            {

                //                serialPort1.WriteLine(SendData.Text);
                //            }
                //            else
                //            {
                //                serialPort1.Write(SendData.Text);
                //            }
                //            break;
                //        }
                //}

                //if (chkHexMode.Checked == true)
                listBox1.Items.Add("Hex: " + SendData.Text);
                //else
                //    listBox1.Items.Add("Asic:" + SendData.Text);
                return true;

            }
            catch (Exception ex)
            {
               timer1.Enabled = false;
                chkAutoSend.Checked = false;

                MessageBox.Show(ex.Message,"警告");
                 
                return false;

            }
        }

        private void chkHexMode_CheckedChanged(object sender, EventArgs e)
        {
            //if (chkHexMode.Checked == true)
            //{
            //    SendData.Text = "";
            //    SendData.ShortcutsEnabled = false;   //16进制模式下,复制、粘贴 不可以用
            //}
            //else
            //{
            //    SendData.ShortcutsEnabled = true;
            //}
        }

        //string HEX = "0123456789ABCDEF abcdef";
        private void SendData_KeyPress(object sender, KeyPressEventArgs e)
        {
            /*
           if (chkHexMode.Checked == true)
            {
                //16进制模式,只允许输入 0-9 A-F 这些字符
                if (HEX.IndexOf(e.KeyChar) == -1)
                    e.Handled = true;
                else
                    e.Handled = false;
            }*/
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            System.IO.Ports.SerialPort serialPort = (System.IO.Ports.SerialPort)sender;

            int len = serialPort.BytesToRead;
            byte[] bs = new byte[len];
            serialPort.Read(bs, 0, len);
            if (len == 0)
            {
                return;
            }
            else
            {
                //接收处理
                string r = Encoding.ASCII.GetString(bs, 0, len);
                
                //接收数据处理                
                RevDataChars.Invoke(new EventHandler(DoUpdate), r);  //线程处理
                RevDataHex.Invoke(new EventHandler(DoUpdateHex), bs);  //线程处理     

            }
        }

        private void DoUpdate(object s, EventArgs e)
        {         
            RevDataChars.Text+=s.ToString()+"\r\n";
        }
        private void DoUpdateHex(object s, EventArgs e)
        {
            //RevDataHex.Text += s.ToString();
            byte[] InBytes = (byte[])s;

            string StringOut = "";
            foreach (byte InByte in InBytes)
            {
                StringOut = StringOut + String.Format("{0:X2} ", InByte);
            }
            //return StringOut;
            RevDataHex.Text += StringOut;

            int len = StringOut.Length;

          //  string xx = StringOut.Substring(len - 3, 2);

            if (!StringOut.Substring(0,2).Equals("F5") && StringOut.Substring(len-3,2).Equals("F5"))
            {
                RevDataHex.Text += "\r\n";
            }
            
            
        }

        private void FormFingerprint_Load(object sender, EventArgs e)
        {
            ReadSerialPortList();//读取串口列表
        }

        private void ReadSerialPortList()
        {
            //HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
            RegistryKey keyCom = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm");
            if (keyCom != null)
            {
                string[] sSubKeys = keyCom.GetValueNames();
                
                CmbTxtPortName.Items.Clear();

                foreach (string sName in sSubKeys)
                {
                    string sValue = (string)keyCom.GetValue(sName);
                    this.CmbTxtPortName.Items.Add(sValue);
                }
            }
        }

        private void chkAutoSend_CheckedChanged(object sender, EventArgs e)
        {
            if (chkAutoSend.Checked == true)
            {
                //定时自动发送
                btnSend.Enabled = false;
                timer1.Enabled =true;
               
            }
            else
            {
                btnSend.Enabled = true;
                timer1.Enabled = false;
            }
        }

        private void SetAutoSend()
        {
            timer1.Interval = int.Parse(times.Text);

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            SendDataToRs232();
            
        }

        private void btnAddZW_Click(object sender, EventArgs e)
        {
            switch (textBox1.Text)
            {
                case "1": { SendData.Text = "F5 01 00 01 01 00 01 F5"; textBox1.Text = "2";  break; }
                case "2": { SendData.Text = "F5 02 00 01 01 00 02 F5"; textBox1.Text = "3";  break; }
                case "3": { SendData.Text = "F5 03 00 01 01 00 03 F5"; textBox1.Text = "1"; ShowDSPImage(); break; }

            }
            
            //发送数据
            SendDataToRs232();
            
        }

        private void ShowDSPImage()
        {
            //显示指纹
         
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //删除所有指纹
            SendData.Text = "F5 05 00 00 00 00 05 F5";
            SendDataToRs232();//发送数据

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //读取指纹总数
            SendData.Text = "F5 09 00 00 00 00 09 F5";
            SendDataToRs232();//发送数据
        }

        private void button3_Click(object sender, EventArgs e)
        {
            RevDataChars.Text = "";
            RevDataHex.Text = "";

            listBox1.Items.Clear();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //1:1
            SendData.Text = "F5 0B 00 01 00 00 0A F5";
            SendDataToRs232();//发送数据
        }

        private void button5_Click(object sender, EventArgs e)
        {
            //8:1
            SendData.Text = "F5 0C 00 00 00 00 0C F5";
            SendDataToRs232();//发送数据

        }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -