コード例 #1
0
    /// <summary>
    /// Get Attributes of single process device.
    /// </summary>
    /// <param name="requestAnswer">HTTP response after SPARQL request</param>
    /// <param name="currentObject">Current LinkdDataObject</param>
    /// <param name="loopcounter">Actual loop counter </param>
    public LinkedDataObject getSingleProcessDeviceDecoder(LinkedDataObject currentObject)
    {
        string inputHtml     = getSingleProcessDeviceSPARQLRequest(currentObject.SparqlURL);         // get Linked Data request
        string requestAnswer = getHTTPReq(preURL + System.Uri.EscapeDataString(inputHtml) + endURL); // request linked data server and get answer
        //Debug.Log("RequestAnswer: " + requestAnswer);
        XmlDocument xml = new XmlDocument();                                                         // new xml object

        xml.LoadXml(requestAnswer);                                                                  // translate string in xml
        // TODO Serialisierung?
        XmlNodeList dataNode = xml.SelectNodes("/table/tr/td");                                      // parse xml document

        //Debug.Log ("XMLNODELIST: " + dataNode.Item(0).InnerText);
        //Debug.Log ("Länge XMLNODELIST: " + dataNode.Count);

        // Save
        if ((dataNode.Count % 3) == 0)
        {
            for (int i = 0; i < dataNode.Count; i = i + 3)
            {
                currentObject.addAttribute(dataNode.Item(i).InnerText, dataNode.Item(i + 1).InnerText, dataNode.Item(i + 2).InnerText);
                //linkedDataModule[loopcounter] = currentObject;
            }
            ;
            //Debug.Log("Listenelement: " + processDevice.getLinkedDataObject()[5].getAll());
        }
        else
        {
            Debug.Log("Error in XML!");
        }
        return(currentObject);
    }
コード例 #2
0
    /// <summary>
    /// Extract und save all standard information of all ProzessDevices.
    /// </summary>
    /// <returns><c>true</c>, if all module process devices was gotten, <c>false</c> otherwise.</returns>
    /// <param name="requestAnswer">HTTP request in a string</param>
    public List <LinkedDataObject> getAllModuleProcessDevices(string module)
    {
        List <LinkedDataObject> linkedDataModule = new List <LinkedDataObject>();

        // Aus Überschichtsgründen!
        string      requestURL    = getAllModuleProcessDevicesSPARQLRequest(module);
        string      requestAnswer = getHTTPReq(preURL + System.Uri.EscapeDataString(requestURL) + endURL);
        XmlDocument xml           = new XmlDocument();

        xml.LoadXml(requestAnswer);
        // Alternative: xml.LoadXml(getHTTP(getAllProcessDevicesSPARQLRequest()));
        XmlNodeList dataNode = xml.SelectNodes("/table/tr/td");

        if ((dataNode.Count % 5) == 0)
        {
            for (int i = 0; i < dataNode.Count; i = i + 5)
            {
                LinkedDataObject processDevice = new LinkedDataObject();
                //Debug.Log("Setting all general variables!");
                processDevice.setGeneralVariable(dataNode.Item(i).InnerText, dataNode.Item(i + 1).InnerText, dataNode.Item(i + 2).InnerText, dataNode.Item(i + 3).InnerText, dataNode.Item(i + 4).InnerText);
                // TODO: Backbone ausgeschlossen, da sich hier prozesselemente wiederholen: Q1
                if (dataNode.Item(i + 1).InnerText != "Backbone")
                {
                    linkedDataModule.Add(processDevice);
                }
            }
            return(linkedDataModule);
        }
        else
        {
            Debug.Log("Error in XML!");
            return(linkedDataModule);
        }
    }
コード例 #3
0
    /// <summary>
    /// Build new database entry based on LinkedData and OPC UA.
    /// </summary>
    /// <returns>New database object</returns>
    /// <param name="ldResponse">Linked Data response object.</param>
    /// <param name="module">Name of the module</param>
    private DeviceGUI BuildDatabaseEntry(LinkedDataObject ldResponse, String module)
    {
        // Validate the Device and get the new device back.
        Device local = devVali.Validator(ldResponse.PlantTag, module, istNodeIds);

        local.LinkedData_data = ldResponse;         // Safe LinkedData
        // Now OPC UA Data:
        if (istNodeIds.TagToNodeId [module].ContainsKey(ldResponse.PlantTag))
        {
            // There are opc ua inforamtion
            local.InitOPCUAData(restAPI.getNode(istNodeIds.TagToNodeId [module] [ldResponse.PlantTag].Core), restAPI.getNode(sollNodeIds.SollNodeId [module] [ldResponse.PlantTag]));
        }
        else if (local.DeviceType == "Tank")
        {
            // There are opc ua information for the submoduls
            local.InitOPCUAData(istNodeIds, sollNodeIds, restAPI);
        }
        else
        {
            local = new HandValve(local.Tag);
            local.InitOPCUAData(null, null);
        }

        try {
            return((DeviceGUI)local);            // return the object
        } catch (Exception e) {
            Debug.Log(local.LinkedData_data.PlantTag + ": TypeCast faild -> " + e.Message);
            DeviceGUI newLocal = new DeviceGUI(local.LinkedData_data.PlantTag);
            return(newLocal);
        }
    }