python监听usb
⑴ 在python连接的USB设备信息查询简单的方法吗
PC上的(包括台式机和笔记本)USB接口都只有Host模式,如果要两个USB设备通信,必须一个是Host另一个是Device,否则硬件都无法工作,更别提通信了,并且,任何编程语言都不行。
如果其中一端是手机、平板等移动设备,并且确认支持USB OTG模式的话,还可以通过OTG来通信,但涉及的东西太多:USB协议、设备协议、驱动开发、设备模拟等等,付出如此大的代价不值得。
⑵ python使用usb 读卡器
可以调用Usb读卡器。
首先调用detach_kernel_driver来从设备接口分离已经连接的内核驱动程序(如果有的话),这样您就可以在代码中与它通信(它要么是您的代码,要么是某个内核驱动程序在与设备接口通信)。完成后,您可能需要调用attach_kernel_driver重新连接内核驱动程序。
如果您可以确保没有为给定的设备加载内核驱动程序(或者在运行代码之前手动卸载它),那么就不需要调用任何这些C函数/Python方法。
⑶ python怎样实现监听程序的端口。如apache开着, 一旦有数据到达80的端口 他就会记录下来
apache占用了80端口python的socket就不能用了啊,要不怎么知道数据发给谁呢,你可以让python使用80,apache使用别的,然后让python收到后转发给apache。
⑷ Python能对USB接口进行管理么
先要安装Pyserial
importserial
#设置端口和波特率
s=serial.Serial(port='COM4',baudrate=115200)
#端口写数
s.write("2000 ")
#端口读数
read_1=s.readline()#读一行
read_2=s.read(4)#读4bytes
#关闭端口
s.close()
⑸ 在Python中的USB设备通信问题,怎么解决
先要安装Pyserial
import serial #设置端口和波特率s=serial.Serial(port='COM4', baudrate=115200) #端口写数s.write("2000\n") #端口读数read_1=s.readline() # 读一行read_2=s.read(4) # 读4bytes #关闭端口s.close()
⑹ 如何用Python读取USB操纵杆的输入
1、游戏框架:很多游戏框架都有支持读取手柄的接口。比如PyGame里就有 pygame.joystick包。
2、多媒体框架:比如DirectX的Python封装也能读取手柄。
3、PyUSB:手柄属于HID设备,一般对应Interrupt传输,自己尝试分析其协议估计也不难。之前见在Linux下搞USB驱动的人最喜欢拿joystick举例子了。
⑺ python中如何检测USB设备的接入和拨出
这么高级啊,还可以支持这个,强大的很哦。
⑻ python 如何监听U盘插拔事件
可以这么做,参考:
import win32api, win32con, win32gui
from ctypes import *
#
# Device change events (WM_DEVICECHANGE wParam)
#
DBT_DEVICEARRIVAL = 0x8000
DBT_DEVICEQUERYREMOVE = 0x8001
DBT_DEVICEQUERYREMOVEFAILED = 0x8002
DBT_DEVICEMOVEPENDING = 0x8003
DBT_DEVICEREMOVECOMPLETE = 0x8004
DBT_DEVICETYPESSPECIFIC = 0x8005
DBT_CONFIGCHANGED = 0x0018
#
# type of device in DEV_BROADCAST_HDR
#
DBT_DEVTYP_OEM = 0x00000000
DBT_DEVTYP_DEVNODE = 0x00000001
DBT_DEVTYP_VOLUME = 0x00000002
DBT_DEVTYPE_PORT = 0x00000003
DBT_DEVTYPE_NET = 0x00000004
#
# media types in DBT_DEVTYP_VOLUME
#
DBTF_MEDIA = 0x0001
DBTF_NET = 0x0002
WORD = c_ushort
DWORD = c_ulong
class DEV_BROADCAST_HDR (Structure):
_fields_ = [
("dbch_size", DWORD),
("dbch_devicetype", DWORD),
("dbch_reserved", DWORD)
]
class DEV_BROADCAST_VOLUME (Structure):
_fields_ = [
("dbcv_size", DWORD),
("dbcv_devicetype", DWORD),
("dbcv_reserved", DWORD),
("dbcv_unitmask", DWORD),
("dbcv_flags", WORD)
]
def drive_from_mask (mask):
n_drive = 0
while 1:
if (mask & (2 ** n_drive)): return n_drive
else: n_drive += 1
class Notification:
def __init__(self):
message_map = {
win32con.WM_DEVICECHANGE : self.onDeviceChange
}
wc = win32gui.WNDCLASS ()
hinst = wc.hInstance = win32api.GetMoleHandle (None)
wc.lpszClassName = "DeviceChangeDemo"
wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW;
wc.hCursor = win32gui.LoadCursor (0, win32con.IDC_ARROW)
wc.hbrBackground = win32con.COLOR_WINDOW
wc.lpfnWndProc = message_map
classAtom = win32gui.RegisterClass (wc)
style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
self.hwnd = win32gui.CreateWindow (
classAtom,
"Device Change Demo",
style,
0, 0,
win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,
0, 0,
hinst, None
)
def onDeviceChange (self, hwnd, msg, wparam, lparam):
#
# WM_DEVICECHANGE:
# wParam - type of change: arrival, removal etc.
# lParam - what's changed?
# if it's a volume then...
# lParam - what's changed more exactly
#
dev_broadcast_hdr = DEV_BROADCAST_HDR.from_address (lparam)
if wparam == DBT_DEVICEARRIVAL:
print "Something's arrived"
if dev_broadcast_hdr.dbch_devicetype == DBT_DEVTYP_VOLUME:
print "It's a volume!"
dev_broadcast_volume = DEV_BROADCAST_VOLUME.from_address (lparam)
if dev_broadcast_volume.dbcv_flags &; DBTF_MEDIA:
print "with some media"
drive_letter = drive_from_mask (dev_broadcast_volume.dbcv_unitmask)
print "in drive", chr (ord ("A") + drive_letter)
return 1
if __name__=='__main__':
w = Notification ()
win32gui.PumpMessages ()
⑼ python 使用winmm库 usb
驱动采用WinDriver。但在实际调试过程中,发现WinDriver不同版本之间兼容性差,并且在win10上表现不佳。实际的数据传输流程如下。
pythonusbdll(throughctypes)windriverusbdevice由于dll文件是在win7机器上编译的,故仅能在win7上使用,在win10机器上出错。
使用python的项目都应该是简洁而优雅地,遂研究了在python操作usbdevice的两种方式。
驱动无关的调试软件使用bushoundWinDriverWinDriver经常与Jungoconnectivity联系在一起,安装了WinDriver驱动的usbdevice在设备管理器中也显示为Jungodevices。