Beispiel #1
0
        //  LPRSDK.LPR_ScanDevice(); 会回调用此方法
        void fucDeviceInfo(IntPtr pUserData, ref LPRSDK.DeviceInfo pDeviceInfo)
        {
            //将扫描的设备添加到列表并自动进行连接
            String sIP = pDeviceInfo.DeviceNetInfo.ucDeviceIP.ToString();
            record recordModel = new Ip_Device().getDeviceInfo(sIP);
            StringBuilder sbIP = new StringBuilder(sIP);
            IntPtr ptrHandle = IntPtr.Zero;
            if ((LPRSDK.FEEKBACK_TYPE)LPRSDK.LPR_ConnectCamera(sbIP, ref ptrHandle) == LPRSDK.FEEKBACK_TYPE.RESULT_OK)
            {
                label4.Hide();
                if (timer1.Enabled == true)
                {
                    timer1.Stop();
                }
                if (timer2.Enabled == true)
                {
                    timer2.Stop();
                }
                lm.WriteLog("IP为" + sIP + "的设备连接成功!");
                if (reconn == true)
                {
                    lm.WriteLog("IP为" + sIP + "的设备重新连接成功!");
                    StartKiller();    //自动关闭提示框
                    MessageBox.Show("网络连接已恢复", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    try {
                          listView1.FindItemWithText(sIP).Remove();                    //将连接失败的item删除
                    }
                    catch { }

                }
                ListViewItem item = this.listView1.Items.Add(recordModel.Gate);
                item.SubItems.Add(recordModel.Direction);
                item.SubItems.Add(sIP);                                                   //将该item重新加入listview1
                item.SubItems.Add("摄像机已连接");
                AddDeviceInfo Info = new AddDeviceInfo();
                Info.ptrDeviceHandle = ptrHandle;
                Info.ucDeviceIP = sIP.ToString();
                DeviceTable.Add(sbIP, Info);
                listview_Resort();
                timer3.Start();
            }
            else if ((LPRSDK.FEEKBACK_TYPE)LPRSDK.LPR_ConnectCamera(sbIP, ref ptrHandle) == LPRSDK.FEEKBACK_TYPE.DEVICE_DISCONNECT)
            {
                ListViewItem item = this.listView1.Items.Add(recordModel.Gate);
                item.SubItems.Add(recordModel.Direction + "口");
                item.SubItems.Add(sIP);
                item.SubItems.Add("摄像机已断开");
                MessageBox.Show("摄像机已断开!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if ((LPRSDK.FEEKBACK_TYPE)LPRSDK.LPR_ConnectCamera(sbIP, ref ptrHandle) == LPRSDK.FEEKBACK_TYPE.NO_FIND_DEVICE)
            {
                MessageBox.Show("没有发现设备,请检查摄像机网线是否插好!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if ((LPRSDK.FEEKBACK_TYPE)LPRSDK.LPR_ConnectCamera(sbIP, ref ptrHandle) == LPRSDK.FEEKBACK_TYPE.OTHER_ERROR)
            {
                MessageBox.Show("其它错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                //MessageBox.Show("未知错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Beispiel #2
0
        void fucVehicleData(IntPtr pUserData, ref LPRSDK.VehicleData pData)
        {
            for (int count = 0; count < 3; count++)             //三次尝试存储图片,互斥
            {
                if (--pv < 0)
                {
                    pv++;
                    Thread.Sleep(200);
                    if (count == 2)
                    {
                        return;
                    }
                }
                else
                {
                    break;
                }
            }

            if (pData.ucPlate.ToString().Length < 6)         //如果抓拍到摩托车和电瓶车偶尔会返回车牌号为空,这时函数直接返回
            {
                return;
            }
            string sIP = "";

            foreach (DictionaryEntry de in DeviceTable)
            {
                AddDeviceInfo info = (AddDeviceInfo)DeviceTable[de.Key];
                if (info.ptrDeviceHandle == pData.pDeviceHandle)
                {
                    sIP = info.ucDeviceIP;
                    break;
                }
            }
            string fileDirectory = string.Empty;

            fileDirectory = string.Format("{0}\\{1}\\{2}{3}{4}\\", Application.StartupPath, pData.ucDeviceIP, pData.ucTime[0] + 2000,
                                          pData.ucTime[1], pData.ucTime[2]);
            if (!Directory.Exists(fileDirectory))
            {
                Directory.CreateDirectory(fileDirectory);
            }

            String strSpeFile = "", strPlateFile = "";



            strSpeFile   = string.Format("{0}{1}{2}{3}({4})big.jpg", fileDirectory, pData.ucTime[3], pData.ucTime[4], pData.ucTime[5], pData.ucTime[2]);
            strPlateFile = string.Format("{0}{1}{2}{3}({4})plate.jpg", fileDirectory, pData.ucTime[3], pData.ucTime[4], pData.ucTime[5], pData.ucTime[2]);
            picpath      = strSpeFile;


            if (pData.uiBigImageLen != 0)
            {
                FileStream fs      = new FileStream(strSpeFile, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
                byte[]     bytData = new byte[pData.uiBigImageLen];
                Marshal.Copy(pData.pucBigImage, bytData, 0, (int)pData.uiBigImageLen);

                try
                {
                    fs.Write(bytData, 0, (int)pData.uiBigImageLen);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally {
                    fs.Close();
                    fs.Dispose();                          //确保fs对象被销毁
                }
            }


            if (pData.uiPlateImageLen != 0)
            {
                FileStream fs      = new FileStream(strPlateFile, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
                byte[]     bytData = new byte[pData.uiPlateImageLen];
                Marshal.Copy(pData.pucPlateImage, bytData, 0, (int)pData.uiPlateImageLen);
                try
                {
                    fs.Write(bytData, 0, (int)pData.uiPlateImageLen);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    fs.Close();
                    fs.Dispose();                          //确保fs对象被销毁
                }
            }

            //窗口控件绑定变量置空
            this.picBigImage.Image   = null;
            this.picPlateImage.Image = null;

            FileInfo fi = new FileInfo(strSpeFile);

            if (fi.Exists)
            {
                this.picBigImage.Load(strSpeFile);
            }

            fi = new FileInfo(strPlateFile);
            if (fi.Exists)
            {
                this.picPlateImage.Load(strPlateFile);
            }

            ShowPlate(pData.ucPlate.ToString(), pData.PlateColor);



            DateTime dt            = DateTime.Now;
            paleInfo paleinfoModel = new paleInfo();
            record   recordModel   = new Ip_Device().getDeviceInfo(pData.ucDeviceIP); // 获得该设备所在大门号和车道号

            recordModel.Pale = pData.ucPlate.ToString();
            recordModel.T    = dt;
            recordModel.Time = dt.ToString();
            string Endirection = recordModel.Direction.Substring(0, 1) == "入" ? "in" : "out";

            recordModel.picPath = DateTime.Today.ToString("yyyy") + DateTime.Today.ToString("MM") + DateTime.Today.ToString("dd") +
                                  "_" + dt.Hour.ToString().PadLeft(2, '0') + "-" + dt.Minute.ToString().PadLeft(2, '0') + "-" + dt.Second.ToString().PadLeft(2, '0') +
                                  "_" + recordModel.Gate.Substring(0, 1) + "gate" + "_" + Endirection + recordModel.Direction.Substring(2, 1) + ".jpg";


            string SQL2 = "SELECT * FROM car_pale WHERE pale ='" + recordModel.Pale + "' AND statue='已预约'";
            string SQL3 = "SELECT * FROM car_pale WHERE pale ='" + recordModel.Pale + "' AND statue='已入场'";


            MySqlConnection conn1    = new MySqlConnection(connStr); //每个进程需实例化一个连接,否则前面进程堵塞时会不能使用该连接
            bool            paleflag = false;

            string[] likepale = getpale(recordModel.Pale);
            string   DBpale   = "";


            for (int i = 0; i < 4; i++)
            {
                string thisstatue = Endirection == "in" ? "已预约" : "已入场";
                string LikeSQL    = "SELECT * FROM car_pale WHERE pale LIKE'" + likepale[i] + "' AND statue='" + thisstatue + "'";
                try
                {
                    conn.Open();
                    MySqlCommand    cmd2 = new MySqlCommand(LikeSQL, conn);
                    MySqlDataReader rdr2 = cmd2.ExecuteReader();
                    if (rdr2.HasRows)
                    {
                        paleflag = true;
                        if (rdr2.Read())
                        {
                            DBpale = rdr2[0].ToString();
                            recordModel.regtime     = DateTime.Parse(rdr2[1].ToString());
                            paleinfoModel.Name      = rdr2[2].ToString();
                            paleinfoModel.Community = rdr2[3].ToString();
                            paleinfoModel.Building  = rdr2[4].ToString();
                            paleinfoModel.Unit      = rdr2[5].ToString();
                            paleinfoModel.Room      = rdr2[6].ToString();
                            rdr2.Close();
                        }
                        break;
                    }
                    conn.Close();
                }
                catch (Exception ex)
                {
                    conn.Close();
                    MessageBox.Show(ex.ToString());
                }
                finally { conn.Close(); }
            }



            while (true)
            {
                if (Endirection == "in")
                {
                    try
                    {
                        //conn1.Open();
                        //MySqlCommand cmd2 = new MySqlCommand(SQL2, conn1);
                        //MySqlDataReader rdr2 = cmd2.ExecuteReader();
                        if (paleflag == false)
                        //if (!rdr2.HasRows) {
                        {
                            this.result.ForeColor = Color.Red;
                            this.result.Text      = "未预约";
                            this.picBigImage.Load(strSpeFile);
                            this.picPlateImage.Load(strPlateFile);
                            ShowPlate(pData.ucPlate.ToString(), pData.PlateColor);

                            ListViewItem item = new ListViewItem();
                            item.SubItems[0].Text = recordModel.Time;
                            item.SubItems.Add(DBpale);
                            item.SubItems.Add(recordModel.Pale);
                            item.SubItems.Add(recordModel.Gate);
                            item.SubItems.Add(recordModel.Direction);
                            item.SubItems.Add("");
                            item.SubItems.Add("");
                            item.SubItems.Add("未预约");
                            item.SubItems.Add("手动放行");
                            listView2.Items.Insert(0, item);
                            break;
                        }
                        //while(rdr2.Read())
                        //{
                        //    recordModel.regtime = DateTime.Parse(rdr2[1].ToString());
                        //    paleinfoModel.Name = rdr2[2].ToString();
                        //    paleinfoModel.Community = rdr2[3].ToString();
                        //    paleinfoModel.Building = rdr2[4].ToString();
                        //    paleinfoModel.Unit = rdr2[5].ToString();
                        //    paleinfoModel.Room = rdr2[6].ToString();
                        //}
                        //rdr2.Close();
                        //conn1.Close();

                        try
                        {
                            conn1.Open();
                            string       SQL1 = "INSERT INTO record (pale,regtime,gate,direction,time,pic) VALUES ('" + DBpale + "','" + recordModel.regtime.ToString() + "','" + recordModel.Gate + "','" + recordModel.Direction + "','" + recordModel.T.ToString() + "','" + recordModel.picPath + "')";
                            MySqlCommand cmd1 = new MySqlCommand(SQL1, conn1);
                            if (cmd1.ExecuteNonQuery() > 0)
                            {
                                conn1.Close();
                                if (recordModel.Direction == "入口1号车道")
                                {
                                    ThreadPAC(0);     //DO 0栏杆打开
                                }
                                else if (recordModel.Direction == "入口2号车道")
                                {
                                    ThreadPAC(1);     //DO 1栏杆打开
                                }
                                else
                                {
                                }
                                this.result.ForeColor = Color.Green;
                                this.result.Text      = "放行";
                                carInCount++;
                                ListViewItem item = new ListViewItem();
                                item.SubItems[0].Text = recordModel.Time;
                                item.SubItems.Add(DBpale);
                                item.SubItems.Add(recordModel.Pale);
                                item.SubItems.Add(recordModel.Gate);
                                item.SubItems.Add(recordModel.Direction);
                                item.SubItems.Add(paleinfoModel.Name);
                                item.SubItems.Add(paleinfoModel.Community + paleinfoModel.Building + paleinfoModel.Unit + paleinfoModel.Room + "室");
                                item.SubItems.Add("已入场");
                                item.SubItems.Add("自动放行");
                                listView2.Items.Insert(0, item);

                                try
                                {
                                    conn1.Open();
                                    string       SQL4 = "UPDATE car_pale SET statue ='已入场' WHERE pale = '" + DBpale + "' AND regtime='" + recordModel.regtime.ToString() + "'";
                                    MySqlCommand cmd4 = new MySqlCommand(SQL4, conn1);
                                    if (cmd4.ExecuteNonQuery() > 0)
                                    {
                                        conn1.Close();
                                    }
                                }
                                catch { }
                                finally { conn1.Close(); }


                                #region 存储图片
                                if (pData.uiBigImageLen != 0)
                                {
                                    string     filepath = System.Environment.CurrentDirectory + "/../../../Resources/palepic/" + recordModel.picPath;
                                    FileStream fs       = new FileStream(filepath, FileMode.Create, FileAccess.Write);
                                    byte[]     bytData  = new byte[pData.uiBigImageLen];
                                    Marshal.Copy(pData.pucBigImage, bytData, 0, (int)pData.uiBigImageLen);

                                    try
                                    {
                                        fs.Write(bytData, 0, (int)pData.uiBigImageLen);
                                        fs.Close();
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine(ex.Message);
                                    }
                                }
                                # endregion

                                # region 发送图片到服务器
                                try
                                {
                                    StartSend(System.Environment.CurrentDirectory + "/../../../Resources/palepic/" + recordModel.picPath,
                                              new DbHelperMySQL().getPicServerip(), Convert.ToInt32(new DbHelperMySQL().getPicServerPort()));
                                }
                                catch { }   //忽略图片服务器未打开的情况
                                break;

                                #endregion
                            }
                        }
                        catch (Exception e) { MessageBox.Show(e.ToString()); }
                    }