1 pièce(s) jointe(s)
Problème affichage caméra
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 : Pièce jointe 273406
Pour ma classe Caméra :
Code:
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 ");
}
}
}
} |
Et pour mon Form1.cs :
Code:
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);
}
}
} |
Merci de votre aide en avance