求助关于通过ManagementObjectSearcher读取串口信息的问题!

gaoxing_1985007 2018-08-23 05:59:14
做专案要实现一个功能,读取串口的详细信息,比如:USB Serial Port (COM4)
网上找了以下代码:

public static string[] MulGetHardwareInfo(HardwareEnum hardType, string propKey)
{
List<string> strs = new List<string>();
try
{
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + hardType))
{
var hardInfos = searcher.Get();
foreach (var hardInfo in hardInfos)
{
if (hardInfo.Properties[propKey].Value.ToString().Contains("COM"))
{
strs.Add(hardInfo.Properties[propKey].Value.ToString());
}

}
searcher.Dispose();
}
return strs.ToArray();
}
catch
{
return null;
}
finally
{
strs = null;
}
}


上面的代码可以实现功能,win7 64位电脑读出串口的信息,但是在有些win7 32位系统下读取不到信息,有些可以读到,是不是有些电脑系统缺少东西,是精简版系统,所以读不出来?有没有哪位高人知道系统缺少了什么东西?或者是其它原因导致?
...全文
527 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
XiaoPangZhui_tt 2020-03-16
  • 打赏
  • 举报
回复
我也是类似问题,请问一下为什么这段代码在Win7下功能可以实现,而在Win10下不能实现
void GetPrintJobs()
{
this.PrinterJobs.Clear();

string searchQuery;

ManagementObjectSearcher searchPrintJobs;
ManagementObjectCollection prntJobCollection;
try
{
searchQuery = "SELECT * FROM Win32_PrintJob";
searchPrintJobs = new ManagementObjectSearcher(searchQuery);
prntJobCollection = searchPrintJobs.Get();
foreach (ManagementObject prntJob in prntJobCollection)
{
PrinterJob pjob = new PrinterJob();
pjob.JobName = prntJob.Properties["Document"].Value.ToString();
pjob.JobId = prntJob.Properties["JobId"].Value.ToString();
PrinterJobs.Add(pjob);
}

}
catch (Exception sysException)
{
LogService.Log(sysException.Message, LogType.Info, @"log.lg");
}
}
qq_15197419 2019-09-10
  • 打赏
  • 举报
回复
我也是win10下报错:未将对象实例化。代码和题主一模一样。hardInfo.Properties["Name"].Value一定要做null判断!有的系统遍历时有的节点根本没有name属性!
_瑶瑶_ 2018-11-09
  • 打赏
  • 举报
回复 1

private void getPortDeviceName()
{
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher
("select * from Win32_PnPEntity where Name like '%(COM%'"))
{
var hardInfos = searcher.Get();
foreach (var hardInfo in hardInfos)
{
if (hardInfo.Properties["Name"].Value != null)
{
string deviceName = hardInfo.Properties["Name"].Value.ToString();
Console.WriteLine(deviceName);
}
}
}
}
_瑶瑶_ 2018-11-09
  • 打赏
  • 举报
回复
private void getPortDeviceName()
{
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher
("select * from Win32_PnPEntity where Name like '%(COM%'"))
{
var hardInfos = searcher.Get();
foreach (var hardInfo in hardInfos)
{
if (hardInfo.Properties["Name"].Value != null)
{
string deviceName = hardInfo.Properties["Name"].Value.ToString();
Console.WriteLine(deviceName);
}
}
}
}
gaoxing_1985007 2018-08-24
  • 打赏
  • 举报
回复
自己顶一下,别沉了啊

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧