📄 formmin.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 + -