0
デバイスマネージャのポートコムの設定を変更しましたが、シリアルポートクラスとWMI APIクラスWin32_SerialPortConfigurationがこのポートcomのデフォルト設定を返し続けます。 WMI APIおよびSerialPortクラスがポートcomのデフォルト設定を返すのはなぜですか?
デバイスマネージャのポートコムの設定を変更しましたが、シリアルポートクラスとWMI APIクラスWin32_SerialPortConfigurationがこのポートcomのデフォルト設定を返し続けます。 WMI APIおよびSerialPortクラスがポートcomのデフォルト設定を返すのはなぜですか?
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Ports"))
{
foreach (string name in ndpKey.GetValueNames())
{
if (name.Remove(name.IndexOf(":")).ToLower().Equals(ComName.ToLower()))
{
var tempArray = ndpKey.GetValue(name).ToString().Split(',');
int speed = 0;
char parity = ' ';
int dataBits = 0;
Decimal stopBit = 0;
string parityS ="";
ComSettings.Add("Name", ComName);
if ((Int32.TryParse(tempArray[0], out speed)) && (Int32.TryParse(tempArray[2], out dataBits)) && (Decimal.TryParse(tempArray[3].Replace(".", ","), out stopBit)) && (Char.TryParse(tempArray[1], out parity)))
{
ComSettings.Add("Speed", speed);
ComSettings.Add("DataBits", dataBits);
ComSettings.Add("StopBits", stopBit);
switch (parity)
{
case 'e':
parityS = "Even";
break;
case 'n':
parityS = "None";
break;
case 'o':
parityS = "Odd";
break;
case 'm':
parityS = "Mark";
break;
case 's':
parityS = "Space";
break;
}
ComSettings.Add("Parity", parityS);
}
break;
}
}
}
このコードは、それがデバイスマネージャにセットのようにポートCOMの状態を返します。
USBエミュレータドライバは、この権利を取得することはできません。それは重要ではありません、MS-DOSをもう使用していません。 4つのdatabitsが正しいとは限りません。私が知っているUARTはこれをサポートしていません。 7または8は正常な値です。 –
常にデフォルト値を返すだけでなく、System.IO.Ports.SerialPortクラスでもあります。そして設定値については、今のところ自分のコードをテストするために変更しただけです。 –
これは予想通り、彼らはまったく同じ設定を見ます。それがフレークであるときにそれに頼らないでください。エミュレータの製造元とモデルに応じて、このプロパティシートを使用することはできません。 –