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。