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

                                • tuyennhan
                                  Trả lời cho Tiếng Anh cho người Việt
                                  bởi tuyennhan
                                  Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
                                  Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
                                  hôm nay, 07:44
                                • vi van pham
                                  Trả lời cho Tiếng Anh cho người Việt
                                  bởi vi van pham
                                  Cám ơn những lời chúc tốt đẹp của em.

                                  Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                                  Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                                  hôm nay, 02:00
                                • nhathung1101
                                  Trả lời cho Tiếng Anh cho người Việt
                                  bởi nhathung1101
                                  Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                                  Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                                  Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                                  Hôm qua, 22:18
                                • dinhthuong80
                                  Trả lời cho Tiếng Anh cho người Việt
                                  bởi dinhthuong80
                                  Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                                  Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                                  Hôm qua, 14:51
                                • dinhthuong80
                                  Trả lời cho Tiếng Anh cho người Việt
                                  bởi dinhthuong80
                                  Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                                  Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                                  Hôm qua, 14:39
                                • dinhthuong80
                                  Trả lời cho Tiếng Anh cho người Việt
                                  bởi dinhthuong80
                                  Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                                  Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                                  Hôm qua, 14:28
                                • bqviet
                                  Trả lời cho Tiếng Anh cho người Việt
                                  bởi bqviet
                                  Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                                  21-02-2025, 20:26
                                • mèomướp
                                  Trả lời cho Tiếng Anh cho người Việt
                                  bởi mèomướp
                                  Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                                  21-02-2025, 12:32
                                • vi van pham
                                  Trả lời cho Tiếng Anh cho người Việt
                                  bởi vi van pham
                                  Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                                  Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                                  20-02-2025, 21:31
                                • bqviet
                                  Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                                  bởi bqviet
                                  Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                                  20-02-2025, 17:22
                                Đang tải...
                                X