ab56a9bcf7
SVN-Revision: r240
682 lines
26 KiB
C#
682 lines
26 KiB
C#
using Lskj.Business.Impl;
|
|
using Lskj.Control;
|
|
using Lskj.Control.Model;
|
|
using Lskj.Core;
|
|
using ReaderApi;
|
|
using ReaderApi.Data;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.IO.Ports;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Windows.Forms;
|
|
using static ReaderApi.DeviceManagement;
|
|
|
|
namespace RFIDManagement
|
|
{
|
|
public partial class FrmMain : BaseForm
|
|
{
|
|
public FrmMain()
|
|
{
|
|
InitializeComponent();
|
|
this.Load += OnFormLoad;
|
|
this.FormClosing += OnFrmMainFormClosing;
|
|
}
|
|
/// <summary>
|
|
/// 连接驱动
|
|
/// </summary>
|
|
public DeviceManagement Device;
|
|
/// <summary>
|
|
/// 连接数
|
|
/// </summary>
|
|
public List<Reader> Readers;
|
|
/// <summary>
|
|
/// 消息
|
|
/// </summary>
|
|
public List<Tag> Tags;
|
|
/// <summary>
|
|
/// 标记
|
|
/// </summary>
|
|
public bool StartFlag;
|
|
/// <summary>
|
|
/// 更新数据Timer
|
|
/// </summary>
|
|
public System.Windows.Forms.Timer UpdateTagTimer;
|
|
/// <summary>
|
|
/// 展示视频Timer
|
|
/// </summary>
|
|
public System.Windows.Forms.Timer ShowTimer;
|
|
/// <summary>
|
|
/// 界面上下文
|
|
/// </summary>
|
|
public SynchronizationContext SyncContext;
|
|
/// <summary>
|
|
/// 当前连接
|
|
/// </summary>
|
|
public Reader SelectReader;
|
|
/// <summary>
|
|
/// 数据源
|
|
/// </summary>
|
|
public DataTable SourceTable;
|
|
/// <summary>
|
|
/// 写入数据窗口
|
|
/// </summary>
|
|
FrmDataWrite DataWriteForm;
|
|
/// <summary>
|
|
/// 初始化界面
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnFormLoad(object sender, EventArgs e)
|
|
{
|
|
this.startLinkBtn.Enabled = true;
|
|
this.stopLinkBtn.Enabled = true;
|
|
this.startReadBtn.Enabled = false;
|
|
this.stopReadBtn.Enabled = false;
|
|
this.writeBtn.Enabled = false;
|
|
if (!DBConfig.Instance.CreateConnection())
|
|
{
|
|
MessageUtil.Show("网络连接失败");
|
|
Close();
|
|
}
|
|
StringBuilder sqlBuilder = new StringBuilder();
|
|
sqlBuilder.AppendLine($"if not exists(select top 1 * from sysObjects where Id = object_id(N'P_RfidInfoTab') and xtype = 'U')");
|
|
sqlBuilder.AppendLine($"begin");
|
|
sqlBuilder.AppendLine($"create table P_RfidInfoTab(id int IDENTITY(1, 1) NOT NULL,epc varchar(100) NULL,url varchar(200) NULL,fileType int NULL,nextTime int NULL,orderId int NULL,nowCount int NULL,allCount int NULL)");
|
|
sqlBuilder.AppendLine($"end");
|
|
sqlBuilder.AppendLine($"else begin");
|
|
sqlBuilder.AppendLine($"if not exists(select top 1 * from syscolumns where id = object_id(N'P_RfidInfoTab') and name = 'epc')");
|
|
sqlBuilder.AppendLine($"begin alter table P_RfidInfoTab add epc varchar(100) end");
|
|
sqlBuilder.AppendLine($"if not exists(select top 1 * from syscolumns where id = object_id(N'P_RfidInfoTab') and name = 'url')");
|
|
sqlBuilder.AppendLine($"begin alter table P_RfidInfoTab add url varchar(200) end");
|
|
sqlBuilder.AppendLine($"if not exists(select top 1 * from syscolumns where id = object_id(N'P_RfidInfoTab') and name = 'fileType')");
|
|
sqlBuilder.AppendLine($"begin alter table P_RfidInfoTab add fileType int end");
|
|
sqlBuilder.AppendLine($"if not exists(select top 1 * from syscolumns where id = object_id(N'P_RfidInfoTab') and name = 'nextTime')");
|
|
sqlBuilder.AppendLine($"begin alter table P_RfidInfoTab add nextTime int end");
|
|
sqlBuilder.AppendLine($"if not exists(select top 1 * from syscolumns where id = object_id(N'P_RfidInfoTab') and name = 'orderId')");
|
|
sqlBuilder.AppendLine($"begin alter table P_RfidInfoTab add orderId int end");
|
|
sqlBuilder.AppendLine($"if not exists(select top 1 * from syscolumns where id = object_id(N'P_RfidInfoTab') and name = 'nowCount')");
|
|
sqlBuilder.AppendLine($"begin alter table P_RfidInfoTab add nowCount int end");
|
|
sqlBuilder.AppendLine($"if not exists(select top 1 * from syscolumns where id = object_id(N'P_RfidInfoTab') and name = 'allCount')");
|
|
sqlBuilder.AppendLine($"begin alter table P_RfidInfoTab add allCount int end");
|
|
sqlBuilder.AppendLine($"end");
|
|
SqlHelper.ExecuteNonQuery(sqlBuilder.ToString());
|
|
SqlHelper.ExecuteNonQuery("update P_RfidInfoTab set nowCount = '0'");
|
|
UpdateTagTimer = new System.Windows.Forms.Timer();
|
|
UpdateTagTimer.Interval = 200;
|
|
UpdateTagTimer.Tick += OnUpdateTagTimerTick;
|
|
UpdateTagTimer.Enabled = true;
|
|
ShowTimer = new System.Windows.Forms.Timer();
|
|
ShowTimer.Interval = 100;
|
|
ShowTimer.Tick += OnShowTimerTick;
|
|
ShowTimer.Enabled = true;
|
|
SyncContext = SynchronizationContext.Current;
|
|
Device = new DeviceManagement();
|
|
Tags = new List<Tag>();
|
|
Readers = new List<Reader>();
|
|
Device.OnDeviceState += new DeviceEventHandle(OnDeviceEventHandle);
|
|
Device.OnRecvMessage += new MessageReceivedEventHandle(OnRecvMessageEventHandle);
|
|
this.startLinkBtn.Click += OnStartLinkBtnClick;
|
|
this.stopLinkBtn.Click += OnStopLinkBtnClick;
|
|
this.startReadBtn.Click += OnStartReadBtnClick;
|
|
this.stopReadBtn.Click += OnStopReadBtnClick;
|
|
this.writeBtn.Click += OnWriteBtnClick;
|
|
this.refushBtn.Click += OnRefushBtnClick; ;
|
|
this.com_LinkType.SelectedIndexChanged += OnComLinkTypeSelectedIndexChanged;
|
|
string linkType = IniHelper.Read("LinkType");
|
|
int selectIndex = com_LinkType.Properties.Items.IndexOf(linkType);
|
|
com_LinkType.SelectedIndex = selectIndex;
|
|
InitSourceTable();
|
|
}
|
|
/// <summary>
|
|
/// 开始连接按钮点击时
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnStartLinkBtnClick(object sender, EventArgs e)
|
|
{
|
|
string connectMode = com_LinkType.Text;
|
|
string connectStr = com_LinkPms.Text;
|
|
try
|
|
{
|
|
ConnectDevice(connectMode, connectStr, 1);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 断开连接
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnStopLinkBtnClick(object sender, EventArgs e)
|
|
{
|
|
ConnectClose();
|
|
lb_LinkTips.Text = "未连接";
|
|
lb_LinkTips.ForeColor = Color.Gray;
|
|
startLinkBtn.Enabled = true;
|
|
stopLinkBtn.Enabled = true;
|
|
startReadBtn.Enabled = false;
|
|
stopReadBtn.Enabled = false;
|
|
writeBtn.Enabled = false;
|
|
}
|
|
/// <summary>
|
|
/// 开始读取
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnStartReadBtnClick(object sender, EventArgs e)
|
|
{
|
|
if (lb_LinkTips.Text.Equals("已连接"))
|
|
{
|
|
Tags.Clear();
|
|
var result = SelectReader?.Send(new InventoryPara(InventoryMode.EPC));
|
|
if (result != null)
|
|
{
|
|
GlobalPara.tagDisplayArea = TagDisplayArea.main;
|
|
}
|
|
startLinkBtn.Enabled = false;
|
|
stopLinkBtn.Enabled = true;
|
|
startReadBtn.Enabled = false;
|
|
stopReadBtn.Enabled = true;
|
|
writeBtn.Enabled = false;
|
|
}
|
|
else
|
|
{
|
|
MessageUtil.Show("未连接");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 停止读取
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnStopReadBtnClick(object sender, EventArgs e)
|
|
{
|
|
SelectReader?.Send(new InventoryStopPara());
|
|
startLinkBtn.Enabled = false;
|
|
stopLinkBtn.Enabled = true;
|
|
startReadBtn.Enabled = true;
|
|
stopReadBtn.Enabled = false;
|
|
writeBtn.Enabled = true;
|
|
}
|
|
/// <summary>
|
|
/// 标签写入按钮点击
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnWriteBtnClick(object sender, EventArgs e)
|
|
{
|
|
if (!StartFlag)
|
|
{
|
|
try
|
|
{
|
|
DataWriteForm = new FrmDataWrite();
|
|
DataWriteForm.SelectReader = SelectReader;
|
|
DataWriteForm.ShowDialog();
|
|
DataWriteForm.Dispose();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageUtil.Show("请先停止读取数据");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 重置按钮点击
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnRefushBtnClick(object sender, EventArgs e)
|
|
{
|
|
SqlHelper.ExecuteNonQuery("update P_RfidInfoTab set nowCount = '0'");
|
|
}
|
|
/// <summary>
|
|
/// 切换连接模式
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnComLinkTypeSelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (com_LinkType.Text.Equals("RS232"))
|
|
{
|
|
InitRS232();
|
|
}
|
|
else if (com_LinkType.Text.Equals("UDP"))
|
|
{
|
|
InitUDP();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// RFID设备状态改变事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnDeviceEventHandle(object sender, DeviceEventArgs e)
|
|
{
|
|
if (e.cmd == ReaderApi.DeviceState.Connected)
|
|
{
|
|
foreach (Reader re in Readers)
|
|
{
|
|
var result = re?.Send(new InventoryStopPara());
|
|
}
|
|
AddReader(e.reader);
|
|
SyncContext.Post(AddReaderUI, e.reader);
|
|
}
|
|
else if (e.cmd == ReaderApi.DeviceState.Disconnected)
|
|
{
|
|
RemoveReader(e.reader);
|
|
SyncContext.Post(RemoveReaderUI, e.reader);
|
|
}
|
|
else if (e.cmd == ReaderApi.DeviceState.ConnectError)
|
|
{
|
|
SelectReader = null;
|
|
MessageUtil.Show($"连接错误!\r\n{e.reader.connectStr}");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 接收RFID数据事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnRecvMessageEventHandle(object sender, MessageReceivedEventArgs e)
|
|
{
|
|
if (e.data != null)
|
|
{
|
|
if (e.cmd == CmdType.cmd_tag || e.cmd == CmdType.cmd_write_tag || e.cmd == CmdType.cmd_lock_tag || e.cmd == CmdType.cmd_kill_tag) //标签数据
|
|
{
|
|
if (GlobalPara.tagDisplayArea == TagDisplayArea.main)
|
|
{
|
|
GlobalMethod.AddTag(e.data as Tag, Tags);
|
|
}
|
|
else if (GlobalPara.tagDisplayArea == TagDisplayArea.writeTag || GlobalPara.tagDisplayArea == TagDisplayArea.writeTagRead || GlobalPara.tagDisplayArea == TagDisplayArea.writeTagReadListBox2)
|
|
{
|
|
SyncContext.Post(DataWriteFormAddTag, e.data);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (e.cmd == CmdType.cmd_tag_epc || e.cmd == CmdType.cmd_tag_tid || e.cmd == CmdType.cmd_tag_epc_tid || e.cmd == CmdType.cmd_tag_epc_user) //开始读取标签成功
|
|
{
|
|
StartFlag = (e.data as Result).isSuccess;
|
|
}
|
|
else if (e.cmd == CmdType.cmd_inventory_stop)//停止读标签成功
|
|
{
|
|
if ((e.data as Result).isSuccess)
|
|
{
|
|
StartFlag = false;
|
|
}
|
|
}
|
|
if (e.cmd == CmdType.cmd_485_address)//485地址设置
|
|
{
|
|
if ((e.data as Result).isSuccess)
|
|
{
|
|
MessageUtil.Show("485地址已经改变");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 创建数据源
|
|
/// </summary>
|
|
private void InitSourceTable()
|
|
{
|
|
SourceTable = new DataTable();
|
|
SourceTable.Columns.Add("EpcColumn");
|
|
SourceTable.Columns.Add("PCColumn");
|
|
SourceTable.Columns.Add("AntColumn");
|
|
SourceTable.Columns.Add("RSSIColumn");
|
|
SourceTable.Columns.Add("CountColumn");
|
|
SourceTable.Columns.Add("FrequencyColumn");
|
|
this.gcMain.DataSource = SourceTable;
|
|
}
|
|
/// <summary>
|
|
/// 加载串口
|
|
/// </summary>
|
|
private void InitRS232()
|
|
{
|
|
string comPort = IniHelper.Read("RS232");
|
|
com_LinkPms.Properties.Items.Clear();
|
|
string[] ports = SerialPort.GetPortNames();
|
|
foreach (string port in ports)
|
|
{
|
|
com_LinkPms.Properties.Items.Add(port);
|
|
}
|
|
int selectIndex = com_LinkPms.Properties.Items.IndexOf(comPort);
|
|
if (selectIndex > 0)
|
|
{
|
|
com_LinkPms.SelectedIndex = selectIndex;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 加载UDP
|
|
/// </summary>
|
|
private void InitUDP()
|
|
{
|
|
string udpServer = IniHelper.Read("UDP");
|
|
com_LinkPms.Properties.Items.Clear();
|
|
if (!string.IsNullOrEmpty(udpServer))
|
|
{
|
|
com_LinkPms.Text = udpServer;
|
|
}
|
|
else
|
|
{
|
|
com_LinkPms.Text = "192.168.0.188:4001";
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 保存连接信息
|
|
/// </summary>
|
|
private void SaveLink()
|
|
{
|
|
IniHelper.Write("LinkType", com_LinkType.Text);
|
|
if (com_LinkType.Text.Equals("RS232"))
|
|
{
|
|
IniHelper.Write("RS232", com_LinkPms.Text);
|
|
}
|
|
else if (com_LinkType.Text.Equals("UDP"))
|
|
{
|
|
IniHelper.Write("UDP", com_LinkPms.Text);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 创建连接
|
|
/// </summary>
|
|
/// <param name="connectMode"></param>
|
|
/// <param name="connectStr"></param>
|
|
/// <param name="rs485add"></param>
|
|
private void ConnectDevice(string connectMode, string connectStr, int rs485add)
|
|
{
|
|
Device.Open(connectMode, connectStr, rs485add);
|
|
}
|
|
/// <summary>
|
|
/// 添加Readers
|
|
/// </summary>
|
|
/// <param name="state"></param>
|
|
private void AddReaderUI(object state)
|
|
{
|
|
if (Readers.Count == 1)
|
|
{
|
|
WaitForm.ShowForm("连接中...");
|
|
SelectReader = Readers.First();
|
|
InventoryStopPara stopPara = new InventoryStopPara();
|
|
var resultStop = SelectReader?.SendSyn(stopPara);
|
|
SyncContext.Post(UpdateConnectState, resultStop);
|
|
if (resultStop.isSuccess)
|
|
{
|
|
GetVersionPara para = new GetVersionPara();
|
|
var result = SelectReader?.SendSyn(para);
|
|
SyncContext.Post(UpdateVersion, result);
|
|
}
|
|
WaitForm.HideForm();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 添加Reader
|
|
/// </summary>
|
|
/// <param name="reader"></param>
|
|
public void AddReader(Reader reader)
|
|
{
|
|
lock (Readers)
|
|
{
|
|
var newReaderFlag = false;
|
|
foreach (var re in Readers)
|
|
{
|
|
if (re.connectStr == reader.connectStr)
|
|
{
|
|
newReaderFlag = true;
|
|
}
|
|
}
|
|
if (!newReaderFlag)
|
|
{
|
|
Readers.Add(reader);
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 移除Readers
|
|
/// </summary>
|
|
/// <param name="state"></param>
|
|
private void RemoveReaderUI(object state)
|
|
{
|
|
if (Readers.Count == 1)
|
|
{
|
|
SelectReader = Readers.First();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 移除Readers
|
|
/// </summary>
|
|
/// <param name="reader"></param>
|
|
private void RemoveReader(Reader reader)
|
|
{
|
|
lock (Readers)
|
|
{
|
|
foreach (var re in Readers)
|
|
{
|
|
if (re.connectStr == reader.connectStr)
|
|
{
|
|
Readers.Remove(reader);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 更新连接信息
|
|
/// </summary>
|
|
/// <param name="state"></param>
|
|
private void UpdateConnectState(object state)
|
|
{
|
|
var result = state as Result;
|
|
if (!result.isSuccess)
|
|
{
|
|
MessageUtil.Show(result.errorMsg);
|
|
lb_LinkTips.Text = "连接失败";
|
|
lb_LinkTips.ForeColor = Color.Red;
|
|
ConnectClose();
|
|
}
|
|
}
|
|
private void UpdateVersion(object state)
|
|
{
|
|
var result = state as Result;
|
|
if (result.isSuccess)
|
|
{
|
|
lb_LinkTips.Text = "已连接";
|
|
lb_LinkTips.ForeColor = Color.Green;
|
|
startLinkBtn.Enabled = false;
|
|
stopLinkBtn.Enabled = true;
|
|
startReadBtn.Enabled = true;
|
|
stopReadBtn.Enabled = false;
|
|
writeBtn.Enabled = true;
|
|
SaveLink();
|
|
}
|
|
else
|
|
{
|
|
lb_LinkTips.Text = "连接失败";
|
|
lb_LinkTips.ForeColor = Color.Red;
|
|
ConnectClose();
|
|
startLinkBtn.Enabled = true;
|
|
stopLinkBtn.Enabled = true;
|
|
startReadBtn.Enabled = false;
|
|
stopReadBtn.Enabled = false;
|
|
writeBtn.Enabled = false;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 关闭连接
|
|
/// </summary>
|
|
private void ConnectClose()
|
|
{
|
|
Device?.Close();
|
|
Readers?.Clear();
|
|
Tags?.Clear();
|
|
gridView?.BeginUpdate();
|
|
SourceTable?.Rows.Clear();
|
|
gridView?.EndUpdate();
|
|
SelectReader = null;
|
|
}
|
|
/// <summary>
|
|
/// 更新数据事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnUpdateTagTimerTick(object sender, EventArgs e)
|
|
{
|
|
gridView.BeginUpdate();
|
|
lock (Tags)
|
|
{
|
|
foreach (Tag tag in Tags)
|
|
{
|
|
DataRow row = SourceTable.AsEnumerable().Where(n => (n["EpcColumn"] + "").Equals(tag.epc)).FirstOrDefault();
|
|
if (row != null)
|
|
{
|
|
row["PCColumn"] = tag.pc.ToString();
|
|
row["AntColumn"] = tag.ant.ToString();
|
|
row["RSSIColumn"] = tag.rssi.ToString();
|
|
row["CountColumn"] = tag.count.ToString();
|
|
if (tag.frequency >= 0xC9)
|
|
{
|
|
row["FrequencyColumn"] = tag.frequency.ToString("X2");
|
|
}
|
|
else
|
|
{
|
|
if (Frequency.frequency.ContainsKey(tag.frequency))
|
|
{
|
|
row["FrequencyColumn"] = Frequency.frequency[tag.frequency];
|
|
}
|
|
else
|
|
{
|
|
row["FrequencyColumn"] = tag.frequency.ToString("X2");
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
DataRow newRow = SourceTable.NewRow();
|
|
newRow["EpcColumn"] = tag.epc.ToString();
|
|
newRow["PCColumn"] = tag.pc.ToString();
|
|
newRow["AntColumn"] = tag.ant.ToString();
|
|
newRow["RSSIColumn"] = tag.rssi.ToString();
|
|
newRow["CountColumn"] = tag.count.ToString();
|
|
newRow["FrequencyColumn"] = tag.frequency.ToString();
|
|
SourceTable.Rows.Add(newRow);
|
|
}
|
|
}
|
|
List<DataRow> deleteRows = new List<DataRow>();
|
|
foreach (DataRow row in SourceTable.Rows)
|
|
{
|
|
Tag tag = Tags.Where(n => n.epc.Equals(row["EpcColumn"] + "")).FirstOrDefault();
|
|
if (tag == null)
|
|
{
|
|
deleteRows.Add(row);
|
|
}
|
|
}
|
|
foreach (DataRow deleteRow in deleteRows)
|
|
{
|
|
SourceTable.Rows.Remove(deleteRow);
|
|
}
|
|
}
|
|
gridView.EndUpdate();
|
|
Tags.Clear();
|
|
}
|
|
/// <summary>
|
|
/// 更新数据事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnShowTimerTick(object sender, EventArgs e)
|
|
{
|
|
ShowTimer.Enabled = false;
|
|
try
|
|
{
|
|
List<DataRow> dataRowsList = SourceTable.AsEnumerable().OrderByDescending(n => Convert.ToDecimal(n["RSSIColumn"])).ToList();
|
|
if (dataRowsList != null)
|
|
{
|
|
foreach (DataRow dataRow in dataRowsList)
|
|
{
|
|
string epcValue = dataRow["EpcColumn"] + "";
|
|
DataTable selectTable = BaseImpl.GetDataTableResult($"select * from P_RfidInfoTab where epc = '{epcValue}' order by orderId");
|
|
foreach (DataRow selectRow in selectTable.Rows)
|
|
{
|
|
try
|
|
{
|
|
int.TryParse(selectRow["id"] + "", out int id);
|
|
int.TryParse(selectRow["nextTime"] + "", out int nextTime);
|
|
string url = selectRow["url"] + "";
|
|
int.TryParse(selectRow["fileType"] + "", out int fileType);
|
|
int.TryParse(selectRow["nowCount"] + "", out int nowCount);
|
|
int.TryParse(selectRow["allCount"] + "", out int allCount);
|
|
int intervalTime = nextTime != 0 ? nextTime * 1000 : 1000;
|
|
if (nowCount < allCount)
|
|
{
|
|
using (FrmVlcPlayer frmVlcPlayer = new FrmVlcPlayer())
|
|
{
|
|
frmVlcPlayer.PlayVideo(url);
|
|
if (fileType.Equals(0))
|
|
{
|
|
frmVlcPlayer.Opacity = 1;
|
|
frmVlcPlayer.WindowState = FormWindowState.Maximized;
|
|
}
|
|
else
|
|
{
|
|
frmVlcPlayer.Opacity = 0;
|
|
frmVlcPlayer.WindowState = FormWindowState.Minimized;
|
|
}
|
|
frmVlcPlayer.TopMost = true;
|
|
frmVlcPlayer.ShowDialog();
|
|
}
|
|
SqlHelper.ExecuteNonQuery($"update P_RfidInfoTab set nowCount = '{nowCount + 1}' where id = '{id}'");
|
|
Thread.Sleep(intervalTime);
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine(ex.Message);
|
|
}
|
|
ShowTimer.Enabled = true;
|
|
}
|
|
/// <summary>
|
|
/// 写入数据
|
|
/// </summary>
|
|
private void DataWriteFormAddTag(object state)
|
|
{
|
|
DataWriteForm?.AddTag(state as Tag);
|
|
}
|
|
/// <summary>
|
|
/// 窗体关闭时
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnFrmMainFormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
|
|
{
|
|
if (stopReadBtn.Enabled)
|
|
{
|
|
OnStopReadBtnClick(null, null);
|
|
}
|
|
if (stopLinkBtn.Enabled)
|
|
{
|
|
OnStopLinkBtnClick(null, null);
|
|
}
|
|
}
|
|
}
|
|
}
|