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

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

?? module1.bas

?? 基于RS-232的
?? BAS
字號:
Attribute VB_Name = "Module1"
'目標地址
Public Const T_ADDR1 As Byte = &H1& '對應多路轉換開關連接的被測儀器
Public Const T_ADDR2 As Byte = &H2&
Public Const T_ADDR3 As Byte = &H3&
Public Const T_ADDR4 As Byte = &H4&
Public Const T_ADDR5 As Byte = &H5&
Public Const T_ADDR6 As Byte = &H6&
Public Const T_ADDR7 As Byte = &H7&
Public Const T_ADDR8 As Byte = &H8&
Public Const T_ADDR9 As Byte = &H9&
Public Const T_ADDR10 As Byte = &HA&
Public Const T_ADDR11 As Byte = &HB&
Public Const T_ADDR12 As Byte = &HC&
Public Const T_ADDR13 As Byte = &HD&
Public Const T_ADDR14 As Byte = &HE&
Public Const T_ADDR15 As Byte = &HF&
Public Const T_ADDR16 As Byte = &H10&

Public Const PC_ADDR0 As Byte = &H11& 'PC機A
Public Const PC_ADDR1 As Byte = &H12& 'PC機B
Public Const DLZ_ADDR As Byte = &H13&  '多路轉換開關地址

Public Const PO7D_ADDR As Byte = &H21& 'PO7D設備地址
Public Const CNT81_ADDR As Byte = &H22& 'CNT81的設備地址
Public Const XN_ADDR As Byte = &H23& '虛擬測量設備地址

'包頭 包尾
Public Const PKStart As Byte = &H7E&
Public Const PKEND As Byte = &H7E&

'下位機應答包標志位
Public Const ACK_OK As Byte = &H1&
Public Const ACK_FAIL As Byte = &H2&
Public Const ACK_OVERTIME As Integer = 1000 '超時時間1秒

'當前發送的命令
Public COMM_CurCmd As Byte

'當前連接的測量儀器地址
Public COMM_SurveyADDR As Byte

'包頭包尾判別標志
Public COMM_PKStartFlag As Boolean, COMM_PKEndFlag As Boolean

'收到包的個數
Public COMM_RcvDataNum As Integer, RcvData() As Byte '收到數據

Public COMM_SendPacket() As Byte '當前發送的包
Public COMM_ReSendTimes As Integer '記錄重傳次數
Public COMM_isSendOverFlag As Boolean '發送是否結束
Public COMM_isACKFlag As Boolean '檢測是否有應答
Private overtime_timer As Timer '超時時鐘
Private COMM_RcVMSCOMM As MSComm, COMM_SendMSCOMM As MSComm '使用的發送控件
Public Const HISPACKETNUM As Integer = 3 '歷史包的總包數
Public COMM_CurHisPackIndex As Integer   '當前發送的歷史包序列號
Public COMM_CurDestADDR As Byte  '當前訪問下位機的地址
Private RcvDataByteIndex As Integer '接收字節的索引號


Public Sub COMM_PacketData(cmd As Byte, ADDR As Byte, ADDR2 As Byte, Data() As Byte, senddata() As Byte)

 'cmd  為要連接的被測設備

 'addr 為下傳的地址
 
 'addr2 測量儀器

 'data 為需下傳的原始數據

 'senddata 為打包好的數據

 


Dim start As String

Dim ub, lb, num As Integer

ReDim senddata(5) As Byte

      senddata(0) = PKStart '包頭

      senddata(1) = DLZ_ADDR '目標地址

      senddata(2) = PC_ADDR0 '源地址

      senddata(3) = 0 '標志位

      senddata(4) = COMM_SurveyADDR '測量設備地址
      
      senddata(5) = cmd '連接端口地址
      

      COMM_CurCmd = cmd '當前包類型

      ReDim Preserve senddata(0 To 7) As Byte

      COMM_Add7DFlag senddata, 1, 7 ' 1-7之間數據尋找7D7EFF做轉換(除去包頭)

      

      ub = UBound(senddata)

      senddata(ub - 1) = COMM_GenerateCRC(senddata, 1, ub - 2) '生成校驗碼

      senddata(ub) = PKEND '添加包尾

      COMM_Add7DFlag senddata, ub - 1, ub - 1 '對校驗碼進行尋找7D7EFF做轉換

   End Sub
Public Sub COMM_Init(ovtime As Timer, rcvComm As MSComm, sendComm As MSComm)


'包頭包尾標志,接收包時對完整包進行判別
COMM_PKStartFlag = False
COMM_PKEndFlag = False
'接收屬于包內數據的個數,即RCVDATA的個數
COMM_RcvDataNum = 0
COMM_ReSendTimes = 0 '重傳次數為0
COMM_isACKFlag = False '下位機是否應答標志
'超時時鐘間隔
Set overtime_timer = ovtime
overtime_timer.Interval = ACK_OVERTIME
overtime_timer.Enabled = False
RcvDataByteIndex = 0 '接收字節索引號
'發送及接收通信串口
Set COMM_RcVMSCOMM = rcvComm
Set COMM_SendMSCOMM = sendComm
COMM_isSendOverFlag = True

COMM_CurHisPackIndex = 0 '上傳歷史包號
BITRATE = Array(0, 1, 2, 3, 4, 5, 6, 7)

End Sub
Private Function COMM_GenerateCRC(Data() As Byte, indexS As Integer, indexE As Integer) As Byte '添加校驗碼的函數,防止數據在傳輸途中丟失
Dim tmp As Integer, I As Integer, length As Integer, zerobyte As Byte
   Dim i1 As Integer, i2 As Integer, i3 As Integer
   
   zerobyte = 0
   tmp = 0
   For I = indexS To indexE Step 1
   tmp = (tmp + Data(I)) And 255
   Next I
   i1 = zerobyte
   i2 = tmp
   COMM_GenerateCRC = (0 - i2) And 255

    
End Function


Private Function COMM_CheckCRC(Data() As Byte) As Byte '檢驗所收數據的校驗碼,判斷數據是否完整
 Dim tmp As Integer, I As Integer
 tmp = 0
 For I = 0 To UBound(Data) Step 1
  tmp = (tmp + Data(I)) And 255
 Next I
 COMM_CheckCRC = tmp
 'Put #1, , "FUN_comm_checkcrc: " & (COMM_CheckCRC) & Chr(13)
End Function
Private Sub COMM_Add7DFlag(dataArray() As Byte, indexS As Integer, indexE As Integer) '進行7D7EFF轉換的函數防止數據失真

'index表明從dataarray數組的第及位開始查找

Dim istart, iend As Integer, I, K As Integer

istart = LBound(dataArray)

iend = UBound(dataArray)






For K = indexS To indexE Step 1  '排除包頭和包尾

 If dataArray(indexS) = &H7E& Then

   iend = iend + 1

   ReDim Preserve dataArray(istart To iend) As Byte

   For I = iend To indexS + 2 Step -1

     dataArray(I) = dataArray(I - 1)

   Next I

     dataArray(indexS) = &H7D&

     dataArray(indexS + 1) = &H5E&

     indexS = indexS + 2

     

 ElseIf dataArray(indexS) = &H7D& Then

   iend = iend + 1

   ReDim Preserve dataArray(istart To iend) As Byte

   For I = iend To indexS + 2 Step -1

     dataArray(I) = dataArray(I - 1)

   Next I

     dataArray(indexS) = &H7D&

     dataArray(indexS + 1) = &H5D&

     indexS = indexS + 2


 ElseIf dataArray(indexS) = &H7F& Then

   iend = iend + 1

   ReDim Preserve dataArray(istart To iend) As Byte

   For I = iend To indexS + 2 Step -1

     dataArray(I) = dataArray(I - 1)

   Next I

     dataArray(indexS) = &H7D&

     dataArray(indexS + 1) = &H5F&

     indexS = indexS + 2
     

 Else

     indexS = indexS + 1

 End If

 

 Next K

End Sub

Private Sub COMM_Del7DFlag(dataArray() As Byte, indexS As Integer, indexE As Integer) '祛除7D5D7D5E7D5F數據,還原初始命令數據

'index表明從dataarray數組的第及位開始查找

Dim istart, iend As Integer, I, K, num As Integer

istart = LBound(dataArray)

iend = UBound(dataArray)



'Put #1, , "start_FUN_comm_del7dflag" & Chr(13)

'For K = indexS To indexE Step 1

If indexE = iend Then indexE = indexE - 1

If indexS = iend Then indexS = indexS - 1



num = indexE - indexS

K = istart

Do Until num < 0

 If dataArray(indexS) = &H7D& And dataArray(indexS + 1) = &H5F& Then

   dataArray(indexS) = &H7F&

   For I = indexS + 1 To iend - 1 Step 1

     dataArray(I) = dataArray(I + 1)

   Next I

   iend = iend - 1

   ReDim Preserve dataArray(istart To iend) As Byte

   indexS = indexS + 1

    num = num - 2

 ElseIf dataArray(indexS) = &H7D& And dataArray(indexS + 1) = &H5E& Then

   dataArray(indexS) = &H7E&

   For I = indexS + 1 To iend - 1 Step 1

     dataArray(I) = dataArray(I + 1)

   Next I

   iend = iend - 1

   ReDim Preserve dataArray(istart To iend) As Byte
  indexS = indexS + 1
     num = num - 2
ElseIf dataArray(indexS) = &H7D& And dataArray(indexS + 1) = &H5D& Then
   dataArray(indexS) = &H7D&
   For I = indexS + 1 To iend - 1 Step 1
     dataArray(I) = dataArray(I + 1)
   Next I
   iend = iend - 1
   ReDim Preserve dataArray(istart To iend) As Byte
     indexS = indexS + 1

     num = num - 2

 Else

     indexS = indexS + 1

     num = num - 1

 End If

 Loop

 

End Sub

Public Sub COMM_StartSendData() '傳送數據模塊

Dim num, I, K As Integer

 num = UBound(COMM_SendPacket)


 COMM_isSendOverFlag = False

 COMM_isACKFlag = False '下位機應答初始化為無

 overtime_timer.Interval = ACK_OVERTIME '超時判斷

 overtime_timer.Enabled = True

 COMM_SendMSCOMM.Output = COMM_SendPacket '發送數據

 Form1.Text1.Text = ConvertChar(COMM_SendPacket)

 Do

    K = DoEvents()

 Loop Until COMM_SendMSCOMM.OutBufferCount = 0

 'Put #1, , COMM_SendPacket



End Sub

Public Sub overtime_timer_timer() '超時處理模塊

'Put #1, , "start_fun_overtime_timer_timer" & Chr(13)

'Put #1, , "start_fun_overtime_timer_timer-comm_isackflag:--" & COMM_isACKFlag & Chr(13)

  If COMM_isACKFlag = False Then

    Dim tmp As Variant

    ReDim RcvData(0) '清空接收緩沖區

    tmp = COMM_RcVMSCOMM.InputLen

    RcvDataByteIndex = 0 '接收的字節數復位

    If COMM_ReSendTimes < 2 Then

    COMM_ReSendTimes = COMM_ReSendTimes + 1

    COMM_StartSendData

    'Put #1, , "start_fun_overtime_timer_timer-resend:--" & COMM_ReSendTimes & Chr(13)

    Else

    'Put #1, , "start_fun_overtime_timer_timer-over" & Chr(13)

    COMM_isSendOverFlag = True '復位發送完標志

    COMM_ReSendTimes = 0

    overtime_timer.Enabled = False

    End If

  Else

    

  End If

End Sub
Public Sub COMM_End() '程序結束模塊

'Put #1, , "start_fun_comm_end" & Chr(13)

If COMM_RcVMSCOMM.PortOpen = True Then COMM_RcVMSCOMM.PortOpen = False

If COMM_SendMSCOMM.PortOpen = True Then COMM_SendMSCOMM.PortOpen = False

End Sub
Private Function ConvertChar(dat() As Byte) As String '提取數據模塊

Dim I As Integer, str As String

str = ""

For I = 0 To UBound(dat)

  str = str & Format(Hex(dat(I)), "0#")

 Next I

 ConvertChar = str

End Function

Private Sub COMM_ReceiveData() '接收模塊

On Error Resume Next

Dim di As Variant

Dim cLen, I, num As Integer

Put #1, , "start_FUN_comm_receivedata" & Chr(13)

cLen = COMM_RcVMSCOMM.InBufferCount

 Put #1, , "in_FUN_comm_receivedata_orgdata number:" & cLen & Chr(13)

di = COMM_RcVMSCOMM.Input



Dim tmp() As Byte

ReDim tmp(0 To cLen - 1)

For I = 0 To cLen - 1

tmp(I) = di(I)

Next I



  Put #1, , "in_FUN_comm_receivedata_orgdata:" & ConvertChar(tmp) & Chr(13)

  Erase tmp

 If COMM_PKStartFlag = False And COMM_PKEndFlag = False Then

     RcvDataByteIndex = 0 '接收字節索引號

  End If

 I = 0

 Do Until COMM_PKEndFlag = True Or I > cLen - 1

    

  If di(I) = PKStart And RcvDataByteIndex = 0 Then

        ReDim RcvData(0)

        RcvData(0) = PKStart

  ElseIf di(I) <> PKStart And RcvData(0) = PKStart Then

       ReDim RcvData(0)

       RcvDataByteIndex = 0

       COMM_PKStartFlag = True

       RcvData(RcvDataByteIndex) = di(I)

  ElseIf di(I) = PKEND And RcvData(RcvDataByteIndex) <> PKEND Then

       COMM_PKEndFlag = True

       RcvDataByteIndex = 0

            

  ElseIf COMM_PKStartFlag = True And COMM_PKEndFlag = False Then

       

       RcvDataByteIndex = RcvDataByteIndex + 1

       ReDim Preserve RcvData(RcvDataByteIndex)

       RcvData(RcvDataByteIndex) = di(I)

  End If

  I = I + 1

Loop

If COMM_PKEndFlag = True Then

   COMM_isACKFlag = True

   overtime_timer.Enabled = False '超時無效

   COMM_PKStartFlag = False

   COMM_PKEndFlag = False

 Put #1, , "in_FUN_comm_receivedata_comm_realdata:" & ConvertChar(RcvData) & Chr(13)
   
   Form1.Text2.Text = ConvertChar(RcvData) '顯示接受正確的數據
   
   ProcessRcvData
   

End If


End Sub


Public Sub ProcessRcvData() '接受數據錯誤的處理

Dim CRC As Byte, num, I As Integer

'Put #1, , "start_FUN_comm_processrcvdata" & Chr(13)

COMM_Del7DFlag RcvData, UBound(RcvData), UBound(RcvData) '過濾校驗位的特殊字符



CRC = COMM_CheckCRC(RcvData)



If CRC = 0 Then '校驗正確

  

 'Put #1, , "start_FUN_comm_processrcvdata" & "crc_ok" & Chr(13)

  COMM_Del7DFlag RcvData, 0, UBound(RcvData) '過濾數據中的特殊字符

  Dim sourceADDR As Byte, CorrectFlag As Byte

  sourceADDR = RcvData(1) '下位機地址

  CorrectFlag = RcvData(2) '標志位,01正確,02錯誤

  

  If CorrectFlag = ACK_OK Then '下位機正確接收

          'Put #1, , "FUN_comm_processrcvdata" & "ack_ok_UP_no _data" & Chr(13)

      

       COMM_ReSendTimes = 0 '重傳次數復位

       COMM_isSendOverFlag = True

       COMM_CurCmd = NO_CMD

       'Put #1, , "FUN_comm_processrcvdata" & "ack_ok_up_nodata_reset" & Chr(13)

       Form1.Picture1.BackColor = &HFF00&
       Form1.Label3.Caption = "一切正常"
       COMM_CurHisPackIndex = COMM_CurHisPackIndex + 1
       
       
   Else
  '重發,3次

   Form1.Picture1.BackColor = &HFF&
   Form1.Label3.Caption = "發送錯誤數據"
    If COMM_ReSendTimes < 2 Then

      'Put #1, , "FUN_comm_processrcvdata" & "ack_fail_resend_times-" & COMM_ReSendTimes & Chr(13)

       COMM_ReSendTimes = COMM_ReSendTimes + 1 '起始值為0

       COMM_StartSendData '繼續該命令的傳送

 Else

      'Put #1, , "FUN_comm_processrcvdata" & "ack_fail_resend_times >2 and_reset" & Chr(13)

      COMM_isSendOverFlag = True

      COMM_ReSendTimes = 0 '重傳 次數復位

      COMM_CurCmd = NO_CMD '重傳,及命令復位

    End If

    

    

          

  End If ' end of ack-ok
 Else '校驗錯誤

'Put #1, , "_FUN_comm_processrcvdata" & "crc_fail" & Chr(13)

 '重發包,3次
 Form1.Picture1.BackColor = &HFF&
 Form1.Label3.Caption = "校驗錯誤"
 

   If COMM_ReSendTimes < 2 Then

       COMM_StartSendData '繼續該命令的傳送

       Put #1, , "FUN_comm_processrcvdata" & "crc_fail_resend_times-" & COMM_ReSendTimes & Chr(13)

    Else

       COMM_isSendOverFlag = True

       COMM_ReSendTimes = 0

       COMM_CurCmd = NO_CMD ' 命令,及重發 復位

       'Put #1, , "FUN_comm_processrcvdata" & "crc_fail_resend_times >2,and reset" & Chr(13)

   End If

   COMM_ReSendTimes = COMM_ReSendTimes + 1 '起始值為0

 

End If





End Sub
Public Sub MSCommCtl_OnComm() '對于觸發事件處理模塊

'Put #1, , "FUN_mscommctl_oncomm" & Chr(13)
Select Case COMM_RcVMSCOMM.CommEvent
  
  Case comEvReceive
       Call COMM_ReceiveData
  Case comEvEOF
End Select
End Sub

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩午夜精品| 午夜精品福利一区二区三区av| 色婷婷国产精品综合在线观看| 图片区小说区国产精品视频| 欧美国产国产综合| 欧美日韩国产综合一区二区 | 另类小说欧美激情| 国产午夜精品福利| 欧美日韩黄色影视| 99久久国产综合精品色伊 | 成人av网站在线| 午夜av一区二区| 国产精品对白交换视频 | 亚洲三级免费观看| 国产日韩成人精品| 精品久久人人做人人爱| 欧美日本一道本在线视频| 99re亚洲国产精品| 国产麻豆91精品| 日韩精品一级中文字幕精品视频免费观看 | 欧美日韩中文字幕一区| 国产成人免费视频网站高清观看视频 | 在线视频亚洲一区| 成人av综合一区| 亚洲成人先锋电影| 国产日产欧美一区| 欧美另类久久久品| 日韩高清不卡一区二区三区| 欧美一级久久久| 不卡av在线免费观看| 亚洲一二三四区| 国产伦精一区二区三区| 精品国产乱码久久| 精品乱人伦小说| 5566中文字幕一区二区电影| 成人一区二区三区视频在线观看 | 久久久久国产精品厨房| 三级欧美在线一区| 日韩午夜在线观看| 久久99深爱久久99精品| 久久女同性恋中文字幕| 成人性生交大片免费看中文网站| 伊人婷婷欧美激情| 国产精品美女一区二区在线观看| 欧美老年两性高潮| 国产一区在线视频| 国产成人av影院| 99精品热视频| 欧美女孩性生活视频| 岛国精品在线播放| 久久国产精品一区二区| 一区二区理论电影在线观看| 久久人人爽人人爽| 欧美成人精精品一区二区频| 国产精品一区不卡| 日韩av一级片| 免费视频最近日韩| 国产成人av电影| 一区二区高清视频在线观看| 亚洲精品在线三区| 日本久久电影网| 成人性色生活片免费看爆迷你毛片| 亚洲成人福利片| 国产精品丝袜久久久久久app| 国产亚洲短视频| 欧美综合天天夜夜久久| 蜜桃av一区二区在线观看| 日韩—二三区免费观看av| 性久久久久久久久| 日韩不卡手机在线v区| 日韩成人精品在线| 美女视频黄 久久| 欧美一区二区三区四区高清 | 欧洲生活片亚洲生活在线观看| 色综合色狠狠综合色| 欧美日韩一区二区欧美激情| 欧美一级在线免费| 欧美—级在线免费片| 亚洲成人免费看| 国产精品一区二区男女羞羞无遮挡| 91同城在线观看| 日韩一区二区三区观看| 亚洲国产电影在线观看| 亚洲国产一区二区视频| 国产精品第四页| 亚洲成av人影院| 国产精品一区二区视频| 欧美在线高清视频| 国产亚洲美州欧州综合国| 亚洲另类色综合网站| 亚洲成精国产精品女| 高清国产一区二区| 欧美精品视频www在线观看| 欧美高清一级片在线观看| 视频一区中文字幕国产| 成人国产免费视频| 欧美一二三四区在线| 亚洲日本免费电影| 韩国午夜理伦三级不卡影院| 91久久国产综合久久| 日本一区二区三区四区在线视频| 日韩高清一区在线| 91一区二区三区在线观看| 久久综合色婷婷| 天堂蜜桃一区二区三区 | 91同城在线观看| 久久久久综合网| 免费在线观看视频一区| 色婷婷av一区二区三区大白胸 | 亚洲精品日韩综合观看成人91| 国产一区二区91| 6080亚洲精品一区二区| 亚洲一区免费视频| 成人精品免费视频| www一区二区| 免费在线观看一区| 这里只有精品99re| 亚洲一区二区三区四区中文字幕| caoporen国产精品视频| 国产欧美精品国产国产专区| 美国十次了思思久久精品导航| 欧美人与z0zoxxxx视频| 亚洲精品久久久蜜桃| av不卡在线播放| 欧美国产乱子伦| 国产91综合一区在线观看| 精品少妇一区二区三区日产乱码| 日产国产欧美视频一区精品 | 欧美视频中文字幕| 亚洲免费观看在线视频| eeuss鲁片一区二区三区在线看| 国产欧美一区二区三区沐欲| 国产一区二区三区在线看麻豆| 欧美tk—视频vk| 蜜臀av亚洲一区中文字幕| 91精品国产色综合久久| 日韩高清不卡一区二区三区| 91精品在线麻豆| 麻豆视频一区二区| 精品粉嫩超白一线天av| 国产真实乱子伦精品视频| 2020国产精品久久精品美国| 国产一区二区成人久久免费影院| 国产日韩欧美a| 不卡视频在线观看| 亚洲欧美国产77777| 一本到不卡免费一区二区| 一区二区国产盗摄色噜噜| 欧美女孩性生活视频| 麻豆freexxxx性91精品| 亚洲精品一区二区三区99| 国产盗摄精品一区二区三区在线| 中文一区二区在线观看| 色婷婷综合在线| 天天做天天摸天天爽国产一区| 日韩三级av在线播放| 国产精品一区二区久久精品爱涩| 国产精品成人免费在线| 欧美在线|欧美| 美国十次综合导航| 国产精品色呦呦| 欧美系列亚洲系列| 免费成人在线观看视频| 国产无人区一区二区三区| 一本到高清视频免费精品| 日韩avvvv在线播放| 久久久不卡网国产精品一区| 91尤物视频在线观看| 婷婷亚洲久悠悠色悠在线播放 | 亚洲视频综合在线| 欧美丰满少妇xxxbbb| 国产一区二区日韩精品| 亚洲欧美另类图片小说| 日韩欧美www| 91一区二区在线| 玖玖九九国产精品| 亚洲人成影院在线观看| 日韩三级在线免费观看| 99精品国产热久久91蜜凸| 首页国产丝袜综合| 亚洲国产精品二十页| 91精品国产综合久久久久久漫画| 国产91清纯白嫩初高中在线观看| 亚洲一区免费在线观看| 久久午夜老司机| 欧美图区在线视频| 国产成人8x视频一区二区| 午夜久久久久久| 国产精品婷婷午夜在线观看| 欧美日韩久久一区| 成人免费视频视频在线观看免费 | 久久精品国产一区二区| 自拍偷拍亚洲激情| 久久综合av免费| 欧美日韩三级一区| 成人国产一区二区三区精品| 精品一区二区三区视频| 亚洲国产精品久久久久秋霞影院| 中文字幕乱码亚洲精品一区| 日韩精品最新网址|