如何定义正在使用的通讯设备

如何定义正在使用的通讯设备,第1张

LIBUSB是一款简单好用的USB通讯开发库,一般HID设备用该库通讯能大大降低开发周期,使用如下,首先需要为设备安装驱动

在libusb的bin目录下有一个inf_wirzedexe的文件,该文件是生成驱动所用,具体步骤可以网上百度,很是傻瓜式 *** 作,安装好驱动之后就可以使用其通讯函数了,

安装好驱动之后的情况如下

使用visual studio开发,将lib_msvc目录下的libusblib文件添加到工程目录并将lusb0_usbh文件加入工程,如下

之后在MFC工程中如下 *** 作

OnInitDialog方法中调用usb_init函数,这是初始化函数库的,每个工程需要而且仅仅需要初始化一次

查找系统中全部USB的方法如下

usb_find_busses();

usb_find_devices();//重新寻找设备

for (bus = usb_get_busses(); bus; bus = bus->next)

{

for (dev = bus->devices; dev; dev = dev->next)

{

usbCount++;

deviceNameEmpty();

handle = usb_open(dev);

usb_get_string_simple(handle,dev->descriptoriProduct,nameBuffer,128);

usb_close(handle);

pidBuffer[usbCount-1] = dev->descriptoridProduct;//枚举所有设备

vidBuffer[usbCount-1] = dev->descriptoridVendor;

pvnBuffer[usbCount-1] = dev->descriptorbcdDevice;

deviceNameAppendFormat("%s",nameBuffer);

((CComboBox)GetDlgItem(IDC_COMBO_USB_DEVICE_ENMU))->AddString(deviceName);

}

}

打开usb设备的方法如下

//现在遍历全部设备,找到对应PID vid的设备打开

usb_find_busses();

usb_find_devices();//重新寻找设备

for (bus = usb_get_busses(); bus; bus = bus->next)

{

for (dev = bus->devices; dev; dev = dev->next)

{

if(dev->descriptoridProduct == myPid && dev->descriptoridVendor)

{

//PID VID相同

usb_handle = usb_open(dev);

}

}

}

发送数据的方法

char sendBuffer[64] = {0};

CString sendString;

GetDlgItem(IDC_EDIT_USB_SEND_MESSAGE)->GetWindowText(sendString);

for(int i = 0; i < 64; i++)

{

if(i >= sendStringGetLength())sendBuffer[i] = 0;

else

{

sendBuffer[i] = sendStringGetAt(i);

}

}

usb_claim_interface(usb_handle, 0);//默认设备

usb_interrupt_write(usb_handle,0x01,sendBuffer,64,100);

usb_release_interface(usb_handle, 0);

接收数据的方法

char receiveBuffer[64] = {0};

CString receiveString;

int recvCount = 0;

usb_claim_interface(usb_handle, 0);//默认设备

recvCount = usb_interrupt_read(usb_handle,0x81,receiveBuffer,64,100);

usb_release_interface(usb_handle, 0);

if(recvCount > 0)

{

GetDlgItem(IDC_EDIT_USB_RECV_SHOW)->GetWindowText(receiveString);

for(int i = 0; i < recvCount; i++)

{

receiveStringAppendChar(receiveBuffer[i]);

}

GetDlgItem(IDC_EDIT_USB_RECV_SHOW)->SetWindowText(receiveString);

每次发送和接手之前需要调用usb_claim_interface将函数库和 *** 作系统关联起来

有了这些基本方法,通讯应该就不成问题了

详细代码见链接

>

以上就是关于如何定义正在使用的通讯设备全部的内容,包括:如何定义正在使用的通讯设备、win10系统装不了mbedWinSerial怎么回事、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9718760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存