好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#获取串口列表实现实时监控串口

常用的两种方法

方法一:

?

using microsoft.win32;

  

registrykey keycom = registry.localmachine.opensubkey( "hardware//devicemap//serialcomm" );

if (keycom != null )

{

  string [] ssubkeys = keycom.getvaluenames();

  foreach ( string sname in ssubkeys)

  {

   string svalue = ( string )keycom.getvalue(sname);

   this .textbox1.text = this .textbox1.text + svalue + "/r/n" ;

  }

}

方法二:

?

using system.io.ports;

 

foreach ( string vportname in serialport.getportnames())

{

  this .textbox2.text = this .textbox2.text + vportname + "/r/n" ;

}

分享一个已经封装好的api,实现效果如下:

代码如下:

?

/// <summary>

/// 枚举win32 api

/// </summary>

public enum hardwareenum

{

  // 硬件

  win32_processor, // cpu 处理器

  win32_physicalmemory, // 物理内存条

  win32_keyboard, // 键盘

  win32_pointingdevice, // 点输入设备,包括鼠标。

  win32_floppydrive, // 软盘驱动器

  win32_diskdrive, // 硬盘驱动器

  win32_cdromdrive, // 光盘驱动器

  win32_baseboard, // 主板

  win32_bios, // bios 芯片

  win32_parallelport, // 并口

  win32_serialport, // 串口

  win32_serialportconfiguration, // 串口配置

  win32_sounddevice, // 多媒体设置,一般指声卡。

  win32_systemslot, // 主板插槽 (isa & pci & agp)

  win32_usbcontroller, // usb 控制器

  win32_networkadapter, // 网络适配器

  win32_networkadapterconfiguration, // 网络适配器设置

  win32_printer, // 打印机

  win32_printerconfiguration, // 打印机设置

  win32_printjob, // 打印机任务

  win32_tcpipprinterport, // 打印机端口

  win32_potsmodem, // modem

  win32_potsmodemtoserialport, // modem 端口

  win32_desktopmonitor, // 显示器

  win32_displayconfiguration, // 显卡

  win32_displaycontrollerconfiguration, // 显卡设置

  win32_videocontroller, // 显卡细节。

  win32_videosettings, // 显卡支持的显示模式。

 

  // 操作系统

  win32_timezone, // 时区

  win32_systemdriver, // 驱动程序

  win32_diskpartition, // 磁盘分区

  win32_logicaldisk, // 逻辑磁盘

  win32_logicaldisktopartition, // 逻辑磁盘所在分区及始末位置。

  win32_logicalmemoryconfiguration, // 逻辑内存配置

  win32_pagefile, // 系统页文件信息

  win32_pagefilesetting, // 页文件设置

  win32_bootconfiguration, // 系统启动配置

  win32_computersystem, // 计算机信息简要

  win32_operatingsystem, // 操作系统信息

  win32_startupcommand, // 系统自动启动程序

  win32_service, // 系统安装的服务

  win32_group, // 系统管理组

  win32_groupuser, // 系统组帐号

  win32_useraccount, // 用户帐号

  win32_process, // 系统进程

  win32_thread, // 系统线程

  win32_share, // 共享

  win32_networkclient, // 已安装的网络客户端

  win32_networkprotocol, // 已安装的网络协议

  win32_pnpentity, //all device

}

/// <summary>

/// wmi取硬件信息

/// </summary>

/// <param name="hardtype"></param>

/// <param name="propkey"></param>

/// <returns></returns>

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 ; }

}

//通过wmi获取com端口

string [] ss = mulgethardwareinfo(hardwareenum.win32_pnpentity, "name" );

dy("nrwz");

查看更多关于C#获取串口列表实现实时监控串口的详细内容...

  阅读:62次