- 論壇徽章:
- 2
|
個(gè)人為解決實(shí)際問(wèn)題的話,能用python就用python。上次DNW的驅(qū)動(dòng) + 客戶端程序就是用python寫的,一共才幾十行代碼。- #!/usr/bin/python
- import usb.core
- import StringIO
- import struct
- import sys
-
- if len(sys.argv) == 2 :
- addr = 0x32000000
- elif len(sys.argv) == 3:
- addr = int(sys.argv[2], 16)
- else:
- print 'Usage: dnw filename [address]'
- quit()
-
- def checksum(data):
- s = 0
- for i in data:
- s += struct.unpack('B', i)[0];
- return s&0xffff
-
- content = open(sys.argv[1]).read()
- address = struct.pack('L', addr)
- length = struct.pack('L', len(content) + 10)
- check = struct.pack('H', checksum(address + length + content))
-
- inp = StringIO.StringIO(address + length + content + check)
-
- dev = usb.core.find(idVendor=0x5345, idProduct=0x1234)
- dev.set_configuration()
- ep = dev[0][(0,0)][1]
-
- data = inp.read(512)
- while data:
- ep.write(data)
- data = inp.read(512)
復(fù)制代碼 |
|