/// <summary> /// 处理盘点到的标签数据 /// </summary> /// <param name="invantoryData"></param> private void detailWithInventoryData(Structs.InventoryData invantoryData) { try { if (InvokeRequired) { Invoke(new delegateUpdataListInventoryDelegate(detailWithInventoryData), invantoryData); } else { if (mlStartTime == -1) { // 盘点到第一个数据之后才开始计时(对于RM70xx,盘点指令发出后,会有给模块 // 复位的时间,不能计算在内) mlStartTime = System.Environment.TickCount; } string epcData = StringUtility.bytes2hexs(invantoryData.epcData, invantoryData.epcLen); string externalData = ""; string pc = StringUtility.bytes2hexs(invantoryData.pc, 2); string strFullData = epcData; bool findFlag = false; int itemIdx = 0; if (invantoryData.externalDataLen > 0) { externalData = StringUtility.bytes2hexs(invantoryData.externalData, invantoryData.externalDataLen); strFullData += externalData; } var list = DatabaseHelper.GetProductInformation(epcData); if (tids.Contains(externalData)) { return; } else { tids.Add(externalData); } if (list.Count > 0) { foreach (KeyValuePair <int, string> item in dicInventoryData) { if (item.Value.Contains(strFullData)) { findFlag = true; itemIdx = item.Key; } } foreach (var item in list) { if (findFlag) { dataGridView1.Rows[itemIdx].Cells[4].Value = dataGridView1.Rows[itemIdx].Cells[4].ToString() + item[3].ToString(); dataGridView1.Rows[itemIdx].Cells[5].Value = dataGridView1.Rows[itemIdx].Cells[5].ToString() + item[2].ToString(); } else { dataGridView1.Rows.Add(item); dicInventoryData.Add((int)mlTagCount, strFullData); // 标签个数加1 mlTagCount++; dataGridView1.Rows[0].Selected = false; } totalpricie += Convert.ToDecimal(item[4]); totalallprice += Convert.ToDecimal(item[2]); totaldiscount += Convert.ToDecimal(item[3]); this.label3.Text = totalpricie.ToString(); this.label12.Text = mlTagCount.ToString(); this.label13.Text = totalallprice.ToString(); this.label14.Text = totaldiscount.ToString(); } this.panel1.Show(); this.groupBox1.Hide(); } } } catch (Exception ex) { LogHelper.WriteLog("", ex); } }
private unsafe int rfidCallbackFunc(int status, UHFConstants.OPTION_TYPES type, IntPtr data, int dataLen) { /* 盘点返回的数据信息 */ switch (type) { case UHFConstants.OPTION_TYPES.OPTION_TYPE_INVENTORY: // 收到盘点到的标签信息 Structs.InventoryData invantoryData = (Structs.InventoryData)Marshal.PtrToStructure(data, typeof(Structs.InventoryData)); detailWithInventoryData(invantoryData); // 收到盘点到的标签信息 break; case UHFConstants.OPTION_TYPES.OPTION_TYPE_ALARM_REPORT: { // 收到报警信息 break; } case UHFConstants.OPTION_TYPES.OPTION_TYPE_HEARTBEAT_REPORT: { break; } case UHFConstants.OPTION_TYPES.OPTION_TYPE_NET_CONNECT: { Structs.NetStatusData netStatusData = (Structs.NetStatusData)Marshal.PtrToStructure(data, typeof(Structs.NetStatusData)); //detailNetConnect(netStatusData); break; } case UHFConstants.OPTION_TYPES.OPTION_TYPE_NET_DISCONNECT: { // 收到网络连接状态,更新网络信息 //DeinitRFID(); break; } case UHFConstants.OPTION_TYPES.OPTION_TYPE_READ: { if (dataLen > 0) { Structs.RWData rwData = (Structs.RWData)Marshal.PtrToStructure(data, typeof(Structs.RWData)); // detailWithRWData(rwData); } else { //tipMsg.Text = String.Format(@"读取失败!错误码:{0}", status); } break; } case UHFConstants.OPTION_TYPES.OPTION_TYPE_WRITE: case UHFConstants.OPTION_TYPES.OPTION_TYPE_KILL: case UHFConstants.OPTION_TYPES.OPTION_TYPE_LOCK: { string[] strTipTitle = { "写入", "销毁", "锁定" }; if (status == 0) { // tipMsg.Text = String.Format(@"{0}成功!", strTipTitle[type - UHFConstants.OPTION_TYPES.OPTION_TYPE_WRITE]); } else { // tipMsg.Text = String.Format(@"{0}失败!错误码:{1}", strTipTitle[type - UHFConstants.OPTION_TYPES.OPTION_TYPE_WRITE], status); } break; } } return(0); }