?? module1.bas
字號:
Attribute VB_Name = "Module1"
Dim STR() As Byte '拼裝每條命令時,臨時存放數組
Public send_r() As Variant '所有的抄表命令字,存放在數組send_r(30)中,不抄的命令也占用一個數組元素,只是將該元素的長度設為零。即長度為零的字段為不抄的項目
Public Sub get_tybh(ss As TextBox, bh)
Dim x0, y0 As Byte
x0 = Val(Mid(ss.Text, 11, 1)): y0 = Val(Mid(ss.Text, 12, 1))
bh(0) = (x0 * 16 + y0)
x0 = Val(Mid(ss.Text, 9, 1)): y0 = Val(Mid(ss.Text, 10, 1))
bh(1) = (x0 * 16 + y0)
x0 = Val(Mid(ss.Text, 7, 1)): y0 = Val(Mid(ss.Text, 8, 1))
bh(2) = (x0 * 16 + y0)
x0 = Val(Mid(ss.Text, 5, 1)): y0 = Val(Mid(ss.Text, 6, 1))
bh(3) = (x0 * 16 + y0)
x0 = Val(Mid(ss.Text, 3, 1)): y0 = Val(Mid(ss.Text, 4, 1))
bh(4) = (x0 * 16 + y0)
x0 = Val(Mid(ss.Text, 1, 1)): y0 = Val(Mid(ss.Text, 2, 1))
bh(5) = (x0 * 16 + y0)
End Sub
'拼裝抄表命令字,存放在數組send_r(30)中,長度為零的字段不抄
Public Sub copy_Com(check, bh, mm, nn)
ReDim STR(15), send_r(31)
'填固定項
STR(0) = &HFE: STR(1) = &HFE: STR(2) = &H68
STR(9) = &H68: STR(10) = &H1
STR(11) = &H2: STR(15) = &H16
For i = 0 To 5 '填表號
STR(i + 3) = bh(i)
Next
For i = mm To nn
If check(i).Value = vbChecked Then ' 如果當前項被選中則拼裝命令
Select Case i
Case 1 '讀當前有功電量
STR(12) = &H52 '1F+33:
STR(13) = &HC3 '90+33 :
Case 2 '讀反向累計電量
STR(12) = &H62: STR(13) = &HC3
Case 3 '讀上月有功電量
STR(12) = &H52: STR(13) = &HC7
Case 4 '讀上上月有功電量
STR(12) = &H52: STR(13) = &HCB
Case 5 '讀歷史記錄3=03月電量
STR(12) = &H52: STR(13) = &H16
Case 6 '讀歷史記錄4=04月電量
STR(12) = &H62: STR(13) = &H16
Case 7 '讀歷史記錄5=05月電量
STR(12) = &H72: STR(13) = &H16
Case 8 '讀歷史記錄6=06月電量
STR(12) = &H82: STR(13) = &H16
Case 9 '讀歷史記錄7=07月電量
STR(12) = &H92: STR(13) = &H16
Case 10 '讀歷史記錄8=08月電量
STR(12) = &HA2: STR(13) = &H16
Case 11 '讀歷史記錄9=09電量
STR(12) = &HB2: STR(13) = &H16
Case 12 '讀歷史記錄10=10月電量
STR(12) = &HC2: STR(13) = &H16
Case 13 '讀歷史記錄11=11月電量
STR(12) = &HD2: STR(13) = &H16
Case 14 '讀歷史記錄12=12月電量
STR(12) = &HE2: STR(13) = &H16
'Case 15 '讀最近編程時間
STR(12) = &H43: STR(13) = &HE5
Case 16 '讀最近清零時間
STR(12) = &H4D: STR(13) = &HE5
Case 17 '讀編程次數
STR(12) = &H45: STR(13) = &HE5
Case 18 '讀清零次數
STR(12) = &H4E: STR(13) = &HE5
Case 19 '讀時間
STR(12) = &H44: STR(13) = &HF3
Case 20 '讀日期和星期
STR(12) = &H43: STR(13) = &HF3
Case 21 '讀自動讀表日
STR(12) = &H4A: STR(13) = &HF4
Case 22 '讀循顯時間
STR(12) = &H46: STR(13) = &HF4
Case 23 '讀表號
STR(12) = &H65: STR(13) = &HF3
Case 24 '讀設備碼
STR(12) = &H67: STR(13) = &HF3
Case 25 '讀循環顯示項目數
STR(12) = &H63: STR(13) = &HF4
Case 26 '讀第01項循環顯示項目
STR(12) = &H43: STR(13) = &HF9
Case 27 '讀第02項循環顯示項目
STR(12) = &H44: STR(13) = &HF9
Case 28 '讀第03項循環顯示項目
STR(12) = &H45: STR(13) = &HF9
Case 29 '讀第04項循環顯示項目
STR(12) = &H46: STR(13) = &HF9
Case 30 '讀電流反向事件1起始時間結束時間
STR(12) = &H43: STR(13) = &H15
End Select
SUM1 = 0 '求和
For n = 2 To 13
SUM1 = SUM1 + STR(n)
Next
STR(14) = SUM1 Mod 256
If i = 25 Then
send_r(26) = STR()
Else
send_r(i - 1) = STR()
End If
End If
Next
End Sub
Public Function myweekday() As String
Dim myweek As VbDayOfWeek
Dim weekchr(7) As String * 1
weekchr(1) = "日": weekchr(2) = "一": weekchr(3) = "二": weekchr(4) = "三"
weekchr(5) = "四": weekchr(6) = "五": weekchr(7) = "六"
myweek = Weekday(Date)
myweekday = "星期" & weekchr(myweek)
End Function
Public Function key_value(a_ascii As Integer) As Integer
Dim mychr As String * 1
key_value = a_ascii
If a_ascii <> 8 Then
mychr = Chr(a_ascii)
If ("0" > mychr) Or (mychr > "9") Then key_value = 0
End If
End Function
Public Sub OnErrStatement(title As String)
'檢查可能發生的錯誤。
Dim msg As String
Select Case Err.Number
Case 1
msg = "廣播表號失敗,請檢查串口號及線路連接是否正確。"
Case 621
msg = "無有效選擇項。"
Case 630
msg = "應答超時。請檢查串口號及線路連接是否正確."
Case 631
msg = "應答命令錯誤。"
End Select
MsgBox msg, vbExclamation, title '錯誤信息,一個確認鍵,標題欄文本
MARK = 0: end_s = True
End Sub
Public Sub set_replay(aray() As Byte, INF)
Dim cx As Byte
Dim SUM1 As Integer
cx = UBound(aray()) '接收的字節數
If cx < 10 Then GoTo ERR_123
k = 0
'尋找FEH,68H開始的有效應答信號
Do
k = k + 1
Loop Until ((aray(k - 1) = 254) And (aray(k) = 104)) Or (k = cx)
'如果找到了,求和
SUM1 = 0
If (k < cx) Then
j = k + 9 + aray(k + 9)
If j > cx Then GoTo ERR_123 '如果接收到的數據長度<應答命令給出的數據長度,說明應答命令錯誤
For n = k To j
SUM1 = SUM1 + aray(n)
Next
SUM1 = SUM1 Mod 256
If SUM1 <> aray(n) Then
frm_msg.ForeColor = &HFF&
frm_msg.Print INF & "失敗" 'COM_MSG(ii + 1) & "失敗"
frm_msg.ForeColor = &H0&
Else
frm_msg.ForeColor = &H0&
frm_msg.Print INF & "成功" 'COM_MSG(ii + 1) & "成功"
End If
Else
ERR_123:
frm_msg.ForeColor = &HFF&
frm_msg.Print INF & "失敗" 'COM_MSG(ii + 1) & "失敗"
frm_msg.ForeColor = &H0&
End If
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -