Thông báo

Collapse
No announcement yet.

Gửi dữ liệu ra cổng USB trong VB

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    Các bước làm việc với HID
    Thực chất việc này không hề đơn giản nhưng ta có thể thực hiện theo một mẫu chuẩn như sẽ đề cập sau đây :
    MọI thiết bị USB thực hiện những yêu cầu (request) gồm những thao tác như nhận tập descriptor chuẩn từ thiết bị và thiết lập những thông số thiết bị chuẩn . Việc đầu tiên là xác định lớp HID trong trường bInterfaceClass của USB interface descriptor . Giá trị phù hợp là 0x03 , giá trị này cho trình điều khiển USB biết trình điều khiển lớp nào ứng dụng cần phải phù hợp sau khi quá trình liệt kê hoàn thành .
    Trong quá trình liêt kê , thiết bị cũng cung cấp một HID class descriptor chứa thông tin phiên bản HID-specification và chiều dài của HID-report descriptor . HID descriptor bao gồm các HID usage , mỗI cái mô tả một trường trong một báo cáo vào hay ra (Tham khảo thêm HID usage table)
    Nếu êm dẹp sau đó ứng dụng phải mở thiết bị cho truyền thông , một quá trình khá phức tạp . Ở đây chỉ tóm gọn thành một hàm bOpenHidDevice() , cho một handle thiết bị ,một VID thiết bị , một PID thiết bị như là đối số của hàm . Nếu máy chủ tìm thấy thiết bị hàm trả về TRUE và Windows HID API gán một giá trị hợp lệ cho handle thiết bị . Nếu không hàm trả về FALSE .
    Quá trình “mở” thiết bị gồm 7 bước :
    *******HidD_GetHidGuid()
    SetupDiGetClassDevs()
    SetupDiGetClassDevs() --> FALSE (HID device not found)
    TRUE
    SetupDiGetDeviceInterfaceDetail()
    CreateFile()
    Desired VID and PID -->TRUE (HID device found)
    FALSE(tăng chỉ số và quay lại SetupDiGetClassDevs() thử tiếp)

    Comment


    • #17
      1.Thu được Windows GUID (globally unique ID) cho thiết bị HID thông qua gọi hàm HidD_GetHidGuid() .
      2.Lấy một mảng cấu trúc chứa thông tin về mọi thiết bị HID đã được gắn vào thông qua gọi hàm SetupDiGetClassDevs(). bước này sử dụng HID GUID đã có từ bước 1 để xác định danh sách sẽ chỉ chứa những thiết bị HID .
      3.Sủ dụng hàm SetupDiEnumDeviceInterfaces() để lấy thông tin về thiết bị trong danh sách . Chúng ta cần phải qua một số chỉ số trong bảng liệt kê thông tin về thiết bị cho tới khi tìm thấy một cái với VID và PID chính xác .Nếu hàm này trả về FALSE là khi hết danh sách mà không tìm thấy thiết bị mong muốn .
      4.Gọi hàm SetupDiGetDeviceInterfaceDetail() trả về dữ liệu chi tiết về thiết bị đã định chỉ số liệt kê ở bước 3 .
      5.Gọi hàm CreateFile() để mở thiết bị sử dụng hướng đạt được trong bước 4 . Nếu gọi hàm thành công sẽ trả về một handle hợp lệ , sau đó có thể kiểm tra VID và PID để xác định liệu đó có đúng là thiết bị yêu cầu không .
      6.So sánh VID và PID để xác định có đúng thiết bị không . Nếu đúng trả về handle thiết bị và điều kiện TRUE .
      7.Nếu sai đóng handle thiết bị và quay lai bước 3 để kiểm tra thiết bị tiếp theo trong danh sách liệt kê .
      Ứng dụng HID sau đó phải khai báo việc thiết bị đã được gắn kết hay chưa .Hàm bHidDeviceNotify() tóm gọn quá trình này . Hàm này dẫn đến Windows USB system gửi một thông báo WM_DEVICECHANGE tới ứng dụng mỗi khi một thiết bị USB HID được gắn vào hay tháo ra khỏi hệ thống . Hệ thống khai báo không đủ thông minh để chỉ ra sự thay đổi về VID và PID của thiết bị HID nên ứng dụng phải kiểm tra liệu rằng thiết bị vẫn gắn kết bằng một thông điệp khai báo nào đó .

      Comment


      • #18
        Xin lỗi các bạn đọc luồng này trước, tui có thắc mắc là các bạn gửi dữ liệu ra cổng USB làm gì nếu không phát triển thiết bị.
        Nếu bạn muốn gửi đến các thiết bị khác thì không thể có chuyện đó được đâu. Tui đã làm thiết bị bảo mật bằng USB nên cũng biết đôi chút.

        Hình như các bạn nhầm cái chỉ số VID,PID để phân biệt thiết bị thì phải. Bạn zoz đã nói ở trên. Ban đầu khi có USB cắm vào, host sẽ gán cho nó là Address 0,sau khi nhận được 8 bytes của thông tin mô tả thiết bị, nó sẽ reset thiết bị, Windows sẽ gắn địa chỉ cho thiết bị (địa chỉ này được Windows quản lý), địa chỉ này không thế biết được.Khi bạn giao tiếp với thiết bị nó sẽ căn cứ vào địa chỉ này chứ chẳng liên quan gì đến VID,PID. VID và PID này chỉ đóng vai trò trong quá trình Windows tìm kiếm trình điều khiển cho thiết bị thôi --> vì vậy bạn không thể gửi dữ liệu cho thiết bị của thằng khác sản xuất, ấy là chưa kể bạn không biết gì về thông tin mô tả thiết bị và nó định nghĩa các endpoint như thế nào.

        Comment


        • #19
          Bạn phamthaihoa nói đúng , ở đây VID và PID chỉ dùng để máy tính nhận ra đúng thiết bị của ta (nếu không việc gửi dữ liệu còn ý nghĩa gì nữa), trước đây tôi không đề cập đến khía cạnh thiết bị vì chúng ta chỉ thảo luận đơn thuần về mặt VB , chứ nếu HID descriptor không tương thích giữa máy tính và thiết bị thì cũng chẳng làm được gì . Vấn đề ở đây là hiểu rõ các chuẩn của HID và dĩ nhiên thiết bị phải hỗ trợ đầy đủ HID class.

          Comment


          • #20
            cac bac oi cho minh hoi khoang cach lon nhat neu truyen tu cong USB cua may tinh toi thiet bi la bao xa.

            Comment


            • #21
              5m, nếu có hub thì xa hơn(cao nhất là 30m, với 5 hub). Cái này là kiến thức cơ bản mà.
              Last edited by zoz; 23-01-2006, 16:55.

              Comment


              • #22
                HidD_FreePreparsedData: Giải phóng tài nguyên của HidD_PreparsedData.
                HidD_GetAttributes: Trả lại một VendorID, ProductID và Version number.
                HidD_GetHidGuid: Chứa một Guid cho lớp Hid.
                HidD_GetPreparsedData: Trả lại một Handle tới một bộ đệm chứa thông tin về Capabilities.
                HidP_GetCaps: Nhận lại một con trỏ tới cấu trúc mô tả bởi Capabilities của thiết bị.
                HidP_GetValueCaps: Nhận một Capabilities của tất cả các giá trị trong một report.
                Hà Nội của ta
                Thủ đô yêu dấu
                Một thời đạn bom, một thời hòa bình...:cafe:

                Comment


                • #23
                  Ê này các cao thủ đã có thành quả về USB chua gửi lên mạng cho anh em học cái !
                  I will never fall in love again !!

                  Comment


                  • #24
                    USB có thể truy cập bằng nhiều cách trong đó đơn giản nhất là kết nối qua HIM . Nhưng những IC dùng rất khó tìm vd ft232 , ft485

                    Comment


                    • #25
                      Tui cũng từng thử qua, IC dễ xài mà rẻ nhất là tháo từ cái kit USB của điện thoại samsung bạn mua cái made in china cho rẻ. Con này biến USB thành giao tiếp RS232 bình thường.

                      Chấm công, kiểm soát ra vào
                      Time Attendance, Access Control
                      Thẻ cảm ứng, proximity card

                      Comment


                      • #26
                        Mình xin gửi các bạn một số tài liệu liên quan đến USB. Mời các bạn download về và đọc, làm rồi cho anh em biết ý kiến nha.
                        Addison-Wesley.-.USB.System.Architecture.(USB.2.0)
                        http://luckytoki.com/haibac/download....(USB.2.0).rar

                        ATMEL_USB
                        http://luckytoki.com/haibac/download/USB/ATMEL_USB.zip

                        Developing.USB.PC.Peripherals.Using.the.Intel.8x93 0Ax.USB.Microcontroller
                        http://luckytoki.com/haibac/download...controller.rar

                        eBook.PDF.-.A.5-Minute.introduction.to.writing.USB.device.drivers
                        http://luckytoki.com/haibac/download...ce.drivers.rar

                        Programming.Guide.for.Linux.USB.device.drivers
                        http://luckytoki.com/haibac/download...ce.drivers.rar

                        USB.in.Industrial.Measurement.and.Control.Applicat ions
                        http://luckytoki.com/haibac/download...plications.rar

                        USB.Specification
                        http://luckytoki.com/haibac/download...cification.pdf

                        USB.System.Architecture
                        http://luckytoki.com/haibac/download...chitecture.rar

                        USB.to.IrDA
                        http://luckytoki.com/haibac/download...SB.to.IrDA.zip

                        Usb.To.Rs232.Application.Note.Atmel
                        http://luckytoki.com/haibac/download...Note.Atmel.zip

                        USB_Complete_3
                        http://luckytoki.com/haibac/download...Complete_3.rar

                        (USB Designed by example).
                        http://luckytoki.com/haibac/download/USB/0970284659.zip

                        Chúc mọi người thành công.
                        Technical sale at WT Microelectronics S'pore
                        Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                        Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                        Comment


                        • #27
                          mấy cái link của pác chả cái nào down đc cả
                          Mấy pác đã có thành quả gì rồi giới thiệu cho anh em với,tại em thấy các pác thảo luận lâu lắm rồi mà chưa có ra kết luận để chứng minh lý thuyết đưa ra cả
                          Dù sao cũng thanks
                          YM : virus_sasaka
                          ĐT : 0949760990
                          Địa chỉ : HCM City

                          Comment


                          • #28
                            hôm nay vô tình vào mạng, thấy phần này hấp dẫn quá, cho tui tham gia với. Về học cái đã
                            Biết mình không biết là 1 bước dài để đi đến sự hiểu biết

                            Comment


                            • #29
                              link die, info vẫn còn, mắt mờ vì phải tự tìm !

                              Comment


                              • #30
                                dùng esyhid đi các pác
                                |

                                Comment

                                Về tác giả

                                Collapse

                                zoz Tìm hiểu thêm về zoz

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X