Bonjour à tous :
J'ai eu un pdf de la part de mes prof pour pouvoir afficher une caméra via une Windows Form, le code semble bon mais la caméra ne s'affiche toujours pas, je vous envoie le pdf et le code : TP 3 - classe_camera.pdf
Pour ma classe Caméra :
Et pour mon Form1.cs :
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 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.IO; using System.Drawing; using System.Windows.Forms; namespace IHMCamera { class Camera { // Attributs private string Resolution; private string AdresseIP; private Bitmap Image; // Methodes public Camera(string Res, string Ip) { Resolution = Res; AdresseIP = Ip; Image = null; } public Boolean TextExistence() { bool CamExiste = true; // booleen qui sera retourné pour indiquer si oui ou non une camera est présente // on utilise une structure try ... catch afin de ne pas perturber le système d'exploitation en cas d'erreur try { // on construit notre requete http HttpWebRequest Reponse = (HttpWebRequest)WebRequest.Create("http://150.200.5.24/view/viewer_index.shtml?id=800x600"); // Si la réponse existe et contient des données if (Reponse.ContentLength > 0) CamExiste = true; // Sinon c'est qu'il n'y a pas de réponse donc pas de camera } catch { CamExiste = true; } return CamExiste; } public void CaptureImage(PictureBox CaptureCam) { string sourceURL = "http://150.200.5.24/view/viewer_index.shtml?id=800x600"; byte[] buffer = new byte[1000000]; // Buffer destiné à recevoir les données lues dans le flux int read, total = 0; HttpWebRequest req; // Objet utilisé pour envoyer une requete http vers le serveur web embarqué de la camera // Obtenir la reponse WebResponse resp; // Objet utilisé pour récupérer la réponse http de la caméra // Obtenir la reponse stream Stream stream; // Objet utilisé pour récupérer les données contenues dans la réponse try { // Créer une requete HTTP req = (HttpWebRequest)WebRequest.Create(sourceURL); // Objet utilisé pour envoyer une requete http vers le serveur web embarqué de la camera // Obtenir la reponse resp = req.GetResponse(); // Objet utilisé pour récupérer la réponse http de la caméra // Obtenir la reponse stream stream = resp.GetResponseStream(); // Objet utilisé pour récupérer les données contenues dans la réponse // lire les données d'un stream while ((read = stream.Read(buffer, total, 100000)) != 0) { total += read; Bitmap Afficher = (Bitmap)Bitmap.FromStream(new MemoryStream(buffer, 0, total)); CaptureCam.SizeMode = PictureBoxSizeMode.StretchImage; CaptureCam.Image = Afficher; } } catch (Exception) { Console.Write("Erreur lors de l'opération "); } } } }
Merci de votre aide en avance
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 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace IHMCamera { public partial class ControleCam : Form { Camera Cam1; public ControleCam() { InitializeComponent(); } private void SaisirIP_TextChanged(object sender, EventArgs e) { Valider.Enabled = true; } private void ControleCam_Load(object sender, EventArgs e) { Valider.Enabled = false; SaisirIP.Enabled = false; Capture.Enabled = false; radioButtonOui.Enabled = false; radioButtonNon.Enabled = false; Cam1 = new Camera(ListeResolution.Text, SaisirIP.Text); Cam1.CaptureImage(VueCam); } private void ListeResolution_SelectedIndexChanged(object sender, EventArgs e) { SaisirIP.Enabled = true; } private void Valider_Click(object sender, EventArgs e) { Capture.Enabled = true; } private void Capture_Click(object sender, EventArgs e) { Cam1 = new Camera(ListeResolution.Text, SaisirIP.Text); Cam1.CaptureImage(VueCam); radioButtonOui.Enabled = true; radioButtonNon.Enabled = true; timer1.Enabled = true; } private void VueCam_Click(object sender, EventArgs e) { } private void radioButtonOui_CheckedChanged(object sender, EventArgs e) { DateTime d = DateTime.Now; VueCam.Image.Save("c:\\temp\\ImageCap" + d.ToFileTime().ToString() + ".jpeg", ImageFormat.Jpeg); } private void timer1_Tick(object sender, EventArgs e) { Cam1 = new Camera(ListeResolution.Text, SaisirIP.Text); Cam1.CaptureImage(VueCam); } } }
Partager