usb虚拟串口驱动_C#程序与单片机通信时,如何自动初始化串口(2)?

e6136720349a939e0d9908823b6dd489.png

windows

在前文C#程序与单片机通信时,如何自动初始化串口(1)?中介绍了如何注册程序,使用程序能够监听USB插、拔事件。当程序获得这些事件之后,如何确定事件源就是我们关注的那个USB设备呢?

eb856886b01c335e0ceed853c6a16b35.png

USB PID信息

每个USB设备都有他们的生产厂家代码、设备代码等信息,我们可以利用此信息来确定该设备。比如,有一个设备代码如下的USB设备(USB虚拟串口),此值可以从Windows设备管理>USB驱动信息中获取。

Device USBVID_0483&PID_5740123456

//定义一个标识字符串const string VID_STR = @"USBVID_0483&PID_5740"; 

在前文的Usb_DeviceAdded()函数中,要从系统中获得USB设备信息,并打开相应的串口。C#中要用到System.Management(类似系统设备管理功能),采用命令的方式实现,如下

//搜索所有插拔设备ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_PnPEntity");//逐个访问foreach (ManagementObject mo in searcher.Get()){ //比较是否正确 if (0== string.Compare(VID_STR, 0, mo["PNPDeviceID"].ToString(), 0, VID_LEN)) { try {  //找到对应设备 m_Port = new SerialPort(mo["DeviceID"].ToString(), 115200, Parity.None, 8, StopBits.One) { //缓冲区大小 WriteBufferSize = 1024, ReadBufferSize = 1024, //超时设定 ReadTimeout = 2000//ms };  //打开串口 m_Port.Open(); IsOpen = m_Port.IsOpen; } catch { m_Port.Dispose(); //如果失败则提示 throw new ArgumentNullException("Port Open Failed
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值