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 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
|
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 System.IO.Ports;
using System.IO;
using System.Threading;
namespace Communication_MCS
{
public partial class Mcs_pc : Form
{
// public string value = "";//string vide
public string value = string.Empty;
public int longueur_bytes_read;
public int i;
public Mcs_pc()
{
InitializeComponent();
this.Refresh();
}
private void Mcs_pc_Load(object sender, EventArgs e)
{
string[] ports = SerialPort .GetPortNames();
// string[] ports = System.IO.Ports.SerialPort.GetPortNames();
for (int i = 0; i < ports.Length; i++)
{
portBox2.Items.Add(ports[i]);
}
}
private void button1_quitter_Click(object sender, EventArgs e)
{
Form1 Form1 = new Form1();
Form1.Show();
this.Hide();
serialPort2.Close(); //fermer le SerialPort
}
private void Mcs_pc_Load_1(object sender, EventArgs e)
{
//on commence par lister les voies séries présentes
String[] ports = SerialPort.GetPortNames();//l'événement Form_Load nous lire tous les ports série disponibles et nous assigner les valeurs à la liste déroulante.
//string[] ports = System.IO.Ports.SerialPort.GetPortNames();
for (int i = 0; i < ports.Length; i++) //on ajoute les ports au combo box
{
portBox2.Items.Add(ports[i]);
}
}
private void button1_connecter_Click(object sender, EventArgs e)
{
serialPort2.PortName = portBox2.SelectedItem.ToString();
serialPort2.BaudRate = 9600;
serialPort2.Parity = Parity.Even;
serialPort2.StopBits = StopBits.One;
serialPort2.DataBits = 8;
serialPort2.Handshake = Handshake.None;
serialPort2.PortName = portBox2.Text;
serialPort2.DataReceived += new SerialDataReceivedEventHandler(serialPort2_DataReceived);
//serialPort2.Encoding = Encoding.GetEncoding(28591);
try
{
serialPort2.Open(); //Ouvrez le SerialPort
StatusLabel1.Text = "le port série : " + portBox2.Text + " Opened";//Mettre à jour le StatusStrip
MessageBox.Show("Opened");
}
catch (Exception ex)
{
MessageBox.Show("Failed: " + ex.Message);
}
button1_connecter.Enabled = false;
button1_deconnecter.Enabled = true;
button_recevoir.Enabled = true;
button1_ecrir.Enabled = true;
}
private void button1_deconnecter_Click(object sender, EventArgs e)
{
try
{
serialPort2.Close(); //fermer le SerialPort
StatusLabel1.Text = "le port série : " + portBox2.Text + " Closed"; //Mettre à jour le StatusStrip
MessageBox.Show("Closed");
}
catch (Exception ex)
{
MessageBox.Show("Failed: " + ex.Message);
}
button1_connecter.Enabled = true; // activer le button connecter
button1_deconnecter.Enabled = false;// desctiver le bitton deconnecter
}
List<byte> m_Trame = new List<byte>();//contiendra la trame retournée par l'automate du bout du fil après une demande de transfert
private void button1_recevoir_Click(object sender, EventArgs e)
{
StatusLabel1.Text = "Appuyez sur 'F6' de la commande numérique puis patientez...";
this.m_Trame.Clear();//nettoyage de la trame pour en recevoir une nouvelle
this.serialPort2.Write("\u000D");// lance la tach envoiFil
textBox1.SelectedText = string.Empty;
}
private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
this.serialPort2.Write("\u000D");// lance la tach envoiFil
while (this.serialPort2.BytesToRead > 0)
{
byte[] buffer = new byte[255]; // on crée un tampon de 255 caractères
int nb = this.serialPort2.Read(buffer, 0, buffer.Length);//on lit ce qu'il y a sur le port
for (int i = 0; i < nb; i++)
{
this.m_Trame.Add(buffer[i]);//on sauve les octets dans la trame globale
}
}
if(this.m_Trame.Count == 68468)
{
MessageBox.Show("Transfert terminé !");
}
Console.WriteLine("Il y a {0} octets dans la trame globale", this.m_Trame.Count);//Ça 'est nouveau
/*
while(serialPort2.BytesToRead > 0)
{
char[] buffer = new char[250]; // on crée un char de 255 caractere
longueur_bytes_read = serialPort2.Read(buffer, 0, buffer.Length);
//int longueur_bytes_read = serialPort2.Read(buffer, 0, buffer.Length); //lecture du buffer jusqu'a sa longeur buffer.Length
//tes characteres sont contenus dans buffer.
//on remplit notre string value byte par byte par notre tableau de charactere buffer, le += fait que l'on écrase pas les données qui sont inserées, mais on les ajoutes.
for (i = 0; i < longueur_bytes_read; i++)
{
value += buffer[i];
StatusLabel1.Text = "Transfert en court... ";
}
}
if (longueur_bytes_read == 100 * 128876)
MessageBox.Show("terminé ");*/
}
private void button1_ecrir_Click(object sender, EventArgs e)
{
textBox1.AppendText(value.ToString() + "\r\n");
}
private void button_enregestrer_Click(object sender, EventArgs e)
{
SaveFileDialog SaveFileDialog1 = new SaveFileDialog();
SaveFileDialog1.Filter = "Text Files (*.txt)|*.pcn";
SaveFileDialog1.Title = "Save Received As";
SaveFileDialog1.FilterIndex = 1;
if (((SaveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
&& (SaveFileDialog1.FileName.Length > 0)))
{
using (Stream s = File.Open(SaveFileDialog1.FileName, FileMode.Create))
using (StreamWriter sr = new StreamWriter(s))
{
sr.Write(textBox1.Text);
//sr.Write(value);
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
// progressBar1.Maximum = value.Length;
// progressBar1.Minimum = 0;
// progressBar1.Value = 0;
// progressBar1.Value = ((compteur * 100) / 100);
StatusLabel1.Text = progressBar1.Value.ToString() + "%" + "Télechargement en court...";
if (progressBar1.Value == 100)
{
timer1.Stop();
StatusLabel1.Text = "Transfert Fini";
}
}
} |
Partager