コード例 #1
0
ファイル: VisioPanel.cs プロジェクト: SiteView/ECC8.13
        /// <summary>
        /// 装载Vdx文件并显示面板图
        /// </summary>
        /// <param name="EqOid"></param>
        private void LoadVdxFile(string EqOid)
        {

            string vdxFilePath = string.Empty;
            //从文件目录读取面板图文件
            if (File.Exists(System.IO.Path.Combine(System.IO.Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), ("panel\\" + EqOid + ".vdx"))))
            {
                Log.WriteLog("开始从文件装载面板图...");
                this.VdxFile = System.IO.Path.Combine(System.IO.Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), ("panel\\" + EqOid + ".vdx"));
                return;
            }
            //从图库读取面板图文件
            VdxManager vdxManager = new VdxManager();
            EquipVdx eqVdx = new EquipVdx();
            eqVdx.Sysoid = EqOid;
            if (vdxManager.ReadVdxInfo(ref eqVdx))
            {
                Log.WriteLog("开始从图库装载面板图...");
                if (!File.Exists(eqVdx.tempFileName))
                {
                    Log.WriteLog("装载面板图失败!文件不存在:" + eqVdx.tempFileName);
                    return;
                }               
                
                this.VdxFile = eqVdx.tempFileName;
                //File.Delete(eqVdx.tempFileName);
            }
            else
            {
                this.Document.Text = "面板图文件不存在!";
                this.Document.Font = new Font("", 12.0f, FontStyle.Bold);
                return;
            }

        }
コード例 #2
0
ファイル: VdxManager.cs プロジェクト: SiteView/ECC8.13
        /// <summary>
        /// 解包设备Vdx
        /// </summary>
        /// <param name="VdxFileName">解包出来的Vdx文件信息</param>
        /// <returns>解包成功返回true,失败返回false</returns>
        private bool ReadVdxFromPackage(ref EquipVdx equipVdx)
        {

            try
            {
                string FilePath = Path.Combine(Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), "data\\SiteViewVdx.mpg");
                string vdxFilePath = Path.Combine(Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), ("data\\" + equipVdx.FileName));
                using (FileStream packStream = File.OpenRead(FilePath))
                {
                    //从包中取出
                    byte[] packVdx = new byte[packStream.Length];
                    int size = packStream.Read(packVdx, 0, packVdx.Length);
                    using (FileStream coStream = File.Create("c:\\VisioCo.tmp"))
                    {
                        //解密
                        FileStream enStream = File.Create("c:\\VisioEn.tmp");
                        enStream.Write(packVdx, Convert.ToInt32(equipVdx.PackIndex), Convert.ToInt32(equipVdx.PackLength));
                        enStream.Flush();
                        enStream.Close();
                        byte[] coVdx = new byte[equipVdx.PackLength];
                        enStream = File.OpenRead("c:\\VisioEn.tmp");
                        enStream.Read(coVdx, 0, coVdx.Length);
                        byte[] enVdx;
                        if (!DataManager.Decrypt(coVdx, out enVdx))
                        {
                            return false;
                        }
                        coStream.Write(enVdx, 0, enVdx.Length);
                        //解压缩文件
                        coStream.Position = 0;
                        using (FileStream outStream = File.Create(vdxFilePath))
                        {
                            if (!DataManager.Decompress(coStream, outStream))
                            {
                                return false;
                            }
                            outStream.Close();
                        }

                        equipVdx.tempFileName = vdxFilePath;

                        enStream.Dispose();
                        coStream.Close();
                    }
                }

                File.Delete("c:\\VisioCo.tmp");
                File.Delete("c:\\VisioEn.tmp");
            }
            catch (Exception ex)
            {
                Log.WriteLog("解包设备信息出错!错误: " + ex.ToString());
                return false;
            }
            return true;

        }
コード例 #3
0
ファイル: VdxManager.cs プロジェクト: SiteView/ECC8.13
        /// <summary>
        /// 根据设备oid号,从数据库中返回设备信息
        /// </summary>
        /// <param name="Sysoid">设备OID</param>
        /// <param name="EquipVdx">设备信息</param>
        /// <returns>读取成功返回true,失败返回false</returns>
        public bool ReadVdxInfo(ref EquipVdx equipVdx)
        {

            try
            {
                //清理历史vdx文件
                foreach (string vdx in Directory.GetFiles(Path.Combine(Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), "data\\"), "*.vdx"))
                {
                    File.Delete(vdx);
                }

                string FilePath = Path.Combine(Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), "data\\SiteViewVdx.dat");
                string tempFilePath = "c:\\SiteView.tmp";
                FileStream inStream = File.OpenRead(FilePath);
                FileStream outStream = File.Create(tempFilePath);
                DataManager.Decompress(inStream, outStream);

                using (FileStream VdxStream = new FileStream(tempFilePath, FileMode.OpenOrCreate))
                {
                    BinaryFormatter bf = new BinaryFormatter();
                    EquipVdx[] eqVdx = (EquipVdx[])bf.Deserialize(VdxStream);
                    for (int i = 0; i < eqVdx.Length; i++)
                    {
                        if (eqVdx[i].Sysoid == equipVdx.Sysoid)
                        {
                            equipVdx = eqVdx[i];
                            ReadVdxFromPackage(ref equipVdx);
                            break;
                        }
                    }
                    VdxStream.Close();
                }
            }
            catch (Exception ex)
            {
                Log.WriteLog("读取设备信息出错!错误: " + ex.ToString());
                return false;
            }

            return true;

        }
コード例 #4
0
ファイル: VdxManager.cs プロジェクト: SiteView/ECC8.13
        /// <summary>
        /// 打包设备Vdx文件
        /// </summary>
        /// <param name="VdxFileName">要打包的Vdx文件信息</param>
        /// <returns>打包成功返回true,失败返回false</returns>
        private bool WriteVdxToPackage(ref EquipVdx equipVdx, ref FileStream packStream)
        {

            try
            {
                //string FilePath = Path.Combine(Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), "data\\SiteViewVdx.mpg");
                //using (FileStream packStream = new FileStream(FilePath, FileMode.OpenOrCreate))
                {
                    equipVdx.PackIndex = packStream.Length;
                    //压缩文件
                    using (FileStream inStream = File.OpenRead(equipVdx.tempFileName))
                    {
                        FileStream coStream = File.Create("c:\\VisioCo.tmp");
                        if (!DataManager.Compress(inStream, coStream))
                        {
                            return false;
                        }
                        //写入包中
                        coStream = File.OpenRead("c:\\VisioCo.tmp");
                        byte[] coVdx = new byte[coStream.Length];
                        int size = coStream.Read(coVdx, 0, coVdx.Length);
                        byte[] enVdx;
                        //加密
                        if (!DataManager.Encrypt(coVdx, out enVdx))
                        {
                            return false;
                        }

                        packStream.Position = packStream.Length;
                        packStream.Write(enVdx, 0, enVdx.Length);
                        equipVdx.PackLength = enVdx.Length;

                        inStream.Close();
                        coStream.Close();
                        coStream.Dispose();
                    }
                    //packStream.Flush();
                    //packStream.Close();
                }
                //File.Delete("c:\\VisioEn.tmp");
                File.Delete("c:\\VisioCo.tmp");
            }
            catch (Exception ex)
            {
                Log.WriteLog("打包设备信息出错!错误: " + ex.ToString());
                return false;
            }
            return true;

        }
コード例 #5
0
ファイル: VdxManager.cs プロジェクト: SiteView/ECC8.13
        /// <summary>
        /// 把设备信息写入到数据库中
        /// </summary>
        /// <param name="EquipVdx">设备信息数组</param>
        /// <returns>写入成功返回true,失败返回false</returns>
        public bool WriteVdxInfo(EquipVdx[] equipVdx)
        {
            
            try
            {
                string FilePath = Path.Combine(Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), "data\\SiteViewVdx.dat");
                if (File.Exists(FilePath))
                {
                    File.Delete(FilePath);
                }
                string FilePath_mpg = Path.Combine(Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), "data\\SiteViewVdx.mpg");
                if (File.Exists(FilePath_mpg))
                {
                    File.Delete(FilePath_mpg);
                }
                
                using (FileStream VdxStream = new FileStream(FilePath, FileMode.OpenOrCreate))
                {
                    FileStream packStream = new FileStream(FilePath_mpg, FileMode.OpenOrCreate);
                    ProgressBar.Visible = true;
                    ProgressBar.Value = 0;
                    int length = equipVdx.Length;
                    int step = ProgressBar.Maximum / length;

                    for (int i = 0; i < length; i++)
                    {
                        //
                        WriteVdxToPackage(ref equipVdx[i], ref packStream);
                        ProgressBar.Value += step;
                        PackInfo.Text = (i + 1) + "/" + length.ToString();
                        Application.DoEvents();
                    }                    
                    BinaryFormatter bf = new BinaryFormatter();
                    bf.Serialize(VdxStream, equipVdx);
                    VdxStream.Close();
                    packStream.Flush();
                    packStream.Close();
                    packStream.Dispose();

                    ProgressBar.Value = ProgressBar.Maximum;
                    ProgressBar.Visible = false;
                    PackInfo.Text = string.Empty;
                }
                //压缩dat文件
                string tempFilePath = "c:\\SiteView.tmp";
                FileStream inStream = File.OpenRead(FilePath);
                FileStream outStream = File.Create(tempFilePath);
                DataManager.Compress(inStream, outStream);
                inStream.Close();
                outStream.Close();
                File.Delete(FilePath);
                File.Move(tempFilePath, FilePath);
            }
            catch (Exception ex)
            {
                Log.WriteLog("写入设备信息出错!错误: " + ex.ToString());
                ProgressBar.Visible = false;
                return false;
            }
            return true;

        }