Bonjour à tous,
voici mon premier message sur le forum,
je n'ai pu effectuer de recherche le script php plantant au bout de 30 secondes.
J'espère donc que ce n'est pas une question redondante.
Tout d'abord je suis totalement nouveau au joyeux monde VS2005 .net je viens de VB4/5/6.
J'ai décidé d'apprendre .net sur C# pour pas confondre toutes les possibilités (puisque mon job est en environnement VB6).
Puis le codage me parait plus rigoureux et conforme aux langages objets typés style java, c++...
Bon après cette petite introduction voici ma question (qui est à la fois une question de syntaxe, d'architecture, ect...)
J'ai un programme windows qui a pour mission de communiquer via le port série avec un switch VGA pour répartir des inputs outputs vga.
Je crée donc une application windows C#.
J'ai choisis de séparer la couche présentation de l'application (user interface) de sa logique pure et dure (communication interprétation avec le périphérique distant via le port série).
Je veux que ma partie logique puisse notifier la partie graphique de certains changements (par exemple à l'initialisation, renvoyer à la partie application grpahique le nombre de inputs outputs VGA disponibles sur la bécane connectée au PC)
Si j'ai bien compris en C# il y a la notion de délégation qui permet d'affecter à une méthode déléguée, une adresse de fonction.
Problèmes :
- Tous les exemples fournit ne montrent que le cas ou la fonction est déclarée dans la même classe
- Je veux que mon application windows appelle le constructeur de ma classe SwitchVideo(portCom, Baud, functionAppellée) ou fonction appellée doit être une méthode de la classe principale (application windows) et la je ne sais pas comment faire. Existe t'il un type de donné function pour dire que on passe en paramètre un nom de fonction, dois-je utiliser une sorte de pointeur de function, quelle contrainte ma définition doit-elle respecter?
Je suis un peu perdu et je ne sais pas trop comment faire.
Je peux vous donner quelques lignes de code mais j'ai l'impression d'être encore loin de la vérité !
Voilà excusez le newb que je suis, promis j'apprends vite
Code fenêtre principale
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 private void AppForm_Load(object sender, EventArgs e) { try { panel = new Matrice(1, 19200, this.testdefunction); } catch (System.IO.IOException ex) { this.timer1.Enabled = false; MessageBox.Show("Check your configuration and restart the application\n" + ex.ToString(), "IO Error...exiting", MessageBoxButtons.OK, MessageBoxIcon.Error); System.Environment.Exit(0); } } private void testdefunction(int a, int b) { MessageBox.Show("test de delegate"); }
Code de la classe Matrice (pour gérer le switch video)
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 delegate void _UpdateMatriceProperties(int x); public class Matrice : IDisposable { private SerialPort port; private int nbVideoInputs; private int nbVideoOutputs; private int nbAudioInputs; private int nbAudioOutputs; private byte[] answer = new byte[4]; public Matrice(int portNumber, int baud, int function) { port = new SerialPort("COM" + portNumber, baud); port.DataReceived += new SerialDataReceivedEventHandler (ManageReceivedData); port.Open(); GetMatriceParameters(); _UpdateMatriceProperties UpdateMatriceProperties = new _UpdateMatriceProperties(function); }
Partager