예제 #1
0
        private void btnExport_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folder = new FolderBrowserDialog();

            if (DialogResult.OK == folder.ShowDialog())
            {
                String    path    = folder.SelectedPath + "\\车辆检测数据" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
                string    columns = "id,carnumber,nozzleno,arrivetime,begintime,leavetime,carlogo,subcarlogo";
                DataTable dt      = queryData(columns, false);
                dt.Columns.Add("carbrand", typeof(string));
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    string carlogoKey = dt.Rows[i]["carlogo"].ToString() + "-" + dt.Rows[i]["subcarlogo"].ToString();
                    string carlogo    = "未知";
                    if (Global.carLogoHashtable.Contains(carlogoKey))
                    {
                        carlogo = (string)Global.carLogoHashtable[carlogoKey];
                    }
                    dt.Rows[i]["carbrand"] = carlogo;
                }

                if (SystemUnit.ExportDataToExcel(dt, path))
                {
                    MessageBox.Show("导出数据成功");
                }
                else
                {
                    MessageBox.Show("导出数据失败");
                }
            }

            ;
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            MEMORY_INFO MemInfo;

            MemInfo = new MEMORY_INFO();
            SystemUnit.GlobalMemoryStatus(ref MemInfo);
            toolRAM.Text = MemInfo.dwMemoryLoad.ToString() + "%";
        }
        private void ReceiveMasssage(object clientSocket)
        {
            //Socket myClientSocket = (Socket)clientSocket;
            while (isRun)
            {
                try
                {
                    byte[] buff = new byte[1024];

                    int count = cSocket.Receive(buff);
                    if (count > 0)
                    {
                        if (buff[2] == 0x03 && buff[3] == 2)
                        {
                            SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, (int)Global.WM_CARSNAP, buff[4], buff[5]);
                        }
                        else if (buff[2] == 0x02 && buff[3] == 58 && count >= 62)
                        {
                            struLoginInfo info    = new struLoginInfo();
                            byte[]        reivBuf = new byte[58];
                            Buffer.BlockCopy(buff, 4, reivBuf, 0, 58);
                            info = (struLoginInfo)SystemUnit.BytesToStruts(reivBuf, typeof(struLoginInfo));
                            string ip        = System.Text.Encoding.Default.GetString(info.byIP);
                            int    port      = info.wPort;
                            string loginName = System.Text.Encoding.Default.GetString(info.byLoginName);
                            string password  = System.Text.Encoding.Default.GetString(info.byPassword);
                            byte[] sendbuf   = new byte[9];
                            sendbuf[0] = 0xFF;
                            sendbuf[1] = 0xFF;
                            sendbuf[2] = 0x02;
                            sendbuf[3] = 1;
                            if (ip == Global.clsNvrInfo.ip && port == Global.clsNvrInfo.port &&
                                loginName == Global.clsNvrInfo.loginName && password == Global.clsNvrInfo.password)
                            {
                                sendbuf[4] = 1;//1 成功
                            }
                            else
                            {
                                sendbuf[4] = 0;//0 失败
                            }
                            ushort crc = SystemUnit.getCRC(sendbuf, 0, 5);
                            sendbuf[5] = (byte)(crc / 256);
                            sendbuf[6] = (byte)(crc % 256);
                            sendbuf[7] = 0xEE;
                            sendbuf[8] = 0xEE;
                            Send(sendbuf);
                        }
                    }
                    Thread.Sleep(30);
                }
                catch (System.Exception ex)
                {
                }
            }
        }
예제 #4
0
        private void SetNozzleParamToDll()
        {
            int structLenth = Marshal.SizeOf(typeof(struNozzleRecog));

            struNozzleRecog[] nozzleRecog = new struNozzleRecog[Global.nozzleList.Count];
            byte[]            ipp         = new byte[10000];
            int offset = 0;

            for (int i = 0; i < Global.nozzleList.Count; i++)
            {
                nozzleRecog[i].nozzleNo  = Global.nozzleList[i].nozzleNo;
                nozzleRecog[i].areas     = new struArea[8];
                nozzleRecog[i].areaCount = Global.nozzleList[i].linkedMainAreaList.Count;
                for (int j = 0; j < nozzleRecog[i].areaCount; j++)
                {
                    if (Global.areaMap.ContainsKey(Global.nozzleList[i].linkedMainAreaList[j]))
                    {
                        int index = Global.areaMap[Global.nozzleList[i].linkedMainAreaList[j]];
                        nozzleRecog[i].videoChan            = Global.areaList[index].videoChannel;
                        nozzleRecog[i].areas[j].areaNo      = Global.areaList[index].id;
                        nozzleRecog[i].areas[j].left        = (int)(Global.areaList[index].left * Global.nDefaultWidth);
                        nozzleRecog[i].areas[j].right       = (int)(Global.areaList[index].right * Global.nDefaultWidth);
                        nozzleRecog[i].areas[j].top         = (int)(Global.areaList[index].top * Global.nDefaultHeight);
                        nozzleRecog[i].areas[j].bottom      = (int)(Global.areaList[index].bottom * Global.nDefaultHeight);
                        nozzleRecog[i].areas[j].videoLaneNo = Global.areaList[index].videoLaneNo;
                    }
//                     foreach (ClsRecogArea area in Global.areaList)
//                     {
//                         if (Global.nozzleList[i].linkedMainAreaList[j] == area.id)
//                         {
//                             nozzleRecog[i].videoChan = area.videoChannel;
//                             nozzleRecog[i].areas[j].areaNo = area.id;
//                             nozzleRecog[i].areas[j].left = (int)(area.left * Global.nDefaultWidth);
//                             nozzleRecog[i].areas[j].right = (int)(area.right * Global.nDefaultWidth);
//                             nozzleRecog[i].areas[j].top = (int)(area.top * Global.nDefaultHeight);
//                             nozzleRecog[i].areas[j].bottom = (int)(area.bottom * Global.nDefaultHeight);
//                             nozzleRecog[i].areas[j].videoLaneNo = area.videoLaneNo;
//                         }
//                     }
                }

                byte[] bNozzle = SystemUnit.StrutsToBytesArray(nozzleRecog[i]);
                Buffer.BlockCopy(bNozzle, 0, ipp, offset, structLenth);
                offset += structLenth;
            }
            SPlate.SP_InitRunParam_Nozzle(ipp, Global.nozzleList.Count);
            Global.LogServer.Add(new LogInfo("Debug", "Main->InitDev->SetNozzleParamToDll 油枪参数传入动态库完成,油枪数:" + Global.nozzleList.Count.ToString(), (int)EnumLogLevel.DEBUG));
        }
 private void timerServiceStaus_Tick(object sender, EventArgs e)
 {
     this.ShowMemoryInfo();
     this.ShowMatchRatio();
     SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, (int)WM_HEARTBEAT, 0, 0);
     gcCount++;
     if (gcCount > 60)
     {
         gcCount = 0;
         GC.Collect();
     }
     statusCount++;
     if (statusCount > 3)
     {
         statusCount = 0;
         SendStatusToRemote();
     }
 }
예제 #6
0
        private void SetVideoChanParamToDll()
        {
            int structLenth = Marshal.SizeOf(typeof(struVideoChan));

            //IntPtr ip = Marshal.AllocHGlobal(Global.nozzleList.Count* structLenth);
            struVideoChan[] videoChan = new struVideoChan[Global.videoChanList.Count];
            byte[]          ipp       = new byte[10000];
            int             offset    = 0;

            for (int i = 0; i < Global.videoChanList.Count; i++)
            {
                videoChan[i].chanNo    = Global.videoChanList[i].channelNo;
                videoChan[i].areaCount = Global.videoChanList[i].areaNoList.Count;
                videoChan[i].videoType = Global.videoChanList[i].videoType;
                videoChan[i].areas     = new struArea[8];
                for (int j = 0; j < videoChan[i].areaCount; j++)
                {
                    if (Global.areaMap.ContainsKey(Global.videoChanList[i].areaNoList[j]))
                    {
                        int index = Global.areaMap[Global.videoChanList[i].areaNoList[j]];
                        videoChan[i].areas[j].areaNo      = Global.areaList[index].id;
                        videoChan[i].areas[j].left        = (int)(Global.areaList[index].left * Global.nDefaultWidth);
                        videoChan[i].areas[j].right       = (int)(Global.areaList[index].right * Global.nDefaultWidth);
                        videoChan[i].areas[j].top         = (int)(Global.areaList[index].top * Global.nDefaultHeight);
                        videoChan[i].areas[j].bottom      = (int)(Global.areaList[index].bottom * Global.nDefaultHeight);
                        videoChan[i].areas[j].videoChanNo = videoChan[i].chanNo;
                        videoChan[i].areas[j].videoLaneNo = Global.areaList[index].videoLaneNo;
                    }
                }
                byte[] byVideo = SystemUnit.StrutsToBytesArray(videoChan[i]);
                Buffer.BlockCopy(byVideo, 0, ipp, offset, structLenth);
                offset += structLenth;
            }
            SPlate.SP_InitRunParam_Video(ipp, Global.videoChanList.Count);
            Global.LogServer.Add(new LogInfo("Debug", "Main->InitDev->SetVideoParamToDll 视频通道参数传入动态库完成,油枪数:" + Global.videoChanList.Count.ToString(), (int)EnumLogLevel.DEBUG));
        }
        private void ReceiveMasssage(object clientSocket)
        {
            //Socket myClientSocket = (Socket)clientSocket;
            while (isRun)
            {
                try
                {
                    byte[] buff = new byte[10240];

                    int count = cSocket.Receive(buff);
                    if (count > 0)
                    {
                        if (buff[0] == 0x32 && buff[1] == 0x30 && buff[2] == 0x31 && buff[3] == 0x30 && buff[4] == 0x31) //交易数据
                        {
                            int    pidlenth = buff[5];
                            string pid      = Encoding.Default.GetString(buff, 6, pidlenth);
                            string info     = Encoding.UTF8.GetString(buff, 10 + pidlenth, count - pidlenth - 10);
                            Global.LogServer.Add(new LogInfo("tradelog", "SocketTool->ReceiveMasssage 接收交易支付信息:" + pid + "---->" + info, (int)EnumLogLevel.DEBUG));
                            JObject obj = null;
                            try {
                                obj = JObject.Parse(info);
                                string msgid    = obj["msgID"].ToString();
                                byte[] sendbuff = new byte[256];
                                int    offset   = 0;
                                Buffer.BlockCopy(buff, 0, sendbuff, offset, pidlenth + 6);
                                offset          += pidlenth + 6;
                                sendbuff[offset] = (byte)msgid.Length;
                                offset          += 1;
                                byte[] msgbuff = Encoding.Default.GetBytes(msgid);
                                Buffer.BlockCopy(msgbuff, 0, sendbuff, offset, msgbuff.Length);
                                offset          += msgbuff.Length;
                                sendbuff[offset] = 0x31;
                                cSocket.Send(sendbuff, offset + 1, 0);
                                Global.LogServer.Add(new LogInfo("tradelog", "SocketTool->ReceiveMasssage 回复交易支付信息:201019" + pid + msgid.Length.ToString() + msgid + "1", (int)EnumLogLevel.DEBUG));
                            }
                            catch (System.Exception ex) {
                                string msgid    = "9999";
                                byte[] sendbuff = new byte[256];
                                int    offset   = 0;
                                Buffer.BlockCopy(buff, 0, sendbuff, offset, pidlenth + 6);
                                offset          += pidlenth + 6;
                                sendbuff[offset] = (byte)msgid.Length;
                                offset          += 1;
                                byte[] msgbuff = Encoding.Default.GetBytes(msgid);
                                Buffer.BlockCopy(msgbuff, 0, sendbuff, offset, msgbuff.Length);
                                offset          += msgbuff.Length;
                                sendbuff[offset] = 0x32;
                                cSocket.Send(sendbuff, offset + 1, 0);
                                Global.LogServer.Add(new LogInfo("tradelog", "SocketTool->ReceiveMasssage (JSON解析失败)回复交易支付信息:201019" + pid + msgid.Length.ToString() + msgid + "1", (int)EnumLogLevel.DEBUG));

                                continue;
                            }

                            if (pid == "P91_10007")
                            {
                                try
                                {
                                    //Global.LogServer.Add(new LogInfo("tradelog", "step:1", (int)EnumLogLevel.DEBUG));
                                    TradeInfo trade = new TradeInfo();
                                    trade.GasStation_NO = obj["source"].ToString();
                                    trade.REQ_Time      = obj["time"].ToString();
                                    trade.MSG_ID        = obj["msgID"].ToString();
                                    //Global.LogServer.Add(new LogInfo("tradelog", "step:2", (int)EnumLogLevel.DEBUG));
                                    trade.OilGun_NO = obj["data"][0]["1"].ToString();
                                    trade.OIL_TYPE  = obj["data"][0]["2"].ToString();
                                    //Global.LogServer.Add(new LogInfo("tradelog", "step:3", (int)EnumLogLevel.DEBUG));
                                    if (Global.oilInfoHashtable.Contains(trade.OIL_TYPE))
                                    {
                                        OilInfo oil = (OilInfo)Global.oilInfoHashtable[trade.OIL_TYPE];
                                        trade.OilName  = oil.OilName;
                                        trade.OilCode  = oil.OilCode;
                                        trade.OilClass = oil.OilClass;
                                    }
                                    //Global.LogServer.Add(new LogInfo("tradelog", "step:4", (int)EnumLogLevel.DEBUG));
                                    trade.OIL_Q      = double.Parse(obj["data"][0]["3"].ToString());
                                    trade.OIL_AMT    = double.Parse(obj["data"][0]["4"].ToString());
                                    trade.OIL_PRC    = double.Parse(obj["data"][0]["5"].ToString());
                                    trade.START_TIME = obj["data"][0]["6"].ToString();
                                    trade.END_TIME   = obj["data"][0]["7"].ToString();
                                    trade.START_READ = double.Parse(obj["data"][0]["8"].ToString());
                                    trade.END_READ   = double.Parse(obj["data"][0]["9"].ToString());
                                    //Global.LogServer.Add(new LogInfo("tradelog", "step:5", (int)EnumLogLevel.DEBUG));
                                    trade.VehicleNo        = obj["data"][0]["10"].ToString();
                                    trade.VehicleBrandCode = obj["data"][0]["11"].ToString();
                                    trade.SubBrandCode     = obj["data"][0]["12"].ToString();
                                    //Global.LogServer.Add(new LogInfo("tradelog", "step:6", (int)EnumLogLevel.DEBUG));
                                    //if (Global.carBrandHashtable.Contains(trade.VehicleBrandCode+"-"+trade.SubBrandCode))
                                    //                                     {
                                    //                                        CarBrandInfo car = (CarBrandInfo)Global.carLogoHashtable[trade.VehicleBrandCode + "-" + trade.SubBrandCode];
                                    //                                         trade.CarBrand = car.CarBrand;
                                    //                                         trade.SubBrand = car.SubCarBrand;
                                    //                                     }
                                    trade.VehicleModel = obj["data"][0]["13"].ToString();
                                    trade.VehicleColor = obj["data"][0]["14"].ToString();
                                    trade.BodyColor    = obj["data"][0]["15"].ToString();
                                    Global.LogServer.Add(new LogInfo("tradelog", "SocketTool->存储加油交易信息: " + trade.toSaveSqlString(), (int)EnumLogLevel.DEBUG));
                                    int id = Global.mysqlHelper2.ExecuteSqlGetId(trade.toSaveSqlString());

                                    if ((trade.BodyColor == "1" && trade.OilClass == "柴油") ||
                                        (trade.BodyColor == "0" && trade.OilClass == "汽油"))
                                    {
                                        Global.mysqlHelper2.ExecuteSql("update tradelog a ,carbrand b set a.realcarbrand = b.carlogo, a.realsubbrand = b.subcarlogo where a.carbrand = b.carcode and a.subbrand = b.subcarcode and a.id = " + id.ToString());
                                    }
                                    // Global.LogServer.Add(new LogInfo("tradelog", "step:7", (int)EnumLogLevel.DEBUG));

                                    /*
                                     * string sql = "select count(*) from tradelog where startread = " +
                                     * trade.START_READ + " and endread = " + trade.END_READ;
                                     * DataTable dt = Global.mysqlHelper2.GetDataTable(sql);
                                     * if (int.Parse(dt.Rows[0][0].ToString()) == 0)
                                     * {
                                     *  Global.LogServer.Add(new LogInfo("tradelog", "SocketTool->存储加油交易信息: " + trade.toSaveSqlString(), (int)EnumLogLevel.DEBUG));
                                     *  int id = Global.mysqlHelper2.ExecuteSqlGetId(trade.toSaveSqlString());
                                     *  step = "8";
                                     *  if ((trade.BodyColor == "1" && trade.OilClass == "柴油") ||
                                     *      (trade.BodyColor == "0" && trade.OilClass == "汽油"))
                                     *  {
                                     *      Global.mysqlHelper2.ExecuteSql("update tradelog a ,carbrand b set a.realcarbrand = b.carlogo, a.realsubbrand = b.subcarlogo where a.carbrand = b.carcode and a.subbrand = b.subcarcode and a.id = " + id.ToString());
                                     *  }
                                     *  step = "9";
                                     * }
                                     * else
                                     * {
                                     *  Global.LogServer.Add(new LogInfo("tradelog", "SocketTool->存储加油交易信息,该条数据已存在 ", (int)EnumLogLevel.DEBUG));
                                     * }*/
                                }
                                catch (System.Exception ex)
                                {
                                    Global.LogServer.Add(new LogInfo("tradelog", "  SocketTool->ReceiveMasssage :" + ex.ToString(), (int)EnumLogLevel.DEBUG));
                                }
                            }
                            else if (pid == "P91_10003")
                            {
                                foreach (var suborder in obj["data"])
                                {
                                    OrderInfo order = new OrderInfo();
                                    order.GasStation_NO = obj["source"].ToString();
                                    order.REQ_Time      = obj["time"].ToString();
                                    order.MSG_ID        = obj["msgID"].ToString();
                                    order.TRANS_TYPE    = suborder["1"].ToString();
                                    order.TRANS_CODE    = suborder["2"].ToString();
                                    order.BAR_CODE      = suborder["3"].ToString();
                                    order.TRANS_Q       = double.Parse(suborder["4"].ToString());
                                    order.TRANS_PRC     = double.Parse(suborder["6"].ToString());
                                    order.TRANS_AMT     = double.Parse(suborder["5"].ToString());
                                    order.FINISH_TIME   = suborder["7"].ToString();
                                    order.SETTLE_DAY    = suborder["8"].ToString();
                                    order.OilGun_NO     = suborder["9"].ToString();
                                    order.START_READ    = double.Parse(suborder["10"].ToString());
                                    order.END_READ      = double.Parse(suborder["11"].ToString());
                                    order.BILL_NUM      = suborder["12"].ToString();
                                    order.BILL_ITEM_ID  = suborder["13"].ToString();
                                    order.POS_NO        = suborder["14"].ToString();
                                    order.StatusType    = suborder["15"].ToString();
                                    order.Pumpsrv_ref   = suborder["16"].ToString();
                                    Global.LogServer.Add(new LogInfo("tradelog", "SocketTool->存储订单信息: " + order.toSaveSqlString(), (int)EnumLogLevel.DEBUG));

                                    Global.mysqlHelper2.ExecuteSql(order.toSaveSqlString());
                                }
                                foreach (var extra in obj["ext_data"])
                                {
                                    PayInfo pay = new PayInfo();
                                    pay.BILL_NUM     = obj["data"][0]["12"].ToString();
                                    pay.PAY_MODE     = extra["1"].ToString();
                                    pay.PAY_AMT      = double.Parse(extra["2"].ToString());
                                    pay.Discount_AMT = double.Parse(extra["3"].ToString());
                                    pay.PAY_CARD     = extra["4"].ToString();
                                    Global.LogServer.Add(new LogInfo("tradelog", "SocketTool->存储支付信息: " + pay.toSaveSqlString(), (int)EnumLogLevel.DEBUG));
                                    Global.mysqlHelper2.ExecuteSql(pay.toSaveSqlString());
                                }
                            }
                        }
                        else if (Global.ditMode == 1) //DIT动态库模式
                        {
                            if (buff[2] == 0x03 && buff[3] == 2)
                            {
                                SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, (int)Global.WM_CARSNAP, buff[4], buff[5]);
                            }
                            else if (buff[2] == 0x02 && buff[3] == 58 && count >= 62)
                            {
                                struLoginInfo info    = new struLoginInfo();
                                byte[]        reivBuf = new byte[58];
                                Buffer.BlockCopy(buff, 4, reivBuf, 0, 58);
                                info = (struLoginInfo)SystemUnit.BytesToStruts(reivBuf, typeof(struLoginInfo));
                                string ip        = System.Text.Encoding.Default.GetString(info.byIP);
                                int    port      = info.wPort;
                                string loginName = System.Text.Encoding.Default.GetString(info.byLoginName);
                                string password  = System.Text.Encoding.Default.GetString(info.byPassword);
                                byte[] sendbuf   = new byte[9];
                                sendbuf[0] = 0xFF;
                                sendbuf[1] = 0xFF;
                                sendbuf[2] = 0x02;
                                sendbuf[3] = 1;
                                if (ip == Global.clsNvrInfo.ip && port == Global.clsNvrInfo.port &&
                                    loginName == Global.clsNvrInfo.loginName && password == Global.clsNvrInfo.password)
                                {
                                    sendbuf[4] = 1;//1 成功
                                }
                                else
                                {
                                    sendbuf[4] = 0;//0 失败
                                }
                                ushort crc = SystemUnit.getCRC(sendbuf, 0, 5);
                                sendbuf[5] = (byte)(crc / 256);
                                sendbuf[6] = (byte)(crc % 256);
                                sendbuf[7] = 0xEE;
                                sendbuf[8] = 0xEE;
                                Send(sendbuf);
                            }
                        }
                        else if (Global.ditMode == 2)
                        {
                            string info = Encoding.Default.GetString(buff);
                            Global.LogServer.Add(new LogInfo("Debug", "SocketTool->ReceiveMasssage 接收DIT提挂枪信号:" + info, (int)EnumLogLevel.DEBUG));
                            if (info.IndexOf("PumpFlag") > 0)
                            {
                                PumpInfo pumpInfo = JsonHelper.DeserializeJsonToObject <PumpInfo>(info);
                                Global.currentPump[int.Parse(pumpInfo.PumpID)] = pumpInfo;
                                SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, (int)Global.WM_CARSNAP, int.Parse(pumpInfo.PumpID), int.Parse(pumpInfo.PumpFlag));
                            }
                        }
                    }
                    Thread.Sleep(30);
                }
                catch (System.Exception ex)
                {
                    // Global.LogServer.Add(new LogInfo("Error", "SocketTool->ReceiveMasssage :" + ex.ToString(), (int)EnumLogLevel.ERROR));
                }
            }
        }