コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        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);
        }