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
|
/// <summary>
/// Port de communication modbus série côté client (Master).
/// </summary>
private SerialPort clientModbusPort = new SerialPort();
//Configuration du port suivant le choix de l'utilisateur
//je passe volontairement cette fonction => clientModbusPort.baudRate = ...
/// <summary>
/// Constructeur.
/// </summary>
public FormClientModbus()
{
//Initialise les composants du formulaire.
InitializeComponent();
//Initialisation des composants nécessaires à la configuration de la communication entre l'application cliente et l'application serveur.
InitializeConfiguration();
//Evènement de réception de données sur le port série.
clientModbusPort.DataReceived+=new SerialDataReceivedEventHandler(clientModbusPort_DataReceived);
}
/// <summary>
/// Méthode appelée lorsqu'il y a des données dans le buffer du port série
/// de l'application cliente.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void clientModbusPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//Nombre de bytes à lire dans le buffer du port.
int bytesToRead = clientModbusPort.BytesToRead;
//Tableau de stockage des bytes du buffer de lecture.
byte[] clientReceiveBuffer = new byte[bytesToRead];
//Lit les données du buffer et les stocke dans le tableau prévu à cet effet.
clientModbusPort.Read(clientReceiveBuffer, 0, bytesToRead);
}
/// <summary>
/// - Ouvre un port de communication série selon les paramètres sélectionnés
///par l'utilisateur.
/// - Effectue la requête demandée par l'utilisateur.
/// - Ferme le port de communication série.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonRequeteSendRequest_Click(object sender, EventArgs e)
{
if (slaveAddress)
{
//Ouvre un port de communication série avec les paramètres définis par
//l'utilisateur.
Configuration_SelectedParameters();
try
{
clientModbusPort.Open();
}
catch (Exception openPortException)
{
MessageBox.Show("An exception occurs :\r\n" +
openPortException.StackTrace + "\r\n\r\nDetails :\r\n" +
openPortException.Message, Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//Envoie le numéro esclave à l'application serveur (device slave).
//--<Mettre ici l'envoi du numéro esclave au serveur>--
//Effectue la requête.
//Ferme le port de communication série.
try
{
clientModbusPort.Close();
}
catch (Exception closePortException)
{
MessageBox.Show("An exception occurs :\r\n" +
closePortException.StackTrace + "\r\n\r\nDetails :\r\n" +
closePortException.Message, Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Le numéro esclave doit être compris entre 1 et 31
.", "Numéro esclave invalide !", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
} |
Partager