private void RsServer_OnTelecontrolAck(RSServer server, TelecontrolAck ack) {//遥控指令应答处理 Invoke(new Action(() => { rhtResult.AppendText("遥控应答->设备编号:" + ack.DeviceID + "\t继电器编号:" + ack.RelayID + "\t执行结果:" + ack.ExecStatus + "\r\n"); })); }
private void RsServer_OnTimmingAck(RSServer server, TimmingAck ack) { //校时指令应答处理 Invoke(new Action(() => { rhtResult.AppendText("校时应答->设备编号:" + ack.DeviceID + "\t执行结果:" + ack.ExecStatus + "\r\n"); })); }
private void RsServer_OnReceiveLoginData(RSServer server, LoginData data) { //设备登录指令处理 Invoke(new Action(() => { rhtResult.AppendText("设备登录->设备编号:" + data.DeviceID + "\r\n"); })); }
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"); })); }
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"); })); }
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"); })); } }
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"); })); }
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"); })); }
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); } }
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); //设置停启按钮的状态 }
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"); })); } }
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; }
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)); }