예제 #1
0
파일: AgentWindow.cs 프로젝트: oisy/scada
 /// <summary>
 /// 
 /// </summary>
 /// <param name="agent"></param>
 /// <param name="notifyEvent"></param>
 /// <param name="msg"></param>
 private void OnNotifyAtUIThread(DataAgent agent, NotifyEvents ne, Notify p)
 {
     string msg = string.Format("{0}: {1}", DateTime.Now, p.Message);
     if (ne == NotifyEvents.UploadFileOK)
     {
         fileUploadInfoListBox.Items.Add(msg);
     }
     else if (ne == NotifyEvents.UploadFileFailed)
     {
         fileUploadInfoListBox.Items.Add(msg);
     }
     else if (ne == NotifyEvents.DebugMessage)
     {
         this.debugConsole.Text += string.Format("{0}\n", p.Message);
     }
     else if (ne == NotifyEvents.EventMessage)
     {
         mainListBox.Items.Add(msg);
     }
     else if (ne == NotifyEvents.SendDataOK)
     {
         this.UpdateSendDataRecord(p.DeviceKey, false);
     }
     else if (ne == NotifyEvents.SendDataFailed)
     {
         //this.UpdateSendDataRecord(p.DeviceKey, false);
     }
     else if (ne == NotifyEvents.HistoryData)
     {
         this.HandleHistoryData(p.Payload);
     }
 }
예제 #2
0
파일: AgentWindow.cs 프로젝트: oisy/scada
 private void OnNotify(DataAgent agent, NotifyEvents notifyEvent, Notify p)
 {
     this.SafeInvoke(() =>
     {
         this.OnNotifyAtUIThread(agent, notifyEvent, p);
     });
 }
예제 #3
0
        /// <summary>
        /// Upload File
        /// </summary>
        /// <param name="packet"></param>
        internal bool SendFilePacket(Packet packet)
        {
            if (string.IsNullOrEmpty(packet.Path) || !File.Exists(packet.Path))
            {
                Notify msg = new Notify();
                msg.Message = "No File Found";
                this.NotifyEvent(this, NotifyEvents.EventMessage, msg);

                // 上传失败,移除占用标志
                RemoveOccupiedToken(packet);

                return(false);
            }

            string uploadUrl = string.Empty;

            // 判断是哪种设备的文件上传
            if (packet.FileType.Equals("labr", StringComparison.OrdinalIgnoreCase))
            {
                string path    = Path.GetDirectoryName(packet.Path);
                var    folder1 = Path.GetFileName(Path.GetDirectoryName(path));
                var    folder2 = Path.GetFileName(path);
                uploadUrl = this.GetUploadApi(packet.FileType, folder1, folder2);
            }
            else if (packet.FileType.Equals("hpge", StringComparison.OrdinalIgnoreCase))
            {
                //var folder = DataSource.GetCurrentSid();
                var folder = GetPacketSID(packet);

                var param = "";
                try
                {
                    param = this.GetHpGeParams(packet.Path);
                }
                catch (Exception)
                {
                    RemoveOccupiedToken(packet);
                    return(false);
                }

                param     = param.Replace('/', '-');
                uploadUrl = this.GetUploadApi(packet.FileType, folder, param);
            }

            Uri uri = new Uri(this.DataCenter.GetUrl(uploadUrl));

            try
            {
                using (WebClient wc = new WebClient())
                {
                    // 同步上传
                    Byte[] result    = wc.UploadFile(uri, Post, packet.Path);
                    string strResult = Encoding.UTF8.GetString(result);
                    string msg       = string.Format("成功上传 {0},信息 {1}", this.GetRelFilePath(packet), strResult);
                    this.NotifyEvent(this, NotifyEvents.UploadFileOK, new Notify()
                    {
                        Message = msg
                    });

                    return(true);
                }
            }
            catch (WebException e)
            {
                // 上传失败,移除占用标志
                RemoveOccupiedToken(packet);

                string msg = string.Format("错误上传 {0},错误信息 {1}", this.GetRelFilePath(packet), e.Message);
                this.NotifyEvent(this, NotifyEvents.UploadFileFailed, new Notify()
                {
                    Message = msg
                });

                return(false);
            }
        }
예제 #4
0
        /// <summary>
        /// Upload File
        /// </summary>
        /// <param name="packet"></param>
        internal void SendFilePacket(Packet packet)
        {
            if (string.IsNullOrEmpty(packet.Path) || !File.Exists(packet.Path))
            {
                Notify msg = new Notify();
                msg.Message = "No File Found";
                this.NotifyEvent(this, NotifyEvents.EventMessage, msg);
                return;
            }

            string uploadUrl = string.Empty;

            if (packet.FileType.Equals("labr", StringComparison.OrdinalIgnoreCase))
            {
                string path    = Path.GetDirectoryName(packet.Path);
                var    folder1 = Path.GetFileName(Path.GetDirectoryName(path));
                var    folder2 = Path.GetFileName(path);
                uploadUrl = this.GetUploadApi(packet.FileType, folder1, folder2);
            }
            else if (packet.FileType.Equals("hpge", StringComparison.OrdinalIgnoreCase))
            {
                var folder = DataSource.GetCurrentSid();
                var param  = this.GetHpGeParams(packet.Path);   // "2014-07-04 00:00:00,2014-07-04 00:00:00,2014-07-04 00:00:00,PRT";
                param     = param.Replace('/', '-');
                uploadUrl = this.GetUploadApi(packet.FileType, folder, param);
            }

            Uri uri = new Uri(this.DataCenter.GetUrl(uploadUrl));

            try
            {
                using (WebClient wc = new WebClient())
                {
                    wc.UploadFileCompleted += (object sender, UploadFileCompletedEventArgs e) =>
                    {
                        Packet p = (Packet)e.UserState;
                        if (p != null)
                        {
                            if (e.Error == null)
                            {
                                string result = Encoding.UTF8.GetString(e.Result);
                                this.RemovePrefix(p.Path);
                                // LogPath.GetDeviceLogFilePath("");
                                string msg = string.Format("成功上传 {0}", this.GetRelFilePath(packet));

                                this.NotifyEvent(this, NotifyEvents.UploadFileOK, new Notify()
                                {
                                    Message = msg
                                });

                                //this.NotifyEvent(this, NotifyEvents.UploadFileOK, new PacketBase() { Message = msg });
                            }
                            else
                            {
                                this.NotifyEvent(this, NotifyEvents.UploadFileFailed, new Notify()
                                {
                                    Message = e.Error.Message
                                });
                            }
                        }
                    };
                    wc.UploadFileAsync(uri, Post, packet.Path, packet);
                }
            }
            catch (WebException)
            {
            }
        }
예제 #5
0
파일: DataAgent.cs 프로젝트: oisy/scada
        /// <summary>
        /// Upload File
        /// </summary>
        /// <param name="packet"></param>
        internal void SendFilePacket(Packet packet)
        {
            if (string.IsNullOrEmpty(packet.Path) || !File.Exists(packet.Path))
            {
                Notify msg = new Notify();
                msg.Message = "No File Found";
                this.NotifyEvent(this, NotifyEvents.EventMessage, msg);
                return;
            }

            string uploadUrl = string.Empty;
            if (packet.FileType.Equals("labr", StringComparison.OrdinalIgnoreCase))
            {
                string path = Path.GetDirectoryName(packet.Path);
                var folder1 = Path.GetFileName(Path.GetDirectoryName(path));
                var folder2 = Path.GetFileName(path);
                uploadUrl = this.GetUploadApi(packet.FileType, folder1, folder2);
            }
            else if (packet.FileType.Equals("hpge", StringComparison.OrdinalIgnoreCase))
            {
                var folder = DataSource.GetCurrentSid();
                var param = this.GetHpGeParams(packet.Path);    // "2014-07-04 00:00:00,2014-07-04 00:00:00,2014-07-04 00:00:00,PRT";
                param = param.Replace('/', '-');
                uploadUrl = this.GetUploadApi(packet.FileType, folder, param);
            }

            Uri uri = new Uri(this.DataCenter.GetUrl(uploadUrl));
            try
            {
                using (WebClient wc = new WebClient())
                {
                    wc.UploadFileCompleted += (object sender, UploadFileCompletedEventArgs e) =>
                        {

                            Packet p = (Packet)e.UserState;
                            if (p != null)
                            {
                                if (e.Error == null)
                                {
                                    string result = Encoding.UTF8.GetString(e.Result);
                                    this.RemovePrefix(p.Path);
                                    // LogPath.GetDeviceLogFilePath("");
                                    string msg = string.Format("成功上传 {0}", this.GetRelFilePath(packet));

                                    this.NotifyEvent(this, NotifyEvents.UploadFileOK, new Notify() { Message = msg });

                                    //this.NotifyEvent(this, NotifyEvents.UploadFileOK, new PacketBase() { Message = msg });
                                }
                                else
                                {
                                    this.NotifyEvent(this, NotifyEvents.UploadFileFailed, new Notify() { Message = e.Error.Message });
                                }
                            }
                        };
                    wc.UploadFileAsync(uri, Post, packet.Path, packet);
                }
            }
            catch (WebException)
            {
             
            }
        }
예제 #6
0
파일: DataAgent.cs 프로젝트: oisy/scada
 private void HandleHistoryData(string device, string start, string end, string times)
 {
     Notify n = new Notify();
     n.SetValue("device", device);
     n.SetValue("start", start);
     n.SetValue("end", end);
     n.SetValue("times", times);
     this.NotifyEvent(this, NotifyEvents.HistoryData, n);
 }