这里是原文
数值分析考得如此简单,以至于感觉白复习了。
晚上,因为一些原因我很希望串口的数据能及时dump到硬盘上,可恶的是手头的串口调试工具都不怎么顺手,我气愤了,所以决定写一个题为《不就是个串口嘛!》的程序。很多功能还没有来得及加上,以后再完善,先用起来再说。
网上的一些vb6高手似乎很懒,实现了控制台、读取、写入、颜色等等功能,唯独没有加上这个关键的kbhit()函数。那怎么能行呢!所以这篇文章特别dump了c语言的库函数:Public Function kbHit() As Boolean
' Dim m_StdInput As Long
' m_StdInput = CreateFile("CONIN$", _
' GENERIC_READ Or GENERIC_WRITE, _
' FILE_SHARE_READ Or FILE_SHARE_WRITE, _
' 0, _
' OPEN_EXISTING, _
' 0, _
' 0)
' 或者,m_StdInput = GetStdHandle(STD_INPUT_HANDLE)
Dim nRet As Long
Dim CharsRead As Long
Dim nEvents As Long
Dim Events() As INPUT_KEY_EVENT_RECORD
nRet = GetNumberOfConsoleInputEvents(m_StdInput, nEvents)
If nRet = 0 Or nEvents = 0 Then
kbHit = False
Exit Function
End If
ReDim Events(0 To nEvents - 1)
nRet = PeekConsoleInput(m_StdInput, Events(0), nEvents, CharsRead)
If nRet And CharsRead <> 0 And CharsRead <= nEvents Then
Dim i As Long
For i = 0 To nEvents - 1
If Events(i).EventType = KEY_EVENT And _
Events(i).bKeyDown Then
' [tc]Caution: Events(i).AsciiChar is ignored
' [tc]Caution: _getextendedkeycode is ignored
kbHit = True
Exit Function
End If
Next
End If
kbHit = False
End Function
相关定义我就不贴了,网上满大街都是。这个程序中间我注有两个Caution,如果检测到的按键并不是键盘上的按键,理论上kbhit应该返回False,但是这段代码不是这样。所以这个函数其实是不完美的,为什么我不去实现_getextendedkeycode呢?因为我比较懒……

没有评论:
发表评论