Bonjour,
Sans le cadre de mon projet, je dois récupérer un flux vidéo pour l'afficher dans une IHM. L'IHM, tout comme le reste du code, est réalisée en C# avec Visual Studio Community 2013 et son outils Windows Forms.
Pour resituer un peu le sujet, je dois m'occuper de créer une IHM pour le pilotage du WiFiBot, de créer un client pour aller avec le serveur du robot et de gérer le flux vidéo envoyé par la caméra.
Le flux vidéo est disponible sur une adresse IP locale et affiche une page de ce style :
Nom : wifibotweb.PNG
Affichages : 281
Taille : 284,9 Ko


Je dois récupérer le flux vidéo et l'ajouter à mon IHM. C'est là que je suis bloquée. Après avoir cherché dans les anciens rapports de projets des années précédentes, il semblerait qu'on puisse isoler la partie correspondant au flux. C'est un script javascript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script language="text/javascript">
 
        <!--
        var request="/cameras/1?q=40";
        var request="/cameras/1?q=40";
        var content = "< img src =\"" + request + "\">";
        if ((navigator.appName == "Microsoft Internet Explorer") && (navigator.platform != "MacPPC") && (navigator.platform != "Mac68k")){
            content ="<applet code=\"psykokwak.applet.MjpegApplet\" 
            archive=\"MjpegClient.jar\" width=\"640\" height=\"480\"> 
            <param name=\"url\" value=\"" + request + "\">
            </applet>"
        }
        document.write(content);
        //--!>
    </script>
Mon problème, à présent, c'est de l'intégrer à mon IHM de façon à ce que mon flux s'affiche dans l'outil "WebKit Browser".
Nom : Capture_3.PNG
Affichages : 311
Taille : 93,9 Ko


J'ai trouvé l'outil "ScriptManager" (et donc, ScriptManager.RegisterClientScriptBlock) mais je ne sais pas réellement comme m'en servir et lorsque j'essaie, je tombe sur une erreur : "Convertion impossible de wifibot1._0.Form1 (this) en System.Web.UI.Page".J'ai (normalement) bien inclus le références nécessaires à System.Web dans le projet.

Voici le code de l'IHM :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WebKit;
using System.IO;
using System.Net;
using System.Net.Sockets;
using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.MapProviders;
using GMap.NET.WindowsForms.Markers;
using System.Web.UI.WebControls;
using System.Web;
using System.Web.UI;
 
namespace wifibot1._0
{
    public partial class Form1 : Form
    {
        Client client;
        TextWriter _writer = null;
 
        public Form1()
        {
            InitializeComponent();
            this.Load += new EventHandler(Form1_Load);
            this.webKitBrowserCamera.Navigated +=
                new WebBrowserNavigatedEventHandler(webKitBrowserCamera_Navigated);
 
 
        }
 
        private void enAvant_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Avant ↑ !");
        }
 
        private void enArriere_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Arrière ↓ !");
        }
 
        private void aGauche_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Gauche ← !");
        }
 
        private void aDroite_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Droite → !");
        }
 
        private void stopButton_Click(object sender, EventArgs e)
        {
            Console.WriteLine("STOP !");
        }
 
        private void connexion_Click(object sender, EventArgs e)
        {
            client = new Client();
            client.connexion();
        }
 
        private void deconnexion_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Deconnexion du WiFiBot... A bientôt !");
            client = new Client();
            client.deconnexion();
        }
 
        private void joystick_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Joystick activé !");
        }
 
        private void openFileGPS_FileOk(object sender, CancelEventArgs e)
        {
 
        }
 
        private void openGPSFile_Click(object sender, EventArgs e)
        {
            DialogResult result = openFileGPS.ShowDialog();
            if(result==DialogResult.OK){
            }
            Console.WriteLine(result);
        }
 
        void Form1_Load(object sender, EventArgs e)
        {
            _writer = new ConsoleRedirection(txtConsole);
            Console.SetOut(_writer);
        }
 
        private void afficheCamera_Click(object sender, EventArgs e)
        {
            webKitBrowserCamera.Navigate(URLCamera.Text);
        }
 
        private void webKitBrowserCamera_Navigated(object sender, EventArgs e)
        {
            URLCamera.Text = webKitBrowserCamera.Url.ToString();
            ScriptManager.RegisterClientScriptBlock(this, GetType(), "script", "<script language=\"JavaScript\"> var request=\" / cameras / 1 ? q = 40\";  var request=\" / cameras / 1 ? q = 40\"; var content = \" < img src =\"\" + request + \"\">\"; if ((navigator.appName == \"Microsoft Internet Explorer\") && (navigator.platform != \"MacPPC\") && (navigator.platform != \"Mac68k\")){content =\"<applet code=\"psykokwak.applet.MjpegApplet\" archive=\"MjpegClient.jar\" width=\"640\" height=\"480\"><param name=\"url\" value=\"\" + request + \"\"></applet>\" } document.write(content); </script>", false);
        }
 
        private void webKitBrowserCamera_Load(object sender, EventArgs e)
        {
 
        }
 
        private void txtConsole_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void mapexpl_Load(object sender, EventArgs e)
        {
            /*INITIALISATION DE LA MAP*/
            mapexpl.MapProvider = GMap.NET.MapProviders.GoogleMapProvider.Instance;
            GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
            mapexpl.SetPositionByKeywords("Argenteuil, France");
            mapexpl.Position = new PointLatLng(48.940326, 2.225795); /*centrage de la map*/
 
            /*MARKER*/
            GMapOverlay markersOverlay = new GMapOverlay("markers");
            GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(48.940077, 2.225990), GMarkerGoogleType.green); /*coordonnées du marker*/
            markersOverlay.Markers.Add(marker);
            mapexpl.Overlays.Add(markersOverlay);
 
            mapexpl.DragButton = MouseButtons.Left; /*bouger la map avec la souris*/
 
            /*POLYGON*/
            GMapOverlay polyOverlay = new GMapOverlay("polygons");
            List<PointLatLng> points = new List<PointLatLng>();
            points.Add(new PointLatLng(48.940326, 2.225795));
            points.Add(new PointLatLng(48.939542, 2.226660));
            points.Add(new PointLatLng(48.939007, 2.224139));
            points.Add(new PointLatLng(48.940469, 2.224274));
            GMapPolygon polygon = new GMapPolygon(points, "mypolygon");
            polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
            polygon.Stroke = new Pen(Color.Red, 1);
            polyOverlay.Polygons.Add(polygon);
            mapexpl.Overlays.Add(polyOverlay);
        }
 
        private void URLCamera_TextChanged(object sender, EventArgs e)
        {
 
        }
    }
}
Merci d'avance pour votre aide !
Bonne soirée