1. Création d'un fichier de configuration jsconfig1.json
2. Édition du fichier JSON
3. Création d'un dossier Config dans le répertoire bin et copie du fichier JSON
4. Création de la classe de configuration
Note : Les noms des propriétés de la classe doivent correpsondre aux clés du fichier JSON
Il est nécessaire d'ajouter les références Newotnsoft.json et System.Windows.Forms
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Newtonsoft.Json;
namespace Configuration
{
public class ParametresServeur
{
static ParametresServeur()
{
// [Attention] Problème d'encodage avec les caractères chinois
// var jsonString = File.ReadAllText(Path.Combine(Application.StartupPath, "Config/parametres.json"));
// [Solution pour l'encodage chinois]
// La méthode ReadAllText possède une surcharge permettant de spécifier l'encodage
var jsonString = File.ReadAllText(Path.Combine(Application.StartupPath, "Config/parametres.json"), System.Text.Encoding.Default);
_instance = (ParametresServeur)JsonConvert.DeserializeObject(jsonString, typeof(ParametresServeur));
}
static ParametresServeur _instance;
public static ParametresServeur Instance
{
get
{
return _instance;
}
}
public static void Enregistrer()
{
string jsonStr = JsonConvert.SerializeObject(Instance);
File.WriteAllText(Path.Combine(Application.StartupPath, "Config/parametres.json"), jsonStr, System.Text.Encoding.Default);
}
/// <summary>
/// Port du contrôleur
/// </summary>
public int PortControleur
{
get; set;
}
/// <summary>
/// IP du contrôleur
/// </summary>
public string AdresseIP
{
get; set;
}
public int PortSecondaire
{
get; set;
}
public string AdresseIPSecondaire
{
get; set;
}
/// <summary>
/// Nombre d'axes
/// </summary>
public int NombreAxes
{
get; set;
}
/// <summary>
/// Nom de l'appareil
/// </summary>
public string NomAppareil
{
get; set;
}
/// <summary>
/// ID de l'esclave
/// </summary>
public byte IdEsclave
{
get; set;
}
/// <summary>
/// Ping automatique de l'IP du contrôleur
/// </summary>
public bool PingAutoIP
{
get; set;
}
/// <summary>
/// IP pour le ping automatique
/// </summary>
public string IPpourPingAuto
{
get; set;
}
public string IPpourPingAutoSecondaire
{
get; set;
}
/// <summary>
/// Envoi de code-barres côté client
/// </summary>
public bool EnvoiCodeBarres
{
get; set;
}
/// <summary>
/// Réception de code-barres côté serveur
/// </summary>
public bool ReceptionCodeBarres
{
get; set;
}
public string IPServeur
{
get; set;
}
public string PortServeur
{
get; set;
}
/// <summary>
/// Vérification du mot de passe
/// </summary>
public bool VerificationMotDePasse
{
get; set;
}
/// <summary>
/// Mot de passe
/// </summary>
public string MotDePasse
{
get; set;
}
/// <summary>
/// Prétaraudage
/// </summary>
public bool Preresserrage
{
get; set;
}
/// <summary>
/// Numéro de programme de prérresserrage
/// </summary>
public string NumeroProgrammePreResserrage
{
get; set;
}
/// <summary>
/// Utilisation d'un PLC
/// </summary>
public bool UtilisationPLC
{
get; set;
}
/// <summary>
/// Port du PLC
/// </summary>
public int PortPLC
{
get; set;
}
/// <summary>
/// IP du PLC
/// </summary>
public string AdresseIPPLC
{
get; set;
}
/// <summary>
/// Port secondaire du PLC
/// </summary>
public int PortPLCSecondaire
{
get; set;
}
/// <summary>
/// IP secondaire du PLC
/// </summary>
public string AdresseIPPLCSecondaire
{
get; set;
}
/// <summary>
/// Réception automatique des fichiers de processus
/// </summary>
public bool ReceptionAutoFichiersProcessus
{
get; set;
}
/// <summary>
/// Port serveur pour la réception des fichiers de processus
/// </summary>
public int PortServeurFichiersProcessus
{
get; set;
}
/// <summary>
/// IP serveur pour la réception des fichiers de processus
/// </summary>
public string AdresseIPServeurFichiersProcessus
{
get; set;
}
private string _nomFichierCodeBarres = "Tableau_correspondance_véhicules_et_couple.xlsx";
/// <summary>
/// Nom du fichier de code-barres
/// </summary>
public string NomFichierCodeBarres
{
get { return _nomFichierCodeBarres; }
set { _nomFichierCodeBarres = value; }
}
}
}
5. Lecture de la configuration JSON
#region PLC
// Initialisation du maître Modbus
fabriqueModbus = new ModbusFactory();
// Pour les tests locaux, utilisation de l'adresse de boucle, le port 502 est spécifié par le protocole Modbus
maitre = fabriqueModbus.CreateMaster(new TcpClient(ParametresServeur.Instance.AdresseIPEsclave,
ParametresServeur.Instance.PortEsclave));
#endregion
6. Sauvegarde (écriture dans JSON)
private void btnEnregistrerProduit_Clique(object sender, EventArgs e)
{
FrmLogin frmConnexion = new FrmLogin() { TopMost = true };
DialogResult resultatDialogue = frmConnexion.ShowDialog();
if (resultatDialogue == DialogResult.OK)
{
ParametresServeur.Instance.ReceptionAutoFichiersProcessus = chkReception.Checked;
ParametresServeur.Enregistrer();
MessageBox.Show("Modification réussie, redémarrez le logiciel pour que les changements prennent effet", "Modification des paramètres");
}
else { return; }
}