PDA

View Full Version : Xin hỏi cách tạo driver cho USB port


highland81
11-10-2006, 11:39 PM
Giữa các con vi điều khiển ngoài chức năng hổ trợ kết nối với cổng USB,còn có cách tạo các driver trong pc để giao tiếp với nó.Vậy xin hỏi để tạo cái driver này thì cần những gì ạ.Theo em biết chút đỉnh thì phải có file thư viện liên kết động *.dll để hổ trợ,ngoài ra nếu dùng pic hoặc AVR thì tùy từng con mà có các file hổ trợ khác nhau hay sao ạ?tức là ngoài việc mình copy các file nguồn này của ông microchip vào trong pc để tạo file nguồn thì mình phải làm gì nữa ạ?mình có phải viết code cho nó ko?em đang làm cái bộ nhớ để lưu trữ dữ liệu giao tiếp qua cổng USB tương tự như cái USB thường ngày vẫn dùng .Bác nào đã làm hoặc biết về nó xin chỉ giúp em với,cảm ơn nhiều....

pham_dinh_hung83
12-10-2006, 09:15 PM
dùng hid cho dễ đi
tìm phần mềm easyHID cài vào.dùng vb viết nó sẽ tự sinh cái dll cho mình
mình làm chạy êm

highland81
12-10-2006, 11:58 PM
Như vậy khi mình cài phần mềm này vào thì dùng con gì cung được ạ?hay chỉ thích ứng với Pic thôi!lúc cài xong mình chỉ việc viết code = vb là xong ạ?cảm ơn bác nhiều!

ntuan
14-10-2006, 08:37 PM
xin hỏi cáp USB2COM thì trong đó đã tích hợp bộ drive chưa hả các bác

highland81
14-10-2006, 11:03 PM
xin hỏi có ai làm cái project usb dùng libusb-win32 chỉ giao giúp!!!!!

highland81
14-10-2006, 11:16 PM
dùng hid cho dễ đi
tìm phần mềm easyHID cài vào.dùng vb viết nó sẽ tự sinh cái dll cho mình
mình làm chạy êm
chào bác Hùng
em thấy easyHID chỉ hổ trợ cho Vb5 và Vc++6 nếu viết bằng Vb6 đựoc ko ạ?
bác có thể post cho em đoạn code và shematic bác đă làm được chứ ạ?cảm ơn bác nhiều!
Chúc vui!!

pham_dinh_hung83
15-10-2006, 04:51 PM
vb 6 chạy ngon
thử nhé:

' vendor and product IDs
Private Const VendorID = 2606
Private Const ProductID = 2007

' read and write buffers
Private Const BufferInSize = 9
Private Const BufferOutSize = 9
Dim BufferIn(0 To BufferInSize) As Byte
Dim BufferOut(0 To BufferOutSize) As Byte
Dim byteLED As Byte

Private Sub Check3_Click()

End Sub

' ************************************************** **************
' when the form loads, connect to the HID controller - pass
' the form window handle so that you can receive notification
' events...
'************************************************* ****************
Private Sub Form_Load()
' do not remove!
ConnectToHID (Me.hwnd)
End Sub

'************************************************* ****************
' disconnect from the HID controller...
'************************************************* ****************
Private Sub Form_Unload(Cancel As Integer)
DisconnectFromHID
End Sub

'************************************************* ****************
' a HID device has been plugged in...
'************************************************* ****************
Public Sub OnPlugged(ByVal pHandle As Long)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
LbStatus.Caption = "Hardware Connected"
LED.FillColor = &HFF00&
Counter = 0
' ** YOUR CODE HERE **
End If
End Sub

'************************************************* ****************
' a HID device has been unplugged...
'************************************************* ****************
Public Sub OnUnplugged(ByVal pHandle As Long)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
LbStatus.Caption = "Hardware not Found! Please plug hardware"
LED.FillColor = &HFF&
' ** YOUR CODE HERE **
End If
End Sub

'************************************************* ****************
' controller changed notification - called
' after ALL HID devices are plugged or unplugged
'************************************************* ****************
Public Sub OnChanged()
Dim DeviceHandle As Long

' get the handle of the device we are interested in, then set
' its read notify flag to true - this ensures you get a read
' notification message when there is some data to read...
DeviceHandle = hidGetHandle(VendorID, ProductID)
hidSetReadNotify DeviceHandle, True
End Sub

'************************************************* ****************
' on read event...
'************************************************* ****************
Public Sub OnRead(ByVal pHandle As Long)
' read the data (don't forget, pass the whole array)...
If hidRead(pHandle, BufferIn(0)) Then
ADC0.Caption = BufferIn(1)
ADC1.Caption = BufferIn(2)
ADC2.Caption = BufferIn(3)
ADC3.Caption = BufferIn(4)
ADC4.Caption = BufferIn(5)
ADC5.Caption = BufferIn(6)
ADC6.Caption = BufferIn(7)
ADC7.Caption = BufferIn(8)

' ** YOUR CODE HERE **
' first byte is the report ID, e.g. BufferIn(0)
' the other bytes are the data from the microcontrolller...
End If
End Sub

'************************************************* ****************
' this is how you write some data...
'************************************************* ****************
Public Sub WriteSomeData()
BufferOut(0) = 0 ' first by is always the report ID
BufferOut(1) = 10 ' first data item, etc etc

' write the data (don't forget, pass the whole array)...
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Label4_Click()

End Sub

Private Sub Label7_Click()

End Sub

Private Sub Label8_Click()

End Sub

Private Sub Ledoff_Click()
swLed1.Value = 1
swLed2.Value = 1
swLed3.Value = 1
swLed4.Value = 1
swLed5.Value = 1
swLed6.Value = 1
swLed7.Value = 1
swLed8.Value = 1
byteLED = 255
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub LedOn_Click()
swLed1.Value = 0
swLed2.Value = 0
swLed3.Value = 0
swLed4.Value = 0
swLed5.Value = 0
swLed6.Value = 0
swLed7.Value = 0
swLed8.Value = 0
byteLED = 0
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub swLed1_Click()
byteLED = byteLED Xor (2 ^ 0)
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)

End Sub

Private Sub swLed2_Click()
byteLED = byteLED Xor (2 ^ 1)
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub swLed3_Click()
byteLED = byteLED Xor (2 ^ 2)
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub swLed4_Click()
byteLED = byteLED Xor (2 ^ 3)
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub swLed5_Click()
byteLED = byteLED Xor (2 ^ 4)
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub swLed6_Click()
byteLED = byteLED Xor (2 ^ 5)
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub swLed7_Click()
byteLED = byteLED Xor (2 ^ 6)
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub swLed8_Click()
byteLED = byteLED Xor (2 ^ 7)
BufferOut(8) = byteLED
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Timer1_Timer()
BufferOut(0) = 0
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

pham_dinh_hung83
15-10-2006, 04:53 PM
mình dùng pic 18f4550
picbáic để viết
ko biết các cao nhân đánh giá thế nào nhưng mình thấy picbasic ổn lắm
hỗ trợ đủ,2 năm mình dùng asem thi robot làm mình thấy basic rất hay

highland81
16-10-2006, 02:00 PM
Chào anh pham-dinh-hung83!
Em hỏi khi mình viết mã cho nó mình nhúng vào MPLAB được ko?và cái shematic mình làm giống như sơ đồ trong easyHID phải ko ạ?À anh đã thử dùng libusb-win32 chưa?nếu anh dùng rồi thì có khó hơn khi dùng easyHID ko?
Mới vào nghề còn nhiều câu hỏi nghớ ngẩn mong anh bỏ qua!
Thân mến
Dực!

pham_dinh_hung83
16-10-2006, 09:55 PM
mình chưa dùng cái đó
nhưng thấy cái easy thì dễ vô cùng, tên của nó mà.
easyhid nhúng vào mỉcocodetudio dùng viết picbasic còn mplap chưa thử
chúc vui

falleaf
17-10-2006, 09:28 AM
Thử dùng windriver, download trên tailieuvietnam.

Chúc vui

pham_dinh_hung83
10-11-2006, 02:37 PM
tiện thể anh falleaf viết cái tut về windriver cho anh em học hỏi đi. em đọc qa thấy hay lắm, mà nó hỗ trợ cả PCIEXPRESS cơ chứ
có được ko anh falleaf