Thông báo

Collapse
No announcement yet.

Code "đếm sự kiện" qua LPT

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Code "đếm sự kiện" qua LPT

    Hiện tại mình đang lập trình giao tiếp máy tính qua cổng LPT, nhưng có 1 số vấn đề còn khó hiểu như sau:

    Mình lập trình 2 phím nhấn, tạm gọi là phím 1 và phím 2 để đếm sự kiện từ bên ngoài phần cứng như sau:

    Code:
    Do
                DoEvents
                bien = Inp(&H379)
                biendem = (bien And 32) / 32
                biendem_2 = (bien And 16) / 16
    
                If biendem = 1 Then
                    Do
                        DoEvents
                        bien = Inp(&H379)
                        biendem = (bien And 32) / 32
                    Loop Until biendem = 0
                        soxehoi = soxehoi + 1
                        Label9.Caption = CStr(soxehoi)
                       
                ElseIf biendem_2 = 1 Then
                    Do
                        DoEvents
                        bien = Inp(&H379)
                        biendem_2 = (bien And 16) / 16
                    Loop Until biendem_2 = 0
                        soxetai = soxetai + 1
                        Label10.Caption = CStr(soxetai)
                      
                End If
        Loop
    Với chương trình trên khi mình nhấn thử thì nó cho kết quả như sau:
    - nhấn phím 1 trước thì nó đếm lên 1 rùi câm luôn cho dù nhấn đến mỏi tay vẫn thế.
    - nhấn tiếp phím 2 thì phím 2 lên 1 đơn vị rùi cũng câm luôn
    - nếu nhấn theo thứ tự phím 1 trước, sau đó phím 2, sau đó lặp lại n lần thì nó mới đếm lên n đơn vị cho từng phím.

    Nếu mình bỏ sự kiện phím 2, để thử nghiệm nhấn phím 1 mà thôi, code còn lại như sau:

    Code:
    Do
                DoEvents
                bien = Inp(&H379)
                biendem = (bien And 32) / 32
                biendem_2 = (bien And 16) / 16
    
                If biendem = 1 Then
                    Do
                        DoEvents
                        bien = Inp(&H379)
                        biendem = (bien And 32) / 32
                    Loop Until biendem = 0
                        soxehoi = soxehoi + 1
                        Label9.Caption = CStr(soxehoi)
               end if
    loop
    Kết quả là đếm ok, nhấn đến n lần thì kết quả là số n. Mình rút ra 1 vấn đề, đoạn code đầu tiên kia nó đếm theo tuần tự, nhưng yêu cầu bài này phải đếm 1 cách độc lập, nhấn phím nào thì đếm phím đó.

    Vậy, các bác có cao kiến gì giải quyết vấn đề này ko? Vấn đề đặt ra là nhấn 2 phím bất kỳ, ko phân biệt thứ tự, số lần...thì 2 kết quả độc lập với nhau, ko bị ràng buộc nhau.

    Với mình, bài toán này khó quá, vì trình độ VB quá kém, nên mình post lên đây, chốt yếu để tham khảo cao kiến của các anh chị.

    Thân mến.






  • #2
    K có bác nào có ý kiến hết ư

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X