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:
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:
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.
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
- 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
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.
Comment