Bonjour, bonsoir à vous tous.
Nous sommes un groupe de travail en deuxième années de BTS SN, et nous avons pour projet de fin d'années de faire communiquer via une interface Ethernet/Série à plusieurs machines outils à commande numérique (MOCN).
Nous devons faire en sorte de crée une interface en PHP sur laquelle tout les PCs du réseaux pourront y accéder et y envoyer des fichiers sur les machines via les ports séries.
Actuellement, nous avons notre interface PHP de fonctionnel et notre base données où sont ranger les configuration des différentes machines, et nous avons déjà la configuration des ports séries d'opérationnelle. L'interface PHP modifie le contenue de fichier .txt ranger sur un PC console, ces fichier sont constamment vérifier par le code d’envois de fichier en C#. Nous avons aussi les ports séries de configurer, et ça grâce à quelques discussions sur ce site.
Notre problème est que nous ne savons pas comment envoyer des fichiers sur le port série pour l'envoyer sur les machines, et nous voudrions avoir votre avis sur la question. Merci à vous tous.
Voici le code d’envois de fichier: (Fais sur Microsoft Visual Studio 2010)
Si jamais vous avez des questions, où des suggestions par rapport au code n'hésitez pas à demander, j'ai rajouter quelque commentaires pour aider à comprendre ce que j'ai fait.
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 using System; using System.Net; using System.Net.Sockets; using System.Linq; using System.Text; using System.IO; using System.IO.Ports; using System.Threading; using System.Data; using System.Data.Sql; using System.Data.SqlClient; using System.Collections; using System.Collections.Generic; using System.Xml.Linq; using MySql.Data.MySqlClient; namespace MOCN_V3 { class Program { private static void Main() { while (true) { string numeromachines = System.IO.File.ReadAllText(@"C:\Temp\temp_test_mocn\testportmachines.txt"); //J'instance une première fois les fichiers à récupérer //sinon le programme ne fonctionne pas par la suite string semaphore = System.IO.File.ReadAllText(@"C:\Temp\temp_test_mocn\testpourbosser.txt"); string fichiermachines = System.IO.File.ReadAllText(@"C:\Temp\temp_test_mocn\testenvoyermachines.txt"); //Les fichiers suivants sont des fichiers test string PortCom; //Je met en place des variables pour enregistrer les valeurs de la base de données string BaudRate; string Pariter; string StopBit; string DataBit; string HandShake; MySqlConnection Connection = null; MySqlCommand RecupTable = new MySqlCommand(); Connection = new MySqlConnection("SERVER=localhost; DATABASE=projet_bts-sn_mocn; UID=Eleve; PASSWORD="); // Connection à la base de données RecupTable.Connection = Connection; Connection.Open(); DataSet InfosMachines = new DataSet(); RecupTable.CommandText = "SELECT Port Com, Baud Rate, Parity, Stop Bits, Data Bits, HandShake FROM machine_outils WHERE ID = numeromachines"; //Sélectionne la table MySqlDataReader Lecteur = RecupTable.ExecuteReader(); PortCom = Lecteur["Port Com"].ToString(); //Je récupère les différentes valeurs de la table BaudRate = Lecteur["Baud Rate"].ToString(); Pariter = Lecteur["Parity"].ToString(); StopBit = Lecteur["Stop Bits"].ToString(); DataBit = Lecteur["Data Bits"].ToString(); HandShake = Lecteur["HandShake"].ToString(); Lecteur.Close(); if (Connection != null) //Petite boucle pour éviter les erreurs, j'ai essayer de mettre un try catch finally pour le même résultat //mais je ne pouvais pas récupérer les valeurs de la base de données plus tard dans le code { Console.WriteLine("Erreur Base de données"); Connection.Close(); } else if (Connection.State == ConnectionState.Open) { Connection.Close(); } while (semaphore != "1") { System.IO.File.ReadAllText(@"C:\Temp\temp_test_mocn\testpourbosser.txt"); semaphore = System.IO.File.ReadAllText(@"C:\Temp\temp_test_mocn\testpourbosser.txt"); File.Delete(semaphore); System.Threading.Thread.Sleep(10000); //Timer de 10s pour les tests //Sera changer plus tard en timer de 1/2 sec } if (semaphore == "1") { File.Delete(numeromachines); //Supprime dans la mémoire le fichier instancier, car si on changeais le fichier en cours de lancement, //le programme prenait le fichier dans la mémoire et non là où il était à chercher string portName; portName = "COM" + PortCom; //Création du port série choisis où sera brancher la machine choisis string PCBDD = PortCom; int COMBDD; COMBDD = Convert.ToInt32(PCBDD); COMBDD = int.Parse(PCBDD); string defaultPortName = "COM" + 1; if (COMBDD == 100 || COMBDD == 0 || portName == "" || !(portName.ToLower()).StartsWith("COM")) //Si il y a une erreur ça enverras sur le port série par défaut COM1 { portName = defaultPortName; Console.WriteLine("Erreur, fichier envoyer sur port série"); } System.IO.File.ReadAllText(@"C:\Temp\temp_test_mocn\testenvoyermachines.txt"); SerialPort CSerialPort = new SerialPort(portName); //Création du port série et récupération des données CSerialPort.BaudRate = Convert.ToInt32(BaudRate); //On a dut convertir pour certaines données ce que nous récupérions de la base de données CSerialPort.DataBits = Convert.ToInt32(DataBit); if (HandShake.Equals("NONE")) //Toutes les machines ont des configuration différentes d'où e fait que l'ont prends tout les cas possibles { CSerialPort.Handshake = Handshake.None; } else if (HandShake.Equals("DTR")) { CSerialPort.Handshake = Handshake.RequestToSend; } else if (HandShake.Equals("BOTH")) { CSerialPort.Handshake = Handshake.RequestToSendXOnXOff; } else if (HandShake.Equals("XON/XOFF")) { CSerialPort.Handshake = Handshake.XOnXOff; } if (Pariter.Equals("PAIRE")) { CSerialPort.Parity = Parity.Even; } else if(Pariter.Equals("1")) { CSerialPort.Parity = Parity.Mark; } else if (Pariter.Equals("NONE")) { CSerialPort.Parity = Parity.None; } else if (Pariter.Equals("IMPAIRE")) { CSerialPort.Parity = Parity.Odd; } else if (Pariter.Equals("0")) { CSerialPort.Parity = Parity.Space; } if (StopBit.Equals("NONE")) { CSerialPort.StopBits = StopBits.None; } else if(StopBit.Equals("1")) { CSerialPort.StopBits = StopBits.One; } else if(StopBit.Equals("1.5")) { CSerialPort.StopBits = StopBits.OnePointFive; } else if (StopBit.Equals("2")) { CSerialPort.StopBits = StopBits.Two; } byte[] buffer = new byte[255]; CSerialPort.Open(); //PROBLEME !!!//PROBLEME !!!//PROBLEME !!!//PROBLEME !!!//PROBLEME !!! //CSerialPort.Write("testenvoyermachines.txt"); //-- //******************************************************************** CSerialPort.Close(); System.Threading.Thread.Sleep(1000); //Timer de 1s } } } } }
Bonne journée à vous tous






Répondre avec citation
Partager