62,046
社区成员
发帖
与我相关
我的任务
分享
// 负责连接设备的委托
public delegate void DeleConnectDev(byte[] ip, int CommPort, uint PortOrBaudRate);
// 数据产生时,触发此事件,更新ListView控件
public delegate void UpdateControlEventHandler();
public static event UpdateControlEventHandler UpdateControl;
//--------------------------------------------页面加载-----------------------------------------------//
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
UpdateControl = new UpdateControlEventHandler(UpdateListView); //订阅UpdateControl事件
// 允许跨线程更新窗口控件
//Control.CheckForIllegalCrossThreadCalls = false; /*这是winform方法,不支持web,注释掉,是这里的原因吗?*/
//连接
ConnDev(comboBoxIP.Text, comboBoxCom.Text, textBoxPort.Text);
}
}
//连接设备
public void ConnDev(string sIP, string sCom, string sPort)
{
// 使用委托异步线程执行连接,等待
DeleConnectDev dcd = new DeleConnectDev(ConnectDevice);
dcd.BeginInvoke(strIP, strCom, strPort, null, null);
ConnectDevice(strIP, strCom, strPort);
}
//委托方法
public static void HandleData(略...)
{
(略.....)
EPC_data epcdata = new EPC_data();
epcdata.epc = epc;
epcdata.antNo = (byte)(data[length - 1] + 1);
epcdata.devNo = (byte)(data[length - 1] + 2);
epcdata.count = 1;
Tag_data.Add(epcdata);
UpdateControl(); // 有新数据产生,更新
}
private void UpdateListView()
{
if (!bNewTag) // 非新标签,更新对应项的读取次数及天线号、设备号等
{
labelCount.Text = (int.Parse(labelCount.Text) + 1).ToString();
}
else // 新标签
{
labelCount.Text = (int.Parse(labelCount.Text) + 1).ToString(); // 更新读取次数
labelTagCount.Text = (int.Parse(labelTagCount.Text) + 1).ToString();// 更新标签计数 /*这个又可以*/
int no = Tag_data.Count;
epcStr= Tag_data[no - 1].epc; //epc
countStr = Tag_data[no - 1].count.ToString(); //次数
antNoStr = Tag_data[no - 1].antNo.ToString(); //天线号
devNoStr = Tag_data[no - 1].devNo.ToString(); //设备号
memo1.Text += epcStr + " " + countStr + " " + antNoStr + " " + antNoStr + " " + devNoStr + " ; \r\n"; /*这里不起作用*/
}
}