¡¡ÊÖ»ú°æ | µÇ½ | ×¢²á | ÁôÑÔ | ÉèÊ×Ò³ | ¼ÓÊÕ²Ø
µ±Ç°Î»Öãº ÍøÕ¾Ê×Ò³ > ÒôÏìÉ豸¼¼Êõ > ÎÄÕ µ±Ç°Î»Ö㺠ÒôÏìÉ豸¼¼Êõ > ÎÄÕÂ

´®¿ÚͨÐÅʾÀý

ʱ¼ä£º2009-09-21    µã»÷£º ´Î    À´Ô´£º±¾Õ¾Ô­´´    ×÷ÕߣºØýÃû - С + ´ó

Ô´ÂëÏÂÔØµØÖ·£ºhttp://blog.csdn.net/yefanqiu ¡¾Ò¶·«Ô´Âë¡¿[009]´®¿ÚͨÐÅʾÀý

'*************************************************************************
'**                   Ò¶·«Ô´Âë     CSDN£ºyefanqiu
'**-----------------------------------------------------------------------
'**Ò¶·«Ô´Â룺http://blog.csdn.net/yefanqiu  -->[Ò¶·«Ô´Âë]
'**          XP´°Ìå½çÃæ
'**          ´®¿ÚͨÐÅʾÀý
'**          ÈÎÒâ͸Ã÷´°Ìå
'**          ...
'**Ò¶·«Èí¼þ£ºhttp://blog.csdn.net/yefanqiu  -->[Ò¶·«Èí¼þ]
'**          API ä¯ÀÀÆ÷
'**          VBÔ´ÂëÖ®ÓÑ
'**
'**¸ü¶àÈí¼þ£¬¸ü¶àÔ´Âë Çë¹Ø×¢¡¾Ò¶·«Blog¡¿
'**Ò¶·«Blog£ºhttp://blog.csdn.net/yefanqiu
'*************************************************************************
'*************************************************************************
'**Ä£ ¿é Ãû£ºfrmMain
'**˵    Ã÷£ºYFHome °æÈ¨ËùÓÐ2004 - 2005(C)
'**´´ ½¨ ÈË£ºÒ¶·«
'**ÈÕ    ÆÚ£º2004-09-19
'**ÐÞ ¸Ä ÈË£º
'**ÈÕ    ÆÚ£º
'**Ãè    Êö£º´®¿ÚͨÐÅʾÀý£¨CSDN ¿ªÔ´£©
'**        £º-------------------------------------------------------
'**        £ºÊ¾Àý˵Ã÷
'**        £ºÿ
'**        £º¸ÃʾÀý³ÌÐòÄ£ÄâPC»úÓëÒ»ÖÕ¶Ë£¨ÏÂλ»ú£©´®¿ÚͨÐÅ£¬PC»úÏÈÏòÏÂλ»ú·¢ËÍÎå¸ö×Ö½Ú£¬ÏÂλ»ú
'**        £ºÊÕµ½Êý¾ÝºóÒ²·µ»ØËÍÎå¸ö×Ö½ÚµÄÈ·ÈÏÃüÁî
'**        £ºÿ
'**        £º         ×ÖÍ·  Õ¾ºÅ  ¸±±¾  ÃüÁî  ¸±±¾ÿ
'**        £ºÖ¡ ½á ¹¹£ºAC    01    01    0A    0A           Õý¸±±¾Ð£Ñ鷽ʽ
'**        £º
'**        £º·µ »Ø Ö¡£ºAC    01    01    AA    AA           ÏìÓ¦ÃüÁ±íʾÖն˽ÓÊÕµ½Êý¾Ý
'**        £º-------------------------------------------------------
'**°æ    ±¾£ºV1.0.0
'*************************************************************************
Option Explicit
Private Declare Function GetCurrentTime Lib "kernel32" Alias "GetTickCount" () As Long

'*************************************************************************
'**º¯ Êý Ãû£ºcmdSend_Click
'**Êä    È룺ÎÞ
'**Êä    ³ö£ºÎÞ
'**¹¦ÄÜÃèÊö£º·¢ËÍÃüÁî
'**È«¾Ö±äÁ¿£º
'**µ÷ÓÃÄ£¿é£º
'**×÷    ÕߣºÒ¶·«
'**ÈÕ    ÆÚ£º2004-09-19
'**ÐÞ ¸Ä ÈË£º
'**ÈÕ    ÆÚ£º
'**°æ    ±¾£ºV1.0.0
'*************************************************************************
Private Sub cmdSend_Click()
  Dim bytData(10) As Byte
  bytData(0) = &HA                           'Êý¾Ý
  txtMsg.Text = SendData(1, bytData, 1)      '·¢ËÍÃüÁî
End Sub

'*************************************************************************
'**º¯ Êý Ãû£ºForm_Load
'**Êä    È룺ÎÞ
'**Êä    ³ö£ºÎÞ
'**¹¦ÄÜÃèÊö£º´®¿Ú³õʼ»¯
'**È«¾Ö±äÁ¿£º
'**µ÷ÓÃÄ£¿é£º
'**×÷    ÕߣºÒ¶·«
'**ÈÕ    ÆÚ£º2004-09-19
'**ÐÞ ¸Ä ÈË£º
'**ÈÕ    ÆÚ£º
'**°æ    ±¾£ºV1.0.0
'*************************************************************************
Private Sub Form_Load()
   OpenPort 1            '´ò¿ª´®¿Ú
End Sub

'*************************************************************************
'**º¯ Êý Ãû£ºOpenPort
'**Êä    È룺PortNo(Integer)                       - ´®¿ÚºÅ 1£¬2£¬3...
'**        £ºOptional InBufferSize(Integer = 1024) - ½ÓÊÕ»º³åÇø  Ä¬ÈÏΪ1024¸ö×Ö½Ú
'**        £ºOptional OutBufferSize(Integer = 512) - ·¢ËÍ»º³åÇø  Ä¬ÈÏΪ512¸ö×Ö½Ú
'**Êä    ³ö£º0 ´ò¿ª´®¿Ú³É¹¦ 1 ´ò¿ª´®¿Úʧ°Ü
'**¹¦ÄÜÃèÊö£º´ò¿ª´®¿Ú
'**È«¾Ö±äÁ¿£º
'**µ÷ÓÃÄ£¿é£º
'**×÷    ÕߣºÒ¶·«
'**ÈÕ    ÆÚ£º2003Äê12ÔÂ17ÈÕ
'**ÐÞ ¸Ä ÈË£º
'**ÈÕ    ÆÚ£º
'**°æ    ±¾£ºV1.0
'*************************************************************************
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
'*************************************************************************
'**º¯ Êý Ãû£ºClosePort
'**Êä    È룺ÎÞ
'**Êä    ³ö£ºÎÞ
'**¹¦ÄÜÃèÊö£º¹Ø±Õ´®¿Ú
'**È«¾Ö±äÁ¿£º
'**µ÷ÓÃÄ£¿é£º
'**×÷    ÕߣºÒ¶·«
'**ÈÕ    ÆÚ£º2003Äê12ÔÂ15ÈÕ
'**ÐÞ ¸Ä ÈË£º
'**ÈÕ    ÆÚ£º
'**°æ    ±¾£ºV1.0
'*************************************************************************
Public Sub ClosePort()
   On Error GoTo ErrExit
     MSComm1.PortOpen = False                      '¹Ø±Õ¶Ë¿Ú
   Exit Sub
ErrExit:
   
End Sub

'*************************************************************************
'**º¯ Êý Ãû£ºSendData
'**Êä    È룺bytAddr(Byte)   - É豸µØÖ·(0¡«255)
'**        £ºbytData()(byte) - Êý¾ÝÊý×é
'**        £ºbytNum(byte)    - Êý¾Ý¸öÊý(1¡«256/Êý¾ÝÀàÐ͵ij¤¶È)
'**Êä    ³ö£º(Long) - 0 ³É¹¦ 1 £­³¬Ê±  2 £­ ½ÓÊÕµÄÊý¾ÝÓÐÎó  3 - ÆäËüδ֪´íÎó
'**¹¦ÄÜÃèÊö£º·¢ËÍÊý¾Ý
'**È«¾Ö±äÁ¿£º
'**µ÷ÓÃÄ£¿é£º
'**×÷    ÕߣºÒ¶·«
'**ÈÕ    ÆÚ£º2004Äê05ÔÂ19ÈÕ
'**ÐÞ ¸Ä ÈË£º
'**ÈÕ    ÆÚ£º
'**°æ    ±¾£ºV1.0
'*************************************************************************
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  '·¢ËÍÊý¾Ý»º³åÇø

    bytSendArray(0) = &HAC                         'ͬ²½×ÖÍ·
    bytSendArray(1) = bytAddr                      'ÏÂλ»úµØÖ·
    bytSendArray(2) = bytAddr                      '¸±±¾

    'Êý¾Ý
    For i = 0 To bytNum * 2 - 1 Step 2
        bytSendArray(i + 3) = bytData(i / 2)
        bytSendArray(i + 4) = bytData(i / 2)
    Next

    '=====================================================================================
    'ÐÅÏ¢·¢ËÍ
    '=====================================================================================
    MSComm1.InBufferCount = 0                      'Çå¿Õ½ÓÊÕ»º³åÇø
    MSComm1.Output = bytSendArray                  '·¢ËÍÊý¾Ý

    Do
        DoEvents
    Loop Until MSComm1.OutBufferCount = 0          'µÈ´ý£¬Ö±µ½Êý¾Ý·¢ËÍÍê±Ï

    '=====================================================================================
    'ÐÅÏ¢½ÓÊÕ
    '=====================================================================================

    'É趨Ҫ½ÓÊÕµÄÊý¾Ý³¤¶È
    intGetDataLen = 5

    '³¬Ê±Ê±¼ä¼ÆËã:×Ö½ÚÊý¡Áÿ¸ö×ֽڵĴ«Êäʱ¼ä¡Á10             9600Ϊ²¨ÌØÂÊ Çë¸ù¾Ýʵ¼ÊÉ趨
    sngTimeSpace = intGetDataLen * (11000# / 9600#) * 10#

    sngTime = GetCurrentTime()                          '

    Do While True                                  'Êý¾Ý½ÓÊÕ

        DoEvents
        If MSComm1.InBufferCount >= intGetDataLen Then Exit Do

        '³¬Ê±´¦Àí
        If Abs(GetCurrentTime() - sngTime) > sngTimeSpace Then    '³¬Ê±
            SendData = 1
            Exit Function
        End If

    Loop

    VarReceiveData = MSComm1.Input
    bytReceiveArray = VarReceiveData

    '·µ»ØÖ¡Ð£Ñé
    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

'*************************************************************************
'**º¯ Êý Ãû£ºForm_Unload
'**Êä    È룺Cancel(Integer) -
'**Êä    ³ö£ºÎÞ
'**¹¦ÄÜÃèÊö£º½áÊø´¦Àí
'**È«¾Ö±äÁ¿£º
'**µ÷ÓÃÄ£¿é£º
'**×÷    ÕߣºÒ¶·«
'**ÈÕ    ÆÚ£º2004-09-19
'**ÐÞ ¸Ä ÈË£º
'**ÈÕ    ÆÚ£º
'**°æ    ±¾£ºV1.0.0
'*************************************************************************
Private Sub Form_Unload(Cancel As Integer)
   ClosePort  '¹Ø±Õ´®¿Ú
End Sub

ÉÏһƪ£ºMSComm¿Ø¼þ½øÐд®¿Ú±à³ÌµÄ»ù±¾²½Öè

ÏÂһƪ£ºÎåÁùµç×ÓÍø

±¸°¸ICP±àºÅ  |   QQ£º285250603  |  µØÖ·£ºÕ¿½­ÊÐ  |  µç»°£º15322199012  |  
Copyright © 2026 ÌìÈËÎÄÕ¹ÜÀíϵͳ °æÈ¨ËùÓУ¬ÊÚȨwww.yajiupc.topʹÓà Powered by 55TR.COM