Se connecter au service Genetec Patroller™ Simple Host - Genetec Patroller™ 6.6

Guide de l’administrateur Genetec Patroller™ 6.6

Applies to
Genetec Patroller™ 6.6
Last updated
2022-04-22
Content type
Guides
Guides > Guides d'administration
Language
Français
Product
Genetec Patroller™
Version
6.6

Pour obtenir des données de lectures et d'alertes par le biais du service Simple Host, vous devez configurer des réglages dans Patroller Config Tool, mais également dans votre projet Visual Studio.

Avant de commencer

À savoir

Dans cette procédure, vous utiliserez Microsoft Visual Studio 2010 pour générer automatiquement du code de connexion à un service WCF. Inutile d'utiliser un fichier DLL AutoVu existant.

Procédure

  1. Ouvrez Visual Studio.
  2. Dans l'Explorateur de solutions Visual Studio, faites un clic droit sur le projet qui référence le service Simple Host, puis sélectionnez Ajouter une référence Web.
  3. Dans le champ Adresse, entrez l'URL du service Simple Host. Cliquez sur Lancer.
    Si le service Simple Host est exécuté sur le même ordinateur, l'adresse est :

    http://localhost:8001/SimpleHost

    Si le service Simple Host est en cours d'exécution, le service web Simple Host apparaît dans la zone Services. Vous pouvez le développer pour examiner les fonctions qu'il contient.
  4. Entrez un espace de noms pour le code généré automatiquement plus descriptif que la valeur par défaut ServiceReference1, puis cliquez sur OK.
    Dans l'exemple suivant, nous utilisons le nom AutoVu.SimpleHost.Service.
    Du nouveau code généré automatiquement est ajouté à votre projet. Le code exemple suivant montre comment utiliser le service au sein d'une classe de votre application :
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Xml;
    using System.IO;
    namespace Test2020
    {
      public partial class Form1 : Form
      {
          AutoVu.SimpleHost.Service.SimpleHostClient _simpleHost;
          public Form1()
          {
              InitializeComponent();
          }
          private void buttonGetHit_Click(object sender, EventArgs e)
          {
              string lXml;
              try
              {
                 lXml = _simpleHost.GetHitData
                   (new Guid("48E6B5C7-0347-470F-9A95-9650AA7EB568"));
              }
              catch (Exception e1)
              {
                 Console.WriteLine(e1.Message);
                 return;
              }
          }
          private void buttonInit_Click(object sender, EventArgs e)
          {
              _simpleHost = 
                new AutoVu.SimpleHost.Service.SimpleHostClient
                                     ("BasicHttpBinding_SimpleHost");
            // the string passed to the constructor is the name of
            // the configuration that was generated in the 
            // App.config file.
          }
      }
    }
                                  
  5. Dans votre projet ou dans le projet principal de l'application, repérez le fichier App.config.
    REMARQUE : Le fichier App.config doit être celui situé dans le projet Startup de la solution, sans quoi la configuration n'est pas appliquée.
    Le processus de génération automatique du code doit avoir ajouté une balise system.serviceModel au fichier :
    
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                      <binding name="BasicHttpBinding_SimpleHost"
                            closeTimeout="00:01:00"
                            openTimeout="00:01:00" 
                            receiveTimeout="00:10:00" 
                            sendTimeout="00:01:00"
                            allowCookies="false" 
                            bypassProxyOnLocal="false"
                            hostNameComparisonMode="StrongWildcard"
                            maxBufferSize="65536" 
                            maxBufferPoolSize="524288"
                            maxReceivedMessageSize="65536"
                            messageEncoding="Text" 
                            textEncoding="utf-8" 
                            transfer Mode="Buffered"
                            useDefaultWebProxy="true">
                          <readerQuotas maxDepth="32" 
                                       maxStringContentLength="8192"
                                       maxArrayLength="16384" 
                                       maxBytesPerRead="4096"
                                       maxNameTableCharCount="16384" />
                          <security mode="None">
                              <transport clientCredentialType="None" 
                                          proxyCredentialType="None"
                                          realm="" />
                              <message clientCredentialType="UserName" 
                                          algorithmSuite="Default" />
                           </security>
                      </binding>
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://localhost:8001/SimpleHost/" 
                     binding="basicHttpBinding" 
                     bindingConfiguration="BasicHttpBinding_SimpleHost"
                     contract="AutoVu.SimpleHost.Service.SimpleHost"
                     name="BasicHttpBinding_SimpleHost" />
            </client>
       </system.serviceModel>
    </configuration                                        
                                  
  6. Remplacez la balise readerQuotas avec ce qui suit, puis enregistrez le fichier de projet.
    La configuration par défaut n'autorise pas le transfert d'une grande quantité de données par message, alors que nous devons transférer des images.
    
    <readerQuotas maxDepth="2147483647"
                  maxStringContentLength="2147483647"
                  maxArrayLength="2147483647"
                  maxBytesPerRead="2147483647"
                  maxNameTableCharCount="2147483647" />      
                           
  7. Compilez et exécutez le projet.

Résultats

La chaîne reçue depuis Simple Host est compatible XML et peut être analysée à l'aide de la classe XmlDocument de .NET. En outre, les images doivent être recodées avec byte[] pour créer un objet bitmap. Voir le code suivant :

private void ButtonGetHit_Click(object sender, EventArgs e)
{
   string lXml;
   XmlDocument lDoc = new XmlDocument();
   lXml = _simpleHost.GetHitData
          (new Guid("4E6B5C7-0347-470F-9A95-9650AA7EB568"));
   lDoc.LoadXml(lXml);
   XmlNodeList listXmlImages = 
          lDoc.SelectNodes(string.Format("{0}/{1}/{2}/{3}",
                      "AutoVuReturn","Hit", "Vehicle","Image"));
   foreach (XmlNode node in listXmlImages)
   {
      XmlNode purposeNode = node.SelectSingleNode("Purpose");
      XmlNode dataNode = node.SelectSingleNode("Data");
      byte[] imageData = Covert.FromBase64String(dataNode.InnerXml);
      MemoryStream lMemoryStream = new MemoryStream(imageData);
      Bitmap image = new Bitmap(lMemoryStream);
      switch (purposeNode.InnerXml)
      {
          case "LPR":
          image.Save("Image_LPR.jpg");
          break;
          case "Context":
          image.Save("Image_Context.jpg");
          break;
      }
      image.Dispose();
   }
}