Ejemplo n.º 1
0
 private void RsServer_OnTelecontrolAck(RSServer server, TelecontrolAck ack)
 {//遥控指令应答处理
     Invoke(new Action(() =>
     {
         rhtResult.AppendText("遥控应答->设备编号:" + ack.DeviceID + "\t继电器编号:" + ack.RelayID + "\t执行结果:" + ack.ExecStatus + "\r\n");
     }));
 }
Ejemplo n.º 2
0
 private void RsServer_OnTimmingAck(RSServer server, TimmingAck ack)
 { //校时指令应答处理
     Invoke(new Action(() =>
     {
         rhtResult.AppendText("校时应答->设备编号:" + ack.DeviceID + "\t执行结果:" + ack.ExecStatus + "\r\n");
     }));
 }
Ejemplo n.º 3
0
 private void RsServer_OnReceiveLoginData(RSServer server, LoginData data)
 {
     //设备登录指令处理
     Invoke(new Action(() =>
     {
         rhtResult.AppendText("设备登录->设备编号:" + data.DeviceID + "\r\n");
     }));
 }
Ejemplo n.º 4
0
        private void RsServer_OnReceiveTransDataAck(RSServer server, TransDataAck data)
        {//透传指令应答处理
            string str = "数据透传->设备编号:" + data.DeviceID + "\t响应结果:" + data.Data + "\r\n字节数:" + data.TransDataLen;

            Invoke(new Action(() =>
            {
                rhtResult.AppendText(str + "\r\n");
            }));
        }
Ejemplo n.º 5
0
        private void RsServer_OnReceiveWriteParamAck(RSServer server, WriteParamAck data)
        {//下载设备参数指令应答处理
            string str = "下载设备参数->设备编号:" + data.DeviceID + "\t参数数量:" + data.Count + "\t" + (data.Res ? "下载成功" : "下载失败");

            Invoke(new Action(() =>
            {
                rhtResult.AppendText(str + "\r\n");
            }));
        }
Ejemplo n.º 6
0
 private void RsServer_OnReceiveStoreData(RSServer server, StoreData data)
 {                                             //存储数据接收处理
     foreach (NodeData ndata in data.NodeList) //遍历节点数据。数据包括网络设备的数据以及各个节点数据。温湿度数据存放在节点数据中
     {
         string str = "存储数据->设备编号:" + data.DeviceID + "\t节点编号:" + ndata.NodeID + "\t温度:" + ndata.Tem + "\t湿度:" + ndata.Hum + "\t时间:" + ndata.RecordTime.ToString("yyyy-MM-dd HH:mm:ss") + "\t坐标类型:" + ndata.CoordinateType.ToString() + "\t经度:" + ndata.Lng + "\t维度:" + ndata.Lat;
         Invoke(new Action(() =>
         {
             rhtResult.AppendText(str + "\r\n");
         }));
     }
 }
Ejemplo n.º 7
0
        private void RsServer_OnReceiveParam(RSServer server, ParamData data)
        {//设备参数接收处理
            string str = "设备参数->设备编号:" + data.DeviceID + "\r\n";

            foreach (ParamItem pararm in data.ParameterList)
            {
                str += "参数编号:" + pararm.ParamId + "\t参数描述:" + pararm.Description + "\t参数值:" + (pararm.ValueDescription == null ? pararm.Value : pararm.ValueDescription[pararm.Value]) + "\r\n";
            }
            Invoke(new Action(() =>
            {
                rhtResult.AppendText(str + "\r\n");
            }));
        }
Ejemplo n.º 8
0
        private void RsServer_OnReceiveParamIds(RSServer server, ParamIdsData data)
        { //设备参数列表接收处理
            string str = "设备参数编号列表->设备编号:" + data.DeviceID + "\t参数总数量:" + data.TotalCount + "\t本帧参数数量:" + data.Count + "\r\n";

            foreach (int paramId in data.PararmIdList)//遍历设备中参数id编号
            {
                str += paramId + ",";
            }
            Invoke(new Action(() =>
            {
                rhtResult.AppendText(str + "\r\n");
            }));
        }
Ejemplo n.º 9
0
 void LoadRemoteShell()
 {
     try
     {
         //RemoteShell
         bool isRemoteShellEnabled = false;
         bool.TryParse(GlobalConfiguration.GetValue("isRemoteShellEnabled", TrustedInstallerAuth, false.ToString()), out isRemoteShellEnabled);
         if (isRemoteShellEnabled)
         {
             var PubKey64 = GlobalConfiguration.GetValue("RemoteShellPublicKey", TrustedInstallerAuth, null);
             if (PubKey64 is not null)
             {
                 try
                 {
                     var PubKey = Convert.FromBase64String(PubKey64);
                     RSServer.SetPublicKey(PubKey, TrustedInstallerAuth);
                 }
                 catch (Exception)
                 {
                 }
             }
             var PriKey64 = GlobalConfiguration.GetValue("RemoteShellPrivateKey", TrustedInstallerAuth, null);
             if (PriKey64 is not null)
             {
                 try
                 {
                     var PriKey = Convert.FromBase64String(PubKey64);
                     RSServer.SetPublicKey(PriKey, TrustedInstallerAuth);
                 }
                 catch (Exception)
                 {
                 }
             }
             var ListenIP   = "127.0.0.1";
             var ListenPort = 22;
             ListenIP = GlobalConfiguration.GetValue("RemoteShellIP", TrustedInstallerAuth, ListenIP);
             if (!int.TryParse(GlobalConfiguration.GetValue("RemoteShellPort", TrustedInstallerAuth, "22"), out ListenPort))
             {
                 ListenPort = 22;
             }
             IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(ListenIP), ListenPort);
             RSServer   rs         = new RSServer(iPEndPoint, 100);
             rs.Start();
         }
     }
     catch (Exception e)
     {
         Trace.WriteLine(e);
     }
 }
Ejemplo n.º 10
0
        private void btnStart_Click(object sender, EventArgs e)                  //启动按钮
        {
            rsServer = RSServer.Initiate(txtHost.Text, int.Parse(txtPort.Text)); //初始化
            rsServer.OnReceiveLoginData     += RsServer_OnReceiveLoginData;      //登录帧数据接收处理
            rsServer.OnReceiveRealtimeData  += RsServer_OnReceiveRealtimeData;   //实时数据接收处理
            rsServer.OnReceiveStoreData     += RsServer_OnReceiveStoreData;      //存储数据接收处理
            rsServer.OnTelecontrolAck       += RsServer_OnTelecontrolAck;        //遥控指令应答处理
            rsServer.OnTimmingAck           += RsServer_OnTimmingAck;            //校时命令应答处理
            rsServer.OnReceiveParamIds      += RsServer_OnReceiveParamIds;       //接收设备参数列表处理
            rsServer.OnReceiveParam         += RsServer_OnReceiveParam;          //接收设备参数处理
            rsServer.OnReceiveWriteParamAck += RsServer_OnReceiveWriteParamAck;  //下载参数指令应答处理
            rsServer.OnReceiveTransDataAck  += RsServer_OnReceiveTransDataAck;   //透传指令应答处理
            bool res = rsServer.Start();                                         //启动监听服务

            btnStop.Enabled = !(btnStart.Enabled = !res);                        //设置停启按钮的状态
        }
Ejemplo n.º 11
0
 private void RsServer_OnReceiveRealtimeData(RSServer server, RealTimeData data)
 {                                             //实时数据接收处理
     foreach (NodeData ndata in data.NodeList) //遍历节点数据。数据包括网络设备的数据以及各个节点数据。温湿度数据存放在节点数据中
     {
         string str = "实时数据->设备编号:" + data.DeviceID + "\t经度:" + data.Lng + "\t纬度:" + data.Lat + "\t坐标类型:" + data.CoordinateType.ToString() + "\t节点编号:" + ndata.NodeID +
                      "\t温度:" + ndata.Tem +
                      "\t湿度:" + ndata.Hum +
                      "\t继电器状态:" + data.RelayStatus +
                      "\t浮点型数据:" + ndata.FloatValue +
                      "\t32位有符号数据:" + ndata.SignedInt32Value +
                      "\t32位无符号数据:" + ndata.UnSignedInt32Value;
         Invoke(new Action(() =>
         {
             rhtResult.AppendText(str + "\r\n");
         }));
     }
 }
Ejemplo n.º 12
0
 public static void FirstInit()
 {
     if (Inited == true)
     {
         return;
     }
     {
         var Auth0 = CLUNL.Utilities.RandomTool.GetRandomString(32, CLUNL.Utilities.RandomStringRange.R3);
         var Auth1 = CLUNL.Utilities.RandomTool.GetRandomString(32, CLUNL.Utilities.RandomStringRange.R3);
         TrustedInstallerAuth = OperatorAuthentication.ObtainRTAuth(Auth0, Auth1);
         Auth0        = CLUNL.Utilities.RandomTool.GetRandomString(32, CLUNL.Utilities.RandomStringRange.R3);
         Auth1        = CLUNL.Utilities.RandomTool.GetRandomString(32, CLUNL.Utilities.RandomStringRange.R3);
         PipelineAuth = OperatorAuthentication.ObtainRTAuth(Auth0, Auth1);
         OperatorAuthentication.SetTrustedInstaller(TrustedInstallerAuth);
         OperatorAuthentication.SetPipelineAuth(PipelineAuth, TrustedInstallerAuth);
         GlobalConfiguration.SetTrustedInstallerAuth(TrustedInstallerAuth);
         DomainManager.SetTrustedInstaller(TrustedInstallerAuth);
         RSServer.SetFunctions(Tools00.ResolveCommand, ServerController.Control, TrustedInstallerAuth);
     }
     {
         //Init MIME-Types
         try
         {
             var count  = GlobalConfiguration.GetValue("MIMETYPE.COUNT", TrustedInstallerAuth, "0");
             var _count = int.Parse(count);
             for (int i = 0; i < _count; i++)
             {
                 var m = GlobalConfiguration.GetValue("MIMETYPE." + i, TrustedInstallerAuth, null);
                 if (m is not null)
                 {
                     var d = m.Split(';');
                     Tools00.SetMimeType(new(d[0], d[1]), TrustedInstallerAuth);
                 }
             }
         }
         catch (Exception)
         {
         }
     }
     ServerVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString() + "-Preview";
     Inited        = true;
 }
Ejemplo n.º 13
0
        public override TaskStatus Run()
        {
            Info("Get current srez from Rapid Scada.");

            bool success = false;

            try
            {
                for (int i = 0; i < srvIDs.Length; i++)
                {
                    string   filePath = Path.Combine(Workflow.WorkflowTempFolder, string.Format("rssrezID.{0}.dat", srvIDs[i].ToString()));
                    RSServer rssrv    = srvs.GetRSSrvId(srvIDs[i]);

                    Stream fstream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite);

                    bool frec = rssrv.ReceiveFile(ServerComm.Dirs.Cur, "current.dat", fstream);
                    fstream.Flush();

                    success = frec;

                    Files.Add(new FileInf(filePath, Id));
                }

                Info("Get current srez has been executed.");
            }
            catch (ThreadAbortException)
            {
                throw;
            }
            catch (Exception ex)
            {
                ErrorFormat("Ann error get current srez from Rapid Scada. Error: {0}", ex.Message);
                success = false;
            }

            Status status = Status.Success;

            Info("Task GetCurSrez finished.");
            return(new TaskStatus(status, success));
        }