📄 formmain.cs
字号:
}
else
{
Sound.PlayWAV(@"\Windows\Alarm2.wav");
info = "与读写器建立连接失败!";
}
AddTime2Record(info);
Cursor.Current = Cursors.Default;
}
// 断开连接
private void btn_ClosePort_Click(object sender, EventArgs e)
{
bool IsClosed = RFIDReader.ClosePort();
string info = "";
if (IsClosed)
{
IsOpened = false;
timerDo.Enabled = false;
btn_OpenPort.Enabled = true;
btn_ClosePort.Enabled = false;
btn_CloseReader.Enabled = false;
cmb_CloseDelaySet.Enabled = false;
QueryPower();
Sound.PlayWAV(@"\Windows\Infend.wav");
info = "已断开与读写器连接!";
}
else
{
Sound.PlayWAV(@"\Windows\Alarm2.wav");
info = "断开连接失败!";
}
AddTime2Record(info);
}
// 关闭读写器
private void btn_CloseReader_Click(object sender, EventArgs e)
{
int IsClosed = RFIDReader.CloseReader();
string info = "";
if (IsClosed == 1)
{
Sound.PlayWAV(@"\Windows\Infend.wav");
btn_ClosePort_Click(sender, e);
info = "读写器已关机,重新开机请按读写器开关!";
}
else
{
Sound.PlayWAV(@"\Windows\Alarm2.wav");
info = "关机失败!" + RFIDReader.ErrorMatch(IsClosed);
}
AddTime2Record(info);
}
// 设置读写器自动关机延时
private void cmb_CloseDelaySet_SelectedIndexChanged(object sender, EventArgs e)
{
if (IsOpened)
{
timerDo.Enabled = false;
string info = "";
int IsSet = RFIDReader.SetReaderCloseDelay((byte)(cmb_CloseDelaySet.SelectedIndex + 1));
if (IsSet == 1)
{
CloseDelay = (byte)(cmb_CloseDelaySet.SelectedIndex + 1);
info = "读写器关机延时设置为" + CloseDelay.ToString() + "分钟!";
Sound.PlayWAV(@"\Windows\Infend.wav");
}
else
{
info = "读写器关机延时设置失败!" + RFIDReader.ErrorMatch(IsSet);
Sound.PlayWAV(@"\Windows\Alarm2.wav");
}
AddTime2Record(info);
timerDo.Enabled = true;
}
}
#endregion 读写器配置
#region 读使用证
// 以TID为条件查询气瓶信息
private void TIDQuery(string TID)
{
// 方法一:使用DataSet
Cursor.Current = Cursors.WaitCursor;
// SQL语句
//string SqlStr = "select 标签编号,车牌号,条码编号,出厂编号,气瓶容积,上次检验日期,下次检验日期 from GasInfo Where 标签编号 ='" + TID + "' and 是否已注销=0";
string SqlStr = "Select * from GasInfo Where 标签编号 ='" + TID + "' and 是否已注销=0";
SqlCeDataAdapter SqlAdp = new SqlCeDataAdapter(SqlStr, Conn);
DataSet ds = new DataSet();
SqlAdp.Fill(ds, "GasInfo");
dataGridInfo.DataSource = ds.Tables[0];
Sound.PlayWAV(@"\Windows\Alarm1.wav");
Cursor.Current = Cursors.Default;
/*
// 方法二:使用SqlCeResultSet
Cursor.Current = Cursors.WaitCursor;
// SQL语句
string SqlStr = "Select * from GasInfo Where 标签编号 ='" + TID + "' and 是否已注销=0";
// 创建并配置 SqlCeCommand 对象
SqlCeCommand Cmd = new SqlCeCommand(SqlStr, Conn);
// 创建 SqlCeResultSet 对象,并配置为可滚动、可更新、检测数据源更改
ResultSetOptions Options = ResultSetOptions.Scrollable;
SqlCeResultSet ResultSet = Cmd.ExecuteResultSet(Options);
// 创建 ResultSetView 对象,配置为只显示序号为 1,2,3 的列
ResultSetView ResultSetView = ResultSet.ResultSetView;
int[] ordinals = new int[] { 0, 1, 2 };
ResultSetView.Ordinals = ordinals;
// 将 ResultSetView 绑定到 DataGrid 控件
dataGridInfo.DataSource = ResultSetView;
Cursor.Current = Cursors.Default;
*/
}
// 以车牌号为条件查询气瓶信息
private void VehicleCodeQuery(string VC)
{
Cursor.Current = Cursors.WaitCursor;
// SQL语句
//string SqlStr = "select 标签编号,车牌号,条码编号,出厂编号,气瓶容积,上次检验日期,下次检验日期 from GasInfo Where 标签编号 ='" + TID + "' and 是否已注销=0";
string SqlStr = "Select * from GasInfo Where 车牌号 ='粤A" + VC + "' and 是否已注销=0";
SqlCeDataAdapter SqlAdp = new SqlCeDataAdapter(SqlStr, Conn);
DataSet ds = new DataSet();
SqlAdp.Fill(ds, "GasInfo");
dataGridInfo.DataSource = ds.Tables[0];
Sound.PlayWAV(@"\Windows\Alarm1.wav");
Cursor.Current = Cursors.Default;
}
// 读TID
private void btn_ReadTag_Click(object sender, EventArgs e)
{
IsReceived = -1;
IsFree = false;
timerDo.Enabled = false;
byte[] VisitCode = new byte[4];
// 访问密码默认为4字节的0
for (int i = 0; i < 4; i++)
{
VisitCode[i] = 0;
}
lst_TID.Items.Clear();
List<string> NewTIDCode = new List<string>();
int Result = RFIDReader.ReadTIDCode(VisitCode, ref NewTIDCode);
if (Result == 1)
{
string Time = "";
string nowHour = "";
string nowMinute = "";
string nowSecond = "";
// 播放成功读标签的声音
//Sound.PlayWAV(@"\Windows\Infend.wav");
//tbTIDInfo.Text = "读TID码成功!";
foreach (string TIDCode in NewTIDCode)
{
nowHour = DateTime.Now.Hour.ToString();
nowMinute = DateTime.Now.Minute.ToString();
nowSecond = DateTime.Now.Second.ToString();
RFIDReader.CheckTime(ref nowHour);
RFIDReader.CheckTime(ref nowMinute);
RFIDReader.CheckTime(ref nowSecond);
Time = nowHour + ":" + nowMinute + ":" + nowSecond;
string[] newItem ={ TIDCode, Time };
lst_TID.Items.Insert(0, new ListViewItem(newItem));
lst_TID.Items[0].BackColor = Color.LightPink; //改变底色
}
// 默认查询第1个标签
if (lst_TID.Items.Count >= 1)
{
string TID = lst_TID.Items[0].SubItems[0].Text;
TIDQuery(TID);
}
}
else
{
//tbTIDInfo.Text = "与读写器建立连接失败!" + RFIDReader.ErrorMatch(Result);
Sound.PlayWAV(@"\Windows\Alarm2.wav"); // 播放失败声音
}
IsFree = true;
timerDo.Enabled = true;
}
// 输入车牌号直接查询气瓶信息
private void btn_VehicleCodeQuery_Click(object sender, EventArgs e)
{
if (tb_QueryVehicleCode.Text.Length == 5)
{
VehicleCodeQuery(tb_QueryVehicleCode.Text);
}
else
{
Sound.PlayWAV(@"\Windows\Alarm2.wav");
MessageBox.Show("请输入5位车牌号", "提示");
}
}
// 清除数据
private void btn_TagClear_Click(object sender, EventArgs e)
{
tb_QueryVehicleCode.Text = "";
lst_TID.Items.Clear();
dataGridInfo.DataSource = null;
}
// 改变所选TID时查询
private void lst_TID_SelectedIndexChanged(object sender, EventArgs e)
{
ListView.SelectedIndexCollection SelectedIndexes = lst_TID.SelectedIndices;
foreach (int index in SelectedIndexes)
{
string TID = lst_TID.Items[index].SubItems[0].Text;
TIDQuery(TID);
}
}
// 车牌号输入框获取焦点时 激活输入面板
private void tb_QueryVehicleCode_GotFocus(object sender, EventArgs e)
{
//inputPanel1.Enabled = true;
}
// 车牌号输入框失去焦点时 禁用输入面板
private void dataGridInfo_LostFocus(object sender, EventArgs e)
{
//inputPanel1.Enabled = false;
}
#endregion 读使用证
#region 读条形码
// 以条形码编号为条件查询气瓶信息
private void BarCodeQuery(string BarCode)
{
tb_VehicleCode.Text = "";
tb_ProduceCode.Text = "";
tb_Cuba.Text = "";
tb_LastCheckDate.Text = "";
tb_NextCheckDate.Text = "";
/*
Cursor.Current = Cursors.WaitCursor;
string SqlStr = "select * from GasInfo where 条码编号 ='" + BarCode + "'";
SqlCeDataAdapter SqlAdp = new SqlCeDataAdapter(SqlStr, Conn);
DataSet ds = new DataSet();
SqlAdp.Fill(ds);
Sound.PlayWAV(@"\Windows\Alarm1.wav");
if (ds.Tables[0].Rows.Count > 0)
{
DataRowView DRV = ds.Tables[0].DefaultView[0];
tb_VehicleCode.Text = Convert.ToString(DRV[0]);
tb_ProduceCode.Text = Convert.ToString(DRV[2]);
tb_Cuba.Text = Convert.ToString(DRV[3]);
tb_LastCheckDate.Text = Convert.ToString(DRV[4]);
tb_NextCheckDate.Text = Convert.ToString(DRV[5]);
}
else
{
tb_VehicleCode.Text = "";
tb_ProduceCode.Text = "";
tb_Cuba.Text = "";
tb_LastCheckDate.Text = "";
tb_NextCheckDate.Text = "";
MessageBox.Show("数据库中不存在该条形码编号的气瓶信息", "提示");
}
Cursor.Current = Cursors.Default;
*/
Cursor.Current = Cursors.WaitCursor;
string SqlStr = "select * from GasInfo where 条码编号 ='" + BarCode + "'";
SqlCeCommand Cmd = new SqlCeCommand(SqlStr, Conn);
SqlCeDataReader SDR = Cmd.ExecuteReader();
Sound.PlayWAV(@"\Windows\Alarm1.wav");
if (SDR.Read())
{
tb_VehicleCode.Text = SDR.GetString(0);
tb_ProduceCode.Text = SDR.GetString(2);
tb_Cuba.Text = SDR.GetValue(3).ToString();
tb_LastCheckDate.Text = SDR.GetString(4);
tb_NextCheckDate.Text = SDR.GetString(5);
}
else
{
MessageBox.Show("数据库中不存在该条形码编号的气瓶信息", "提示");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -