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

如何定义正在使用的通讯设备,第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将函数库和 *** 作系统关联起来
有了这些基本方法,通讯应该就不成问题了
详细代码见链接
>

不能。

Django是Python编写的开源web应用框架,采用了MVC的模式,方便快速构建web应用程序。

Django主要由三个层次组成,template层用于实现与前台的交互,收集前端发送的数据;control层用于处理用户数据,实现业务逻辑;model层用于实现与数据库的连接,将数据持久化;Django的使用非常方便的,集成了大部分的常用功能,用户不用专门处理session,用户登陆等应用。

漏洞描述

Odoo是比利时Odoo公司的一套企业资源计划(ERP)和客户关系管理(CRM)系统。该系统采用Python语言开发,PostgreSQL作为数据库,并包括销售管理、库存管理、财务管理等模块。

OdooCommunity110through130版本及之前版本和OdooEnterprise110版本至130版本存在安全漏洞,该漏洞源于当使用Python36或更高版本运行时,允许远程认证用户执行任意代码,导致权限升级。


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

原文地址: http://outofmemory.cn/dianzi/13200132.html

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

发表评论

登录后才能评论

评论列表(0条)

保存