亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vfd-con485.bas

?? modbusRTU
?? BAS
字號:
Attribute VB_Name = "Module1"
Option Explicit

Public DataVW(100) As Long
Public DataVD(100) As Single
Public DataVB(100) As Integer
Public ResultBit(0 To 20) As Integer

Public inSafeArray() As String
Public AddPLC As String
Public FlagRec As Boolean
Public FlagVW As Boolean
Public FlagVD As Boolean
Public FlagVB As Boolean

Public BitNumber As Integer

Public ReadNumberB As Integer
Public ReadNumberW As Integer
Public ReadNumberD As Integer

Public AddrReadB As String
Public AddrReadW As String
Public AddrReadD As String

Public Bit(0 To 7) As Integer


 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)


'CRC校驗碼生成
 Function CrcResult(ByVal Data As Long, ByVal Genpoly As Long, ByVal CrcData As Long) As Long
    Dim n As Integer
    Data = Data * 2
    For n = 8 To 1 Step -1
        Data = Fix(Data / 2)
        If ((Data Xor CrcData) And 1) Then
            CrcData = Fix(CrcData / 2) Xor Genpoly
        Else
            CrcData = Fix(CrcData / 2)
        End If
    Next n
    CrcResult = CrcData
End Function


Function Chr_4(str As String) As String
    Dim Lenstr As Integer
    Lenstr = Len(str)

    If Lenstr = 1 Then str = "000" + str
    If Lenstr = 2 Then str = "00" + str
    If Lenstr = 3 Then str = "0" + str
    Chr_4 = str
End Function

Function Chr_8(str As String) As String
    Dim Lenstr As Integer
    Lenstr = Len(str)

    If Lenstr = 1 Then str = "0000000" + str
    If Lenstr = 2 Then str = "000000" + str
    If Lenstr = 3 Then str = "00000" + str
    If Lenstr = 4 Then str = "0000" + str
    If Lenstr = 5 Then str = "000" + str
    If Lenstr = 6 Then str = "00" + str
    If Lenstr = 7 Then str = "0" + str
   
    Chr_8 = str
End Function
Function Chr_2(str As String) As String
    Dim Lenstr As Integer
    Lenstr = Len(str)

    If Lenstr = 1 Then str = "0" + str
    Chr_2 = str
End Function

Function HextoSng(strhex As String) As String
    Dim l As Long
    Dim f As Single
    Dim s As String
    
    'strhex = "4131999A"

    l = Val("&H" & strhex)
    CopyMemory f, l, 4
    f = f
    s = Format(f, "0.000")
    HextoSng = s
End Function

Function SngtoHex(SngData As Single) As String
  Dim lngNum     As Long
 
  'SngData = 25.5
  CopyMemory lngNum, SngData, 4
   SngtoHex = Chr_8(Hex(lngNum))
   SngtoHex = Mid(SngtoHex, 1, 4) + Mid(SngtoHex, 5, 4)
   

End Function
Public Function ProcessRecVW()
Dim strVW As String

    Dim i As Integer

        For i = 3 To FrmMain1.MSComm1.RThreshold - 3 Step 2
          strVW = inSafeArray(i) + inSafeArray(i + 1)
         DataVW((i - 3) / 2) = "&H" & strVW
         
        Next i
            
End Function
Public Function ProcessRecBit(BitNumber As Integer)
Dim strVB As String
 Dim i, j As Integer

     For i = 3 To FrmMain1.MSComm1.RThreshold - 3 Step 2
            strVB = inSafeArray(i)
          DataVB((i - 3) / 2) = "&H" & strVB
         
         For j = 7 To 0 Step -1
            If DataVB((i - 3) / 2) \ (2 ^ j) Then
                Bit(j) = 1
            Else
                Bit(j) = 0
            End If
            DataVB((i - 3) / 2) = DataVB((i - 3) / 2) - (2 ^ j) * Bit(j)
         Next j
             ResultBit((i - 3) / 2) = Bit(BitNumber)
    Next i
        
  
            
End Function
Public Function ProcessRecVD()
Dim strVD As String

    Dim i As Integer

        For i = 3 To FrmMain1.MSComm1.RThreshold - 3 Step 4
          strVD = inSafeArray(i) + inSafeArray(i + 1) + inSafeArray(i + 2) + inSafeArray(i + 3)
         DataVD((i - 3) / 4) = HextoSng(strVD)
         
        Next i
            
End Function

Public Function ReadVW(FlagRec As Boolean, AddrReadW As String, ReadNumberW As Integer)
Dim i As Integer

If FlagRec = 0 Then
         FrmMain1.MSComm1.RThreshold = 5 + ReadNumberW * 2
         Call FrameFun(AddPLC, 3, AddrReadW / 2, ReadNumberW)
         FlagVW = True

Else
         Call ProcessRecVW
         FlagVW = False
        For i = 0 To (FrmMain1.MSComm1.RThreshold - 5) / 2 - 1
                FrmMain1.TextDataRW.Text = FrmMain1.TextDataRW.Text & " " & DataVW(i) & Chr(13)
        Next i
       
End If

End Function
Public Function ReadVD(FlagRec As Boolean, AddrReadD As String, ReadNumberD As Integer)
Dim i As Integer

If FlagRec = 0 Then
        FrmMain1.MSComm1.RThreshold = 5 + ReadNumberD * 4
        Call FrameFun(AddPLC, 3, AddrReadD / 2, ReadNumberD * 2)
        FlagVD = True
Else
        Call ProcessRecVD
        FlagVD = False
        For i = 0 To (FrmMain1.MSComm1.RThreshold - 5) / 4 - 1
                FrmMain1.TextDataRD.Text = FrmMain1.TextDataRD.Text & " " & DataVD(i) & Chr(13)
        Next i
       
End If
End Function
Public Function WriteVW(AddrWrite As String, DataWrite As Integer)
       Call FrameFun(AddPLC, 6, AddrWrite / 2, DataWrite)
      FrmMain1.MSComm1.RThreshold = 8
End Function
Public Function WriteVD(AddrWrite As String, DataWrite As Single)
       Call FrameFunTwo(AddPLC, 10, AddrWrite / 2, 2, 4, DataWrite)
       FrmMain1.MSComm1.RThreshold = 8
End Function
Public Function GetBit(FlagRec As Boolean, AddrReadB As String, BitNumber As Integer, ReadNumberB As Integer)
Dim i As Integer

If FlagRec = 0 Then
         FrmMain1.MSComm1.RThreshold = 5 + ReadNumberB * 2
         Call FrameFun(AddPLC, 3, AddrReadB / 2, ReadNumberB)
         FlagVB = True

Else
        Call ProcessRecBit(BitNumber)
        FlagVB = False
          For i = 0 To (FrmMain1.MSComm1.RThreshold - 5) / 2 - 1
                FrmMain1.TextDataRB.Text = FrmMain1.TextDataRB.Text & " " & ResultBit(i) & Chr(13)
          Next i
        
End If

End Function
Public Function SetBitTrue(AddrWrite As String, BitNumber As Integer)
      Call FrameFun(AddPLC, 6, AddrWrite / 2, -1)
      FrmMain1.MSComm1.RThreshold = 8
End Function
Public Function SetBitFalse(AddrWrite As String, BitNumber As Integer)
      Call FrameFun(AddPLC, 6, AddrWrite / 2, 0)
      FrmMain1.MSComm1.RThreshold = 8
End Function

Public Function FrameFun(Addr As String, Cmd As String, Register As String, Data As Integer)
    Dim ComStr          As String
    Dim Temp(6)         As String
    Dim BL              As Byte                       '數據長度
    Dim n               As Byte                       '循環量
    Dim CRC             As Long                       'CRC寄存器
    Dim fx()            As Byte

    Dim hexchrlen%
    Dim Hexchr          As String
    Dim hexcyc%
    Dim hexmid          As Byte
    Dim hexmiddle       As String
    Dim hexchrgroup()   As Byte
    Dim i               As Integer

    '--------------------------------------------------------
    ' 獲得數據串

    FrmMain1.MSComm1.OutBufferCount = 0
    Temp(0) = Chr_2(Addr)
    Temp(1) = Chr_2(Cmd)
    Temp(2) = Chr_4(Hex(Register))
    Temp(3) = Chr_4(Hex(Data))

    ComStr = Temp(0) + Temp(1) + Temp(2) + Temp(3)

    '---CRC -----------------------------------------------------
    BL = Len(ComStr) / 2
    ReDim fx(BL + 1)                                  '按命令長度重新定義數組
    CRC = &HFFFF&                                     'CRC初值
    For n = 0 To BL - 1
        fx(n) = CLng("&H" & Mid(ComStr, 2 * n + 1, 2)) '分解命令為字節
        CRC = CrcResult(fx(n), &HA001&, CRC)          'CRC校驗碼生成調用
    Next

    fx(BL) = CByte(CRC And &HFF&)                     '得到的校驗低位
    fx(BL + 1) = CByte(Fix(CRC / 256) And &HFF&)      '得到的校驗高位
    Temp(4) = Chr_2(Hex(fx(BL)))
    Temp(5) = Chr_2(Hex(fx(BL + 1)))
    ComStr = Trim(ComStr + Temp(4) + Temp(5))

    '檢查數據是否正確
    hexchrlen = Len(ComStr)
    For hexcyc = 1 To hexchrlen                       '檢查Text1文本框內數值是否合適
        Hexchr = Mid(ComStr, hexcyc, 1)
        If InStr("0123456789ABCDEFabcdef", Hexchr) = 0 Then
            MsgBox "無效的數值,請重新輸入", , "錯誤信息"
            Exit Function
        End If
    Next

    '分解數據 為 二進制發送 模式

   ' ReDim hexchrgroup(1 To hexchrlen \ 2) As Byte
    ReDim hexchrgroup(hexchrlen \ 2 - 1) ' As Byte
    For hexcyc = 1 To hexchrlen Step 2                '將文本框內數值分成兩個、兩個
       
         Hexchr = Mid(ComStr, hexcyc, 2)
    '    Hexchr = "FF"
        hexmid = Val("&H" & CStr(Hexchr))
        hexchrgroup(i) = hexmid
       i = i + 1
    Next

        FrmMain1.MSComm1.Output = hexchrgroup ''''ComStr '
        Sleep 100



End Function
Public Function FrameFunTwo(Addr As String, Cmd As String, Register As String, Number As String, ByteNum As String, Data As Single)
    Dim ComStr          As String
    Dim Temp(7)         As String
    Dim BL              As Byte                       '數據長度
    Dim n               As Byte                       '循環量
    Dim CRC             As Long                       'CRC寄存器
    Dim fx()            As Byte

    Dim hexchrlen%
    Dim Hexchr          As String
    Dim hexcyc%
    Dim hexmid          As Byte
    Dim hexmiddle       As String
    Dim hexchrgroup()   As Byte
    Dim i               As Integer

    '--------------------------------------------------------
    ' 獲得數據串

    FrmMain1.MSComm1.OutBufferCount = 0
    Temp(0) = Chr_2(Addr)
    Temp(1) = Chr_2(Cmd)
    Temp(2) = Chr_4(Hex(Register))
    Temp(3) = Chr_4(Hex(Number))
    Temp(4) = Chr_2(Hex(ByteNum))
    Temp(5) = SngtoHex(Data)

    ComStr = Temp(0) + Temp(1) + Temp(2) + Temp(3) + Temp(4) + Temp(5)

    '---CRC -----------------------------------------------------
    BL = Len(ComStr) / 2
    ReDim fx(BL + 1)                                  '按命令長度重新定義數組
    CRC = &HFFFF&                                     'CRC初值
    For n = 0 To BL - 1
        fx(n) = CLng("&H" & Mid(ComStr, 2 * n + 1, 2)) '分解命令為字節
        CRC = CrcResult(fx(n), &HA001&, CRC)          'CRC校驗碼生成調用
    Next

    fx(BL) = CByte(CRC And &HFF&)                     '得到的校驗低位
    fx(BL + 1) = CByte(Fix(CRC / 256) And &HFF&)      '得到的校驗高位
    Temp(6) = Chr_2(Hex(fx(BL)))
    Temp(7) = Chr_2(Hex(fx(BL + 1)))
    ComStr = Trim(ComStr + Temp(6) + Temp(7))

    '檢查數據是否正確
    hexchrlen = Len(ComStr)
    For hexcyc = 1 To hexchrlen                       '檢查Text1文本框內數值是否合適
        Hexchr = Mid(ComStr, hexcyc, 1)
        If InStr("0123456789ABCDEFabcdef", Hexchr) = 0 Then
            MsgBox "無效的數值,請重新輸入", , "錯誤信息"
            Exit Function
        End If
    Next

    '分解數據 為 二進制發送 模式
   
   ' ReDim hexchrgroup(1 To hexchrlen \ 2) As Byte
    ReDim hexchrgroup(hexchrlen \ 2 - 1) 'As Byte
    For hexcyc = 1 To hexchrlen Step 2                '將文本框內數值分成兩個、兩個
       
         Hexchr = Mid(ComStr, hexcyc, 2)
    '    Hexchr = "FF"
        hexmid = Val("&H" & CStr(Hexchr))
        hexchrgroup(i) = hexmid
     
        i = i + 1

    Next
     
        FrmMain1.MSComm1.Output = hexchrgroup ''''ComStr '
        Sleep 100
   
End Function

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品二十页| 日韩久久一区二区| 国产精品久久久久久久浪潮网站| 亚洲一区二区五区| 国产毛片精品一区| 在线播放中文字幕一区| 国产精品高潮久久久久无| 裸体一区二区三区| 在线看不卡av| 日韩一区在线免费观看| 久久国产麻豆精品| 91精品国产免费| 夜夜嗨av一区二区三区中文字幕| 国产大片一区二区| 精品国产乱码久久| 日韩电影在线一区| 欧美日韩成人在线一区| 一区二区在线观看视频在线观看| 高清shemale亚洲人妖| 精品国产免费人成电影在线观看四季 | 国产成人免费在线视频| 91精品国产aⅴ一区二区| 一区二区三区四区中文字幕| 成人中文字幕在线| 中文幕一区二区三区久久蜜桃| 精品一区二区日韩| 精品美女在线观看| 国模一区二区三区白浆| xnxx国产精品| 国产精品一卡二卡在线观看| 国产色产综合色产在线视频| 国产麻豆精品在线观看| 精品国产亚洲在线| 精品一区二区三区免费播放 | 在线观看免费视频综合| 亚洲欧美日韩国产手机在线| 99国内精品久久| 亚洲精品免费电影| 色婷婷精品大视频在线蜜桃视频| 玉米视频成人免费看| 精品视频在线免费看| 免费观看一级欧美片| 日韩免费观看2025年上映的电影 | 日韩欧美一区中文| 美女视频黄频大全不卡视频在线播放| 91精品国产综合久久福利软件| 蜜桃久久久久久| 国产午夜精品在线观看| hitomi一区二区三区精品| 一区二区三区日韩精品视频| 欧美高清精品3d| 久久99精品视频| 国产精品免费人成网站| 欧美日韩中文精品| 国产一区二区三区国产| 国产精品色呦呦| 欧美日韩在线播| 久久国产精品色| 国产精品网站在线观看| 欧美三级电影网站| 国产精品白丝jk黑袜喷水| 一区二区高清免费观看影视大全| 7777精品伊人久久久大香线蕉经典版下载 | 日韩国产精品久久| 国产午夜久久久久| 欧美在线综合视频| 精品亚洲免费视频| 亚洲精品你懂的| 久久久91精品国产一区二区三区| 在线精品亚洲一区二区不卡| 加勒比av一区二区| 亚洲综合成人网| 国产欧美一区二区精品久导航| 色噜噜狠狠成人中文综合| 久久国产乱子精品免费女| 亚洲欧美激情在线| 国产婷婷一区二区| 欧美一区二区三区四区五区| caoporm超碰国产精品| 免费观看在线综合| 亚洲自拍偷拍av| 国产精品久久午夜夜伦鲁鲁| 日韩欧美一区二区视频| 91成人网在线| 成人激情av网| 黄色日韩三级电影| 午夜电影网一区| 亚洲欧美区自拍先锋| 国产网站一区二区| 26uuuu精品一区二区| 欧美一区二区三区成人| 色8久久精品久久久久久蜜| 国产乱淫av一区二区三区| 天天操天天色综合| 亚洲高清免费观看| 一区二区三区免费网站| 国产精品欧美综合在线| 2014亚洲片线观看视频免费| 欧美精品色一区二区三区| 91国偷自产一区二区三区观看| 国产成人午夜电影网| 国产乱码精品一区二区三区忘忧草 | 国产91精品在线观看| 狠狠狠色丁香婷婷综合激情| 三级不卡在线观看| 天天做天天摸天天爽国产一区| 亚洲一区在线电影| 亚洲成人动漫在线免费观看| 一区二区三区日韩精品| 亚洲激情在线播放| 一个色综合av| 天堂在线亚洲视频| 亚洲成人av福利| 婷婷丁香激情综合| 日产国产高清一区二区三区 | 成人激情动漫在线观看| 成人性生交大片免费看在线播放| 精彩视频一区二区| 国产激情偷乱视频一区二区三区| 国产精品羞羞答答xxdd| 国产mv日韩mv欧美| 成人免费视频国产在线观看| 成人国产精品免费观看动漫| 成人午夜视频在线| 91无套直看片红桃| 欧美少妇一区二区| 日韩一区二区视频| 2023国产一二三区日本精品2022| 欧美成人a视频| 国产精品久久久久久久久免费桃花 | 97超碰欧美中文字幕| 91小视频在线| 欧美老人xxxx18| 日韩美女在线视频| 中文字幕欧美三区| 一区二区三区四区不卡在线| 天堂成人免费av电影一区| 久久精品国产亚洲一区二区三区| 国产精品一区二区三区乱码| 99视频精品在线| 欧美群妇大交群中文字幕| 久久免费视频一区| 亚洲天堂av老司机| 三级不卡在线观看| 国产99久久久国产精品潘金网站| 91麻豆免费看| 欧美一级国产精品| 国产精品理论在线观看| 亚洲电影一级片| 国产风韵犹存在线视精品| 在线视频欧美精品| 日韩一卡二卡三卡四卡| 国产婷婷色一区二区三区 | 亚洲欧美经典视频| 日本va欧美va精品发布| 成人a级免费电影| 欧美丰满少妇xxxxx高潮对白| 欧美激情综合在线| 午夜精品福利一区二区三区蜜桃| 国产69精品久久久久毛片| 欧美日韩精品专区| 国产精品久久午夜夜伦鲁鲁| 毛片av一区二区| 欧美亚洲日本国产| 中文字幕在线免费不卡| 久久精品国产网站| 欧美色区777第一页| 中文一区二区完整视频在线观看| 日本不卡在线视频| 欧美性极品少妇| 18涩涩午夜精品.www| 国产一区二区网址| 欧美一区二区视频在线观看| 亚洲美女在线一区| 高清成人免费视频| 精品美女一区二区| 午夜视黄欧洲亚洲| 91福利社在线观看| 亚洲乱码精品一二三四区日韩在线| 国产在线一区二区| 日韩亚洲欧美在线| 欧美aaaaaa午夜精品| 欧美猛男超大videosgay| 亚洲午夜一二三区视频| 色哟哟在线观看一区二区三区| 国产清纯在线一区二区www| 欧美bbbbb| 日韩欧美一二区| 美女视频一区在线观看| 制服丝袜中文字幕一区| 天堂影院一区二区| 欧美肥妇free| 免费欧美在线视频| 欧美大片在线观看一区二区| 天天操天天综合网| 91精品国产综合久久精品图片| 日日骚欧美日韩| 日韩视频永久免费| 激情五月婷婷综合| 久久亚洲捆绑美女|