using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Management; using System.Text; using System.Text.RegularExpressions; namespace Interface_Visibilimetre_Biral { public class PortCom :INotifyPropertyChanged { private PortCom(ManagementObject Port) { Caption = Port["Caption"].ToString(); Name = Port["Name"].ToString(); CreationClassName = Port["CreationClassName"].ToString(); Description = Port["Description"].ToString(); DeviceID = Port["DeviceID"].ToString(); Manufacturer = Port["Manufacturer"].ToString(); PNPDeviceID = Port["PNPDeviceID"].ToString(); Service = Port["Service"].ToString(); Status = Port["Status"].ToString(); SystemCreationClassName = Port["SystemCreationClassName"].ToString(); SystemName = Port["SystemName"].ToString(); CompatibleID = (string[])Port["CompatibleID"]; ConfigManagerErrorCode = (UInt32)Port["ConfigManagerErrorCode"]; ConfigManagerUserConfig = (bool)Port["ConfigManagerUserConfig"]; HardwareID = (string[])Port["HardwareID"]; } /// <summary> /// Nom du port au format COMX /// </summary> public string PortName { get { Match m = Regex.Match(Caption, @"\((?<PortName>COM\d+)\)"); if (m.Success) return m.Groups["PortName"].Value; return string.Empty; } } private string description; /// <summary> /// Description du port /// </summary> public string Description { get { return description; } set { if (value.MAJ(ref description)) RisePropertyChanged("Description"); } } private string caption; public string Caption { get { return caption; } set { if (value.MAJ(ref caption)) RisePropertyChanged("Caption"); } } private string name; public string Name { get { return name; } set { if (value.MAJ(ref name)) RisePropertyChanged("Name"); } } private string creationClassName; public string CreationClassName { get { return creationClassName; } set { if (value.MAJ(ref creationClassName)) RisePropertyChanged("CreationClassName"); } } private string deviceID; public string DeviceID { get { return deviceID; } set { if (value.MAJ(ref deviceID)) RisePropertyChanged("DeviceID"); } } private string manufacturer; public string Manufacturer { get { return manufacturer; } set { if (value.MAJ(ref manufacturer)) RisePropertyChanged("Manufacturer"); } } private string pNPDeviceID; public string PNPDeviceID { get { return pNPDeviceID; } set { if (value.MAJ(ref pNPDeviceID)) RisePropertyChanged("PNPDeviceID"); } } private string service; public string Service { get { return service; } set { if (value.MAJ(ref service)) RisePropertyChanged("Service"); } } private string status; public string Status { get { return status; } set { if (value.MAJ(ref status)) RisePropertyChanged("Status"); } } private string systemCreationClassName; public string SystemCreationClassName { get { return systemCreationClassName; } set { if (value.MAJ(ref systemCreationClassName)) RisePropertyChanged("SystemCreationClassName"); } } private string systemName; public string SystemName { get { return systemName; } set { if (value.MAJ(ref systemName)) RisePropertyChanged("SystemName"); } } private int availability; public int Availability { get { return availability; } set { if (value.MAJ(ref availability)) RisePropertyChanged("Availability"); } } private string[] compatibleID; public string[] CompatibleID { get { return compatibleID; } set { if (value.MAJ(ref compatibleID)) RisePropertyChanged("CompatibleID"); } } private UInt32 configManagerErrorCode; public UInt32 ConfigManagerErrorCode { get { return configManagerErrorCode; } set { if (value.MAJ(ref configManagerErrorCode)) RisePropertyChanged("ConfigManagerErrorCode"); } } private bool configManagerUserConfig; public bool ConfigManagerUserConfig { get { return configManagerUserConfig; } set { if (value.MAJ(ref configManagerUserConfig)) RisePropertyChanged("ConfigManagerUserConfig"); } } private string[] hardwareID; public string[] HardwareID { get { return hardwareID; } set { if (value.MAJ(ref hardwareID)) RisePropertyChanged("HardwareID"); } } /// <summary> /// Retourne la liste des ports Com présents /// </summary> public static List<PortCom> Liste { get { List<PortCom> liste = new List<PortCom>(); ManagementObjectSearcher requete = new ManagementObjectSearcher("root\\CIMV2", "Select * FROM Win32_PnPEntity Where Caption like '%(COM%'"); foreach (ManagementObject item in requete.Get()) liste.Add(new PortCom(item)); return liste; } } #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; private void RisePropertyChanged(string Propriete) { if (this.PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(Propriete)); } #endregion } }