0
장치 관리자에서 포트 Com의 구성을 변경했지만 serialPort 클래스와 WMI API 클래스 Win32_SerialPortConfiguration이이 포트 COM의 기본 구성을 계속 반환합니다. 이 장치 관리자에서 설정되어로 WMI API 및 SerialPort 클래스가 포트 com의 기본 구성을 반환하는 이유는 무엇입니까?
장치 관리자에서 포트 Com의 구성을 변경했지만 serialPort 클래스와 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;
}
}
}
이 코드는 포트 닷컴의 상태를 반환합니다.
USB 에뮬레이터 드라이버는이 권한을 얻을 수 없다고합니다. 그것은 중요하지 않습니다. MS-Dos를 더 이상 사용하지 않습니다. 4 개의 databits가 정확할 수는 없다는 것을 기억하십시오. 내가 아는 어떤 UART도이를 지원하지 않습니다. 7 또는 8은 정상적인 값입니다. –
항상 기본 값을 반환하는 것은 에뮬레이터뿐만 아니라 System.IO.Ports.SerialPort 클래스이기도합니다. 그리고 설정 값에 대해서 지금은 코드를 테스트하도록 변경했습니다. –
예상대로 그들은 똑같은 설정을 봅니다. 그것이 flakey 일 때 다만 그것에 의지하지 말라. 에뮬레이터의 제조업체와 모델에 따라이 속성 시트를 전혀 사용할 수 없습니다. –