![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#13 | |
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Trích:
dùng VB để nhận từ USB, nhưng cụ thể bạn nhân cái gì? Vì giao thức USB chỉ là nền tảng, các thiết bị được xây dựng dựa trên cái nền ấy, mỗi thiết bị có một chức năng riêng dẫn tới cái gọi là giao thức thiết bị riêng. Thế mới sinh ra hàng đống class thiết bị + thêm cái vendor specified class, chắc mọi người hiểu các cụm từ này, tui ko dịch được. Nhận hay truyền dữ liệu đều phải qua các driver, cái driver của bạn làm trung gian = 1 số các hàm mà nó hỗ trợ. Thí dụ driver của thằng microchip sau khi cài vào nó coi cái USB full-speed demo board là 1 file, tiếp đó microchip nó còn tốt bụng cung cấp thêm file MPUSBAPI.dll để giao tiếp với cái file này. Vậy vấn đề của user chỉ đơn giản là chơi với cái dll này = vài API vô cùng đơn giản. Vậy tui xài bất kỳ ngôn ngữ nào có hỗ trợ gọi API đều có thể giao tiếp được với hardware của tui một cách đúng nghĩa. Ngoài ra còn có 1 cái driver open source + free đáng tiền khác là thằng USB lib. Cái lib này cũng cung cấp 1 dll để giao tiếp với driver của nó. Nhưng các API mà nó cung cấp thì gần với giao thức phần cứng, tức là đa dụng hơn, tui chưa thử nhưng tui nghĩ nó có thể giao tiếp với bất kỳ thiết bị USB nào. Vấn đề là phải nắm rõ cấu trúc của cái thiết bị cần giao tiếp + nắm giao thức. Tiện tay đang có hứng viết luôn. Làm sao PC biết được thiết bị USB nào ứng với cái driver nào? Khi bạn cắm thiết bị vào PC, 1 quá trình phức tạp diễn ra gọi là enumeration, mục đích là nhận dạng thiết bị. Sau quá trình này host có được vendor ID và product ID cùng với class ID của thiết bị. Hai giá trị VID và PID xác định duy nhất 1 dòng thiết bị vì vendor ID là duy nhất ứng với mỗi nhà sản xuất (muốn có phải đăng ký với USB.org + 1 ít money), product ID do nhà sản xuất gán. Nếu PC lục trong registry ko thấy cái VID + PID của thiết bị, nó sẽ load cái driver chung cho cái class của thiết bị, nếu class này được hỗ trợ, còn không nó bung cái popup hỏi driver đâu? Mỗi driver sẽ được đính kèm 1 file .inf. Bên trong file này có 1 số thông tin về thiết bị, nhưng quan trọng nhất vẫn là thằng VID + PID. Nếu bạn sửa 2 cái này đúng với cái VID + PID của hardware, windows sẽ OK ngay lập tức, nhưng nó có chạy hay ko thì không biết. |
|
![]() |
![]() |
|
|