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

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

?? communication.bas

?? 基于RS-232的
?? BAS
?? 第 1 頁 / 共 3 頁
字號:
Attribute VB_Name = "communication"
Option Explicit
'命令種類
Public Const NO_CMD As Byte = 0
Public Const UP_UI As Byte = &H11&
Public Const DOWN_IO As Byte = &H12&
Public Const DOWN_OCTIME As Byte = &H13&
Public Const DOWN_STDTIME As Byte = &H14&
Public Const UP_HISRECORD As Byte = &H15&
Public Const UP_TIME As Byte = &H16&
Public Const DOWN_CANBITRATE As Byte = &H17& '下傳CAN總線波特率
'目標地址
Private Const T_ADDR1 As Byte = &H1&  '1號站點
Private Const T_ADDR2 As Byte = &H2&
Private Const T_ADDR3 As Byte = &H3&
Private Const T_ADDR4 As Byte = &H4&
Private Const T_ADDR5 As Byte = &H5&
Private Const T_ADDR6 As Byte = &H6&
Private Const T_ADDR7 As Byte = &H7&

Private Const PC_ADDR1 As Byte = &H8& 'PC機A
Private Const PC_ADDR2 As Byte = &H9& 'PC機B
Private Const CAN_ADDR As Byte = &HFE&  'can總線網絡地址
'目標地址數組
Public COMM_MachineADDR(50) As Byte
'設置CAN總線的波特率
'10K,20K,40K,50K,80K,100K,125K,200k 對應0-7
'Public COMM_BITRATE As Variant
Public COMM_TerminateSendByForce As Boolean '強行中斷傳輸標志,用于傳送歷史數據時
'包頭
Private Const PKStart As Byte = &H7E&
Private Const PKEND As Byte = &H7E&
'下位機應答量
Private Const ACK_OK As Byte = &H1&
Private Const ACK_FAIL As Byte = &H2&
Private Const ACK_OVERTIME As Integer = 500 '超時時間1秒
'當前發送的命令
Private COMM_CurCmd As Byte
'當前發送包的索引號
'Public COMM_CurPacketIndex As Integer
'打包要傳送的數據
'包頭包尾判別標志
Private COMM_PKStartFlag As Boolean, COMM_PKEndFlag As Boolean
'收到包的個數
Private COMM_RcvDataNum As Integer, COMM_RcvData() As Byte, tmp_Rcvdata() As Byte
'Public Type SENDPACKETTYPE '發送數據時可連續打幾個包
'  Dim data() As Byte
'  Dim isSendOverFlag As Boolean
'End Type
Private COMM_SendPacket() As Byte '當前發送的包
Private COMM_ReSendTimes As Integer '記錄重傳次數
Public COMM_isSendOverFlag As Boolean   '發送是否結束
Private COMM_isACKFlag As Boolean '檢測是否有應答
Private overtime_timer As Timer '超時時鐘
Private COMM_RcVMSCOMM As MSComm, COMM_SendMSCOMM As MSComm
Private Const HISPACKETNUM As Integer = 100 '歷史包的總包數(待定)
Private COMM_CurHisPackIndex As Integer   '當前發送的歷史包序列號
Private COMM_CurDestADDR As Byte  '當前訪問下位機的地址
Private Const logfileName = "d:\testcom.log" '日志文件
'Private DataBaseObj As Database '用于訪問數據及設置參數的數據庫對象
'Private tmpdata() As Byte
Private RcvDataByteIndex As Integer '接收字節的索引號
Private WaitSendFlagNum As Double '等待發送標志計數
Private MyMachineAdd As Byte
'Private waitSendFlagTimer As Timer
Type COMM_CmdMessageType
 cmd As Byte
 station As Integer
 BeenUsedFlag As Boolean
End Type

Private COMM_CMDGroup() As COMM_CmdMessageType  '消息隊列

Public Sub COMM_Init(ovtime As Timer, rcvComm As MSComm, sendComm As MSComm, MyAdd As Byte)  ', dbobj As Database)

If MyAdd = 1 Then
  MyMachineAdd = PC_ADDR1 'A本機地址
ElseIf MyAdd = 2 Then
  MyMachineAdd = PC_ADDR2 'B本機地址
End If

'包頭包尾標志,接收包時對完整包進行判別
COMM_PKStartFlag = False
COMM_PKEndFlag = False
'接收屬于包內數據的個數,即COMM_RCVDATA的個數
COMM_RcvDataNum = 0
COMM_ReSendTimes = 0 '重傳次數尾0
COMM_isACKFlag = False '下位機是否應答標志
'超時時鐘間隔
COMM_TerminateSendByForce = False '強行中斷發送命令
Set overtime_timer = ovtime
overtime_timer.interval = ACK_OVERTIME
overtime_timer.Enabled = False
RcvDataByteIndex = 0 '接收字節索引號
'發送及接收通信串口
ReDim COMM_RcvData(400): ReDim tmp_Rcvdata(400)
Set COMM_RcVMSCOMM = rcvComm
Set COMM_SendMSCOMM = sendComm

'Set waitSendFlagTimer = checkSendflagtime
'Set DataBaseObj = dbobj
'初始化發送和接收串口設置
 Dim recordDb As Recordset
 On Error Resume Next
 Set recordDb = db.OpenRecordset("文件路徑")
COMM_RcVMSCOMM.Settings = "19200,n,8,1"
 'COMM_RcVMSCOMM.Settings = "9600,n,8,1"
 COMM_RcVMSCOMM.commport = recordDb.Fields("通信端口").Value
 COMM_RcVMSCOMM.InBufferCount = 0                         ' 清接收緩沖區
 COMM_RcVMSCOMM.RThreshold = 1                            ' 接收數據長度
 COMM_RcVMSCOMM.OutBufferCount = 0
 COMM_RcVMSCOMM.InputMode = comInputModeBinary
 If COMM_RcVMSCOMM.PortOpen = False Then
 COMM_RcVMSCOMM.PortOpen = True
 End If
 Set COMM_SendMSCOMM = COMM_RcVMSCOMM
 'COMM_SendMSCOMM.Settings = "9600,n,8,1"
 'COMM_SendMSCOMM.commport = recordDB.Fields("通信端口").Value
 'COMM_SendMSCOMM.InBufferCount = 0                         ' 清接收緩沖區
 'COMM_SendMSCOMM.RThreshold = 1                            ' 接收數據長度
 'COMM_SendMSCOMM.OutBufferCount = 0
 'COMM_SendMSCOMM.InputMode = comInputModeBinary
 'If COMM_SendMSCOMM.PortOpen = False Then
 'COMM_SendMSCOMM.PortOpen = True
 'End If
 recordDb.Close
 Set recordDb = Nothing
COMM_isSendOverFlag = True

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

'可訪問各機地址
COMM_MachineADDR(0) = T_ADDR1
COMM_MachineADDR(1) = T_ADDR2
COMM_MachineADDR(2) = T_ADDR3
COMM_MachineADDR(3) = T_ADDR4
COMM_MachineADDR(4) = T_ADDR5
COMM_MachineADDR(5) = T_ADDR6
COMM_MachineADDR(6) = T_ADDR7
For I = 7 To StioNum
COMM_MachineADDR(I) = &H20& + I - 7 '多余站點地址從20開始
Next I
COMM_MachineADDR(48) = PC_ADDR1
COMM_MachineADDR(49) = PC_ADDR2
COMM_MachineADDR(50) = CAN_ADDR
'COMM_MachineADDR = Array(T_ADDR1, T_ADDR2, T_ADDR3, T_ADDR4, T_ADDR5, T_ADDR6, T_ADDR7, PC_ADDR1, PC_ADDR2, CAN_ADDR)
'If StioNum > 6 Then '增加下位機地址
'   Dim num As Integer
'   num = UBound(COMM_MachineADDR)
'   ReDim Preserve COMM_MachineADDR(num + StioNum - 6)
'   Dim I As Integer
'   For I = 1 To StioNum - 6
'     COMM_MachineADDR(num + I) = &H15& + I
'   Next I
'End If
Open logfileName For Binary As #1
'存儲和提取數據模塊的初始化
SED_Init 'DataBaseObj
'WaitSendFlagNum = 0 '等待發送標志計數值
ReDim COMM_CMDGroup(0) '0號單元不用

End Sub

Private Sub COMM_PacketData(cmd As Byte, ADDR As Byte, data() As Byte, senddata() As Byte)
 'cmd  為下傳命令
 'addr 為下傳的地址
 'data 為需下傳的原始數據
 'senddata 為打包好的數據
 'Put #1, , "start_FUN_comm_packetdata: cmd: " & Hex(cmd) & vbCr & vbLf
Dim start As String, I, K As Integer
Dim ub, lb, num As Integer, t As Byte
Dim LenIn As Integer, LenOut As Integer, RealLen As Integer
ReDim senddata(100) As Byte

      senddata(0) = PKStart
      senddata(1) = ADDR
      
      senddata(2) = MyMachineAdd 'PC_ADDR1 '本機地址
      senddata(3) = 0
      senddata(4) = cmd
      COMM_CurCmd = cmd '當前包類型
    If (cmd = UP_UI Or cmd = UP_TIME) Then
      '上傳
   
      LenIn = 5
       
    ElseIf cmd = UP_HISRECORD Then
      '上傳歷史數據+包號,共280記錄
    
      
      t = (COMM_CurHisPackIndex And &HFF00&) / 256
      senddata(5) = t ' 取高位???
      t = (COMM_CurHisPackIndex And &HFF&)
      senddata(6) = t '取地位?????????
      LenIn = 7
     
     
    
    ElseIf (cmd = DOWN_IO Or cmd = DOWN_OCTIME Or cmd = DOWN_STDTIME Or cmd = DOWN_CANBITRATE) Then
      '下傳
      
      ub = UBound(data)
      lb = LBound(data)
      num = ub - lb + 1
      
      K = 0
      For I = 5 To 4 + num Step 1
      senddata(I) = data(lb + K)
      K = K + 1
      Next
      LenIn = 5 + num
        
    End If
    
     COMM_Add7DFlag senddata, 1, LenIn, LenOut ' 1-4之間數據尋找7D7E做轉換(除去包頭)
      
     senddata(LenOut) = COMM_GenerateCRC(senddata, 1, LenOut - 1)
     COMM_Add7DFlag senddata, LenOut, LenOut + 1, RealLen
     senddata(RealLen) = PKEND
      
     
     ReDim Preserve senddata(RealLen)
     Put #1, , "FUN_comm_packetdata_down" & ConvertChar(senddata) & vbCr & vbLf


End Sub


Private Sub COMM_Add7DFlag(dataArray() As Byte, indexS As Integer, LenIn As Integer, LenOut As Integer)
'index表明從dataarray數組的第及位開始查找
Dim istart, iend As Integer, I, K As Integer
'istart = LBound(dataArray)
'iend = UBound(dataArray)
Dim dat() As Byte
ReDim dat(200) As Byte
'Put #1, , "start_FUN_comm_add7dflag" & vbCr & vbLf

For K = 0 To indexS - 1
dat(K) = dataArray(K)
Next K
Dim Pos As Integer
Pos = indexS
'If Pos < 0 Then Pos = 0

For K = indexS To LenIn - 1 Step 1 '排除包頭和包尾
   
 If dataArray(K) = &H7E& Then
   dat(Pos) = &H7D&: dat(Pos + 1) = &H5E&
   Pos = Pos + 2
 ElseIf dataArray(K) = &H7D& Then
   dat(Pos) = &H7D&: dat(Pos + 1) = &H5D&
   Pos = Pos + 2
 ElseIf dataArray(K) = &HFF& Then
   dat(Pos) = &H7D&: dat(Pos + 1) = &H5F&
   Pos = Pos + 2
 Else
   dat(Pos) = dataArray(K)
   Pos = Pos + 1
 End If
Next K


For K = 0 To Pos - 1
dataArray(K) = dat(K)
Next K
LenOut = Pos
Erase dat
End Sub



Private Sub COMM_Add7DFlag_old(dataArray() As Byte, indexS As Integer, indexE As Integer)
'index表明從dataarray數組的第及位開始查找
Dim istart, iend As Integer, I, K As Integer
istart = LBound(dataArray)
iend = UBound(dataArray)

'Put #1, , "start_FUN_comm_add7dflag" & vbCr & vbLf

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
 'OXFF---7d5F
 ElseIf dataArray(indexS) = &HFF& 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)
'index表明從dataarray數組的第及位開始查找
Dim istart, iend As Integer, I, K, num As Integer
istart = LBound(dataArray)
iend = RcvDataByteIndex  'UBound(dataArray)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费不卡在线观看| 欧美午夜不卡在线观看免费| 欧美精品一区在线观看| 精品一区二区免费视频| 久久久久久久久久看片| 成人黄色电影在线| 亚洲色图都市小说| 制服丝袜av成人在线看| 精品一区二区三区在线观看国产| 国产亚洲福利社区一区| 一本久道中文字幕精品亚洲嫩| 亚洲成人激情综合网| 欧美成人一区二区| 成人av免费网站| 亚洲午夜国产一区99re久久| 久久久久久久久久美女| 美女一区二区在线观看| 久久久不卡网国产精品一区| 91免费视频大全| 日韩av中文字幕一区二区三区| 精品久久久三级丝袜| 成人高清视频免费观看| 亚洲电影中文字幕在线观看| 精品国产一区久久| 99国产精品国产精品久久| 午夜在线成人av| 国产精品日韩成人| 91.xcao| 国产成人精品免费看| 亚瑟在线精品视频| 国产精品毛片a∨一区二区三区 | 国产一区二区免费在线| 亚洲色欲色欲www| 欧美mv日韩mv国产| 色偷偷久久人人79超碰人人澡| 久久不见久久见中文字幕免费| 亚洲同性gay激情无套| 欧美不卡一区二区三区| 免费xxxx性欧美18vr| 粉嫩av一区二区三区| 亚洲精品v日韩精品| 91精品久久久久久蜜臀| 成人在线综合网| 老司机一区二区| 亚洲成人自拍网| 国产精品久久三区| 欧美精品一区二区三区在线| 欧美精品欧美精品系列| 一本在线高清不卡dvd| 国产福利一区在线观看| 蜜桃视频一区二区三区在线观看| 亚洲精品自拍动漫在线| 国产肉丝袜一区二区| 日韩一卡二卡三卡| 欧美色偷偷大香| 一本一道久久a久久精品| 粉嫩aⅴ一区二区三区四区五区| 日本v片在线高清不卡在线观看| 亚洲一区二区四区蜜桃| 亚洲老妇xxxxxx| 国产精品成人网| 国产精品久久久久一区二区三区| 亚洲午夜电影在线| 日精品一区二区| 亚洲日本中文字幕区| 国产日韩欧美制服另类| 精品国产乱码久久久久久1区2区| 欧美精品在线观看播放| 欧美日韩大陆一区二区| 欧美日韩1区2区| 欧美亚洲国产一区在线观看网站 | 国产一区二区三区四| 日本vs亚洲vs韩国一区三区二区| 亚洲444eee在线观看| 同产精品九九九| 日韩国产精品91| 蜜臀av一区二区在线免费观看| 免费在线观看不卡| 奇米精品一区二区三区在线观看| 日本在线不卡一区| 蜜臀久久99精品久久久画质超高清| 青草av.久久免费一区| 久久精品国产77777蜜臀| 精品在线视频一区| 国产精品一二三在| www.性欧美| 在线免费观看视频一区| 欧美精品99久久久**| 欧美一区二区免费观在线| 欧美白人最猛性xxxxx69交| 久久夜色精品国产欧美乱极品| 国产亚洲人成网站| 综合中文字幕亚洲| 亚洲电影第三页| 久久99精品国产.久久久久久| 国产一区二三区| 成人午夜在线播放| 色狠狠一区二区| 欧美一级欧美一级在线播放| 精品国产1区二区| 亚洲欧洲精品天堂一级| 亚洲综合男人的天堂| 美女网站视频久久| 国产高清亚洲一区| 色婷婷综合激情| 日韩精品专区在线影院观看| 久久久久久久久久久久电影| 自拍av一区二区三区| 日韩精品欧美精品| 成人黄色免费短视频| 欧美蜜桃一区二区三区| 精品盗摄一区二区三区| 国产精品第五页| 美女视频一区二区三区| www.亚洲色图.com| 日韩欧美国产成人一区二区| 国产精品第一页第二页第三页| 午夜久久久影院| 成人午夜精品在线| 欧美美女喷水视频| 国产精品嫩草影院av蜜臀| 视频精品一区二区| 岛国一区二区三区| 日韩区在线观看| 亚洲精品水蜜桃| 国产一区二区按摩在线观看| 欧美日韩精品一区二区天天拍小说 | 亚洲精品中文在线观看| 国模冰冰炮一区二区| 欧洲国内综合视频| 国产网站一区二区三区| 三级亚洲高清视频| 91一区二区三区在线观看| 欧美精品一区二区三区在线播放 | 高清不卡在线观看av| 欧美肥大bbwbbw高潮| 亚洲日本成人在线观看| 国产一区二区在线影院| 欧美一区二区三区四区高清| 亚洲香肠在线观看| 99视频一区二区| 国产色91在线| 国产伦精品一区二区三区视频青涩| 欧美日本一区二区三区| 亚洲男人都懂的| av在线不卡网| 欧美激情一区二区三区蜜桃视频| 七七婷婷婷婷精品国产| 欧美日韩国产成人在线91| 亚洲激情五月婷婷| 99视频在线观看一区三区| 亚洲国产高清在线| 国产一区二区三区黄视频 | 美女视频黄频大全不卡视频在线播放| 色88888久久久久久影院野外| 国产精品国产三级国产专播品爱网| 国产一本一道久久香蕉| 欧美精品一区男女天堂| 久久99国产精品久久99| 欧美一区二区日韩| 美女视频免费一区| 精品美女被调教视频大全网站| 日本在线不卡视频一二三区| 欧美一区二区三区思思人| 日韩国产在线一| 91精品国产福利| 久久国产欧美日韩精品| wwww国产精品欧美| 国产成人亚洲综合a∨婷婷| 国产欧美一区二区三区鸳鸯浴| 国产在线视视频有精品| 国产欧美一区二区精品忘忧草| 国产精品一区二区在线看| 国产视频视频一区| 91在线精品一区二区| 亚洲自拍欧美精品| 欧美日韩久久久一区| 麻豆成人综合网| 久久人人97超碰com| 精品国产成人在线影院| 91蝌蚪国产九色| 亚洲精选一二三| 精品视频1区2区3区| 奇米综合一区二区三区精品视频| 日韩一本二本av| 国产成a人亚洲精| 亚洲精选免费视频| 91精品国产黑色紧身裤美女| 狠狠色丁香久久婷婷综合_中| 国产精品无码永久免费888| 色婷婷一区二区三区四区| 日本不卡免费在线视频| 久久久99久久| 在线视频你懂得一区| 另类调教123区| 亚洲天堂成人在线观看| 欧美久久高跟鞋激| 风间由美中文字幕在线看视频国产欧美 | 久久日韩精品一区二区五区| 北岛玲一区二区三区四区|