'*************************************************************************
Option Explicit
Private Declare Function GetCurrentTime Lib "kernel32" Alias "GetTickCount" () As Long
'*************************************************************************
Private Sub cmdSend_Click()
Dim bytData(10) As Byte
bytData(0) = &HA 'Êý¾Ý
txtMsg.Text = SendData(1, bytData, 1) '·¢ËÍÃüÁî
End Sub
Private Sub Form_Load()
OpenPort 1 '´ò¿ª´®¿Ú
End Sub
'*************************************************************************
Public Function OpenPort(PortNo As Integer, Optional InBufferSize As Integer = 1024, Optional OutBufferSize As Integer = 512) As Long
On Error GoTo ErrExit
MSComm1.CommPort = PortNo '²ÉÓÃCOM¶Ë¿Ú
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary '²ÉÓöþ½øÖÆ´«Êä
MSComm1.NullDiscard = False 'NULL×Ö·û´Ó¶Ë¿Ú´«Ë͵½½ÓÊÜ»º³åÇø
MSComm1.DTREnable = False 'DTRÏßÎÞЧ
MSComm1.EOFEnable = False '²»Ñ°ÕÒEOF·û
MSComm1.RTSEnable = False 'RTSÏßÎÞЧ
MSComm1.InBufferCount = 0 'Çå¿Õ½ÓÊÜ»º³åÇø
MSComm1.OutBufferCount = 0 'Çå¿Õ´«Ê仺³åÇø
MSComm1.SThreshold = 1 'Èç¹û´«Ê仺³åÇøÍêÈ«¿Õʱ²úÉúMSCommʼþ
MSComm1.RThreshold = 0 '²»²úÉúMSCommʼþ
MSComm1.InBufferSize = InBufferSize '½ÓÊÕ»º³åÇø ĬÈÏΪ1024¸ö×Ö½Ú
MSComm1.OutBufferSize = OutBufferSize '·¢ËÍ»º³åÇø ĬÈÏΪ512¸ö×Ö½Ú
MSComm1.PortOpen = True '´ò¿ª¶Ë¿Ú
OpenPort = 0
Exit Function
ErrExit:
OpenPort = 1
End Function
'*************************************************************************
Public Sub ClosePort()
On Error GoTo ErrExit
MSComm1.PortOpen = False '¹Ø±Õ¶Ë¿Ú
Exit Sub
ErrExit:
End Sub
'*************************************************************************
Public Function SendData(bytAddr As Byte, bytData() As Byte, Optional bytNum As Byte = 1) As Long
On Error GoTo ErrExit
Dim bytSendArray() As Byte '·¢ËÍÊý¾Ý»º³åÇø
Dim intGetDataLen As Integer 'Òª½ÓÊÕµÄÊý¾Ý³¤¶È
Dim sngTimeSpace As Single 'ÑÓʱʱ¼ä
Dim sngTime As Single
Dim bytReceiveArray() As Byte '½ÓÊÕµÄÊý¾Ý
Dim VarReceiveData As Variant '½ÓÊյıäÌåÊý¾Ý
Dim i As Long
ReDim bytSendArray(0 To bytNum * 2 + 2) As Byte '·¢ËÍÊý¾Ý»º³åÇø
'·µ»ØÖ¡Ð£Ñé
SendData = 2 'Ïȸ³Öµ½ÓÊÕµÄÊý¾Ý´íÎó
If bytReceiveArray(0) = &HAC Then '×ÖÍ·
If bytReceiveArray(1) = bytReceiveArray(2) And bytReceiveArray(3) = bytReceiveArray(4) Then
'Õ¾ºÅ£¬ÃüÁîÅжÏ
If bytReceiveArray(1) = bytSendArray(1) And bytReceiveArray(3) = &HAA Then
SendData = 0 'ÃüÁîÕýÈ·
End If
End If
End If
Exit Function
ErrExit:
SendData = 3
End Function
'*************************************************************************
Private Sub Form_Unload(Cancel As Integer)
ClosePort '¹Ø±Õ´®¿Ú
End Sub