C# LJYZN-105发卡机 NFC读取
2021-02-07 23:14
标签:mamicode cte sockets component Inventor 卡机 rgs tick services 仅用于“LJYZN-105发卡机”(产品相关资源:http://www.ljyzn.com/product_info.asp?id=202) 1) UI
2) Code C# LJYZN-105发卡机 NFC读取 标签:mamicode cte sockets component Inventor 卡机 rgs tick services 原文地址:https://www.cnblogs.com/CodeSnippet/p/11375915.htmlusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ReaderB;
namespace NFCReader
{
public partial class Form1 : Form
{
//写入配置文件
[DllImport("Kernel32.dll")]
public static extern bool WritePrivateProfileString(string strAppName, string strKeyName, string strString, string strFileName);
//读取配置文件
[DllImport("Kernel32.dll")]
public static extern int GetPrivateProfileString(string strAppName, string strKeyName, string strDefault, StringBuilder sbReturnString, int nSize, string strFileName);
private byte fComAddr, fBaud = 5;
private int frmcomportindex;
private bool fIsInventoryScan;
private string tcp_ip;
private int tcp_port;
private int com_port;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1; i 13; i++)
{
comboBox1.Items.Add("Com" + i.ToString());
}
comboBox1.SelectedIndex = 0;
button2.Enabled = false;
timer1.Enabled = false;
string strFileName = Application.StartupPath + "\\Config.ini";
StringBuilder stringBuilder = new StringBuilder(256);
Form1.GetPrivateProfileString("config", "com", "", stringBuilder, 256, strFileName);
if (!string.IsNullOrEmpty(stringBuilder.ToString().Trim()))
{
com_port = Convert.ToInt32(stringBuilder.ToString());
comboBox1.SelectedIndex = com_port - 1;
int result = StaticClassReaderB.OpenComPort(com_port, ref fComAddr, fBaud, ref frmcomportindex);
if (result == 0)
{
comboBox1.Enabled = false;
button1.Enabled = false;
button2.Enabled = true;
timer1.Enabled = true;
}
else
{
MessageBox.Show("串口通讯错误", "信息提示");
}
}
Form1.GetPrivateProfileString("config", "ip", "", stringBuilder, 256, strFileName);
if (!string.IsNullOrEmpty(stringBuilder.ToString().Trim()))
{
textBox1.Text = tcp_ip = stringBuilder.ToString();
}
Form1.GetPrivateProfileString("config", "port", "", stringBuilder, 256, strFileName);
if (!string.IsNullOrEmpty(stringBuilder.ToString().Trim()))
{
textBox2.Text = stringBuilder.ToString();
tcp_port = Convert.ToInt32(stringBuilder.ToString());
}
}
private void Button2_Click(object sender, EventArgs e)
{
if (frmcomportindex > 0)
{
StaticClassReaderB.CloseSpecComPort(this.frmcomportindex);
button1.Enabled = true;
button2.Enabled = false;
comboBox1.Enabled = true;
timer1.Enabled = false;
//读取NFC卡状态的间隔时间
timer1.Interval = 1000;
}
}
private void Button1_Click(object sender, EventArgs e)
{
int port = comboBox1.SelectedIndex + 1;
int result = StaticClassReaderB.OpenComPort(port, ref fComAddr, fBaud, ref frmcomportindex);
if (result == 0)
{
comboBox1.Enabled = false;
button1.Enabled = false;
button2.Enabled = true;
timer1.Enabled = true;
}
else
{
MessageBox.Show("串口通讯错误", "信息提示");
}
}
private void Timer1_Tick(object sender, EventArgs e)
{
if (fIsInventoryScan)
return;
this.fIsInventoryScan = true;
this.Inventory();
this.fIsInventoryScan = false;
}
private void Inventory()
{
int num = 0;
int num2 = 0;
byte[] array = new byte[5000];
byte adrTID = 0;
byte lenTID = 0;
byte tidflag = 0;
var result = StaticClassReaderB.Inventory_G2(ref this.fComAddr, adrTID, lenTID, tidflag, array, ref num2, ref num, this.frmcomportindex);
if (result == 1 | result == 2 | result == 3 | result == 4 | result == 251)
{
byte[] array2 = new byte[num2];
Array.Copy(array, array2, num2);
string text = this.ByteArrayToHexString(array2);
int num3 = 0;
if (num == 0)
{
if (listBox1.Items.Count > 0)
{
if (!listBox1.Items[listBox1.Items.Count - 1].ToString().Contains("[OFF]"))
{
string newItem = listBox1.Items[listBox1.Items.Count - 1].ToString().Replace("[ON]", "[OFF]");
listBox1.Items.RemoveAt(listBox1.Items.Count - 1);
listBox1.Items.Add(newItem);
listBox1.SelectedIndex = listBox1.Items.Count - 1;
//发送NFC卡离开信息
SendMessage(tcp_ip, tcp_port, newItem);
}
}
return;
}
int num4 = (int)array2[num3];
string text2 = text.Substring(num3 * 2 + 2, num4 * 2);
if (listBox1.Items.Count 0)
{
listBox1.Items.Add(text2 + "[ON]");
//发送NFC靠近信息
SendMessage(tcp_ip, tcp_port, text2 + "[ON]");
listBox1.SelectedIndex = listBox1.Items.Count - 1;
}
else
{
var lastItem = listBox1.Items[listBox1.Items.Count - 1].ToString();
if (lastItem != text2 + "[ON]")
{
listBox1.Items.Add(text2 + "[ON]");
//发送NFC靠近信息
SendMessage(tcp_ip, tcp_port, text2 + "[ON]");
listBox1.SelectedIndex = listBox1.Items.Count - 1;
}
}
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (frmcomportindex > 0)
{
StaticClassReaderB.CloseSpecComPort(this.frmcomportindex);
}
}
private string ByteArrayToHexString(byte[] data)
{
StringBuilder stringBuilder = new StringBuilder(data.Length * 3);
foreach (byte value in data)
{
stringBuilder.Append(Convert.ToString(value, 16).PadLeft(2, ‘0‘));
}
return stringBuilder.ToString().ToUpper();
}
private void TextBox1_TextChanged(object sender, EventArgs e)
{
tcp_ip = textBox1.Text;
}
private void TextBox2_TextChanged(object sender, EventArgs e)
{
tcp_port = Convert.ToInt32(textBox2.Text);
}
private void SendMessage(string nodeAddress, int port,string arg)
{
//...
}
}
}
上一篇:解决WIN10左侧盘符顺序问题
下一篇:restful api设计指南
文章标题:C# LJYZN-105发卡机 NFC读取
文章链接:http://soscw.com/index.php/essay/52368.html