• Vb6 TCP Server服务端监听多个RFID读卡器客户端上传的刷卡数据


    本示例使用设备介绍:WIFI无线4G网络RFID云读卡器远程网络开关物流网阅读器TTS语音-淘宝网 (taobao.com) 

    1. Option Explicit
    2. Const BUSY As Boolean = False '定义常量
    3. Const FREE As Boolean = True
    4. Dim ConnectState() As Boolean '定义连接状态
    5. Dim ServerSendbuf() As Byte '数据发送缓冲
    6. Private Sub Check1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    7. If Check1.Value > 0 Then Frame1.Visible = True Else Frame1.Visible = False
    8. End Sub
    9. Private Sub Command1_Click()
    10. initsock
    11. End Sub
    12. Private Sub Command10_Click()
    13. Dim copstr As String
    14. Dim i As Long
    15. Clipboard.Clear
    16. copstr = ""
    17. For i = 0 To List2.ListCount
    18. copstr = copstr & List2.List(i)
    19. copstr = copstr & vbCrLf
    20. Next
    21. Clipboard.SetText (copstr)
    22. MsgBox "TCP通讯报文列表已拷贝!", vbInformation + vbOKOnly, "提示"
    23. End Sub
    24. Private Sub Command2_Click()
    25. GetSendData 5
    26. ButtonSend
    27. End Sub
    28. Private Sub Command3_Click()
    29. Dim i As Integer
    30. Dim sockid As Integer
    31. Dim dispinf As String
    32. On Error Resume Next
    33. For i = List1.ListCount - 1 To 0 Step -1 '要用倒序
    34. If List1.Selected(i) = True Then
    35. sockid = Val(Mid(List1.List(i), 1, 2))
    36. Sock(sockid).Close
    37. ConnectState(sockid) = FREE
    38. dispinf = Format(Now, "HH:MM:SS") & " 连接 " & sockid & " 已关闭"
    39. List2.AddItem (dispinf)
    40. List2.ListIndex = List2.ListCount - 1
    41. List1.RemoveItem i
    42. End If
    43. Next
    44. End Sub
    45. Private Sub Command4_Click()
    46. GetSendData 0
    47. ButtonSend
    48. End Sub
    49. Private Sub Command5_Click()
    50. GetSendData 1
    51. ButtonSend
    52. End Sub
    53. Private Sub Command6_Click()
    54. GetSendData 2
    55. ButtonSend
    56. End Sub
    57. Private Sub Command7_Click()
    58. GetSendData 3
    59. ButtonSend
    60. End Sub
    61. Private Sub Command8_Click()
    62. GetSendData 4
    63. ButtonSend
    64. End Sub
    65. Private Sub Command9_Click()
    66. List2.Clear
    67. End Sub
    68. Private Sub Form_Load()
    69. Dim i As Integer
    70. For i = 1 To 255
    71. Combo9.AddItem (Format(i, "0"))
    72. Next
    73. Combo9.ListIndex = 19
    74. Combo2.ListIndex = 1
    75. Combo3.ListIndex = 0
    76. Combo8.ListIndex = 1
    77. Command1_Click
    78. End Sub
    79. Private Sub Listener_Close()
    80. 'MsgBox "close"
    81. Dim dispinf As String
    82. dispinf = Format(Now, "HH:MM:SS") & " 监听服务已关闭!"
    83. List2.AddItem (dispinf)
    84. List2.ListIndex = List2.ListCount - 1
    85. End Sub
    86. Private Sub Listener_ConnectionRequest(ByVal requestID As Long)
    87. Dim SockIndex As Integer
    88. Dim SockNum As Integer
    89. Dim dispinf As String
    90. Dim onlines As String
    91. On Error Resume Next
    92. dispinf = Format(Now, "HH:MM:SS") & " " & requestID & "连接请求"
    93. SockNum = UBound(ConnectState) '查找连接的用户数
    94. If SockNum > 100 Then
    95. dispinf = dispinf & SockIndex & " ,当前连接数>100,系统不接受新连接!"
    96. List2.AddItem (dispinf)
    97. List2.ListIndex = List2.ListCount - 1
    98. Exit Sub
    99. End If
    100. SockIndex = FindFreeSocket() '查找空闲的sock
    101. If SockIndex > SockNum Then '如果已有的sock都忙,而且sock数不超过15个,动态添加sock
    102. Load Sock(SockIndex)
    103. End If
    104. ConnectState(SockIndex) = BUSY
    105. Sock(SockIndex).LocalPort = 0
    106. Sock(SockIndex).Tag = SockIndex
    107. Sock(SockIndex).Accept (requestID) '接受请求
    108. onlines = Format(SockIndex, "00") & "|" & Format(requestID, "00000") & "|" & Listener.RemoteHostIP & ":" & Listener.RemotePort
    109. dispinf = dispinf & SockIndex & "接受请求," & Listener.RemoteHostIP & ":" & Listener.RemotePort
    110. List1.AddItem (onlines)
    111. List1.ListIndex = List1.ListCount - 1
    112. List1.Selected(List1.ListCount - 1) = True
    113. List2.AddItem (dispinf)
    114. List2.ListIndex = List2.ListCount - 1
    115. End Sub
    116. Private Sub Listener_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    117. 'MsgBox "err"
    118. Dim dispinf As String
    119. dispinf = Format(Now, "HH:MM:SS") & " 监听到异常错误!"
    120. List2.AddItem (dispinf)
    121. List2.ListIndex = List2.ListCount - 1
    122. End Sub
    123. Private Sub Sock_Close(Index As Integer)
    124. Dim dispinf As String
    125. Dim i As Integer
    126. If Sock(Index).State <> sckClosed Then
    127. Sock(Index).Close
    128. End If
    129. ConnectState(Index) = FREE
    130. dispinf = Format(Now, "HH:MM:SS") & " 连接 " & Index & " 已关闭"
    131. List2.AddItem (dispinf)
    132. List2.ListIndex = List2.ListCount - 1
    133. For i = 0 To List1.ListCount - 1
    134. If Val(Mid(List1.List(i), 1, 2)) = Index Then
    135. List1.RemoveItem i
    136. Exit For
    137. End If
    138. Next
    139. End Sub
    140. Private Sub Sock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    141. Dim dx As String
    142. Dim dispinf As String
    143. Dim dispstr As String
    144. Dim i As Integer
    145. Dim TcpData() As Byte
    146. Dim IPort As String
    147. Dim doublecardhao As Double
    148. Dim card10str As String
    149. Sock(Index).GetData TcpData
    150. IPort = Sock(Index).RemoteHostIP & ":" & Sock(Index).RemotePort
    151. For i = 0 To bytesTotal - 1
    152. dispstr = dispstr + Right("00" + Hex(TcpData(i)), 2) + " "
    153. Next
    154. dispinf = Format(Now, "HH:MM:SS") & " FromIP " & IPort & " :" & dispstr
    155. List2.AddItem (dispinf)
    156. List2.ListIndex = List2.ListCount - 1
    157. Select Case TcpData(0)
    158. Case &HC1, &HCF
    159. If TcpData(0) = &HC1 Then
    160. dispstr = "数据解析:接收到IC卡刷卡数据,读卡器IP["
    161. Else
    162. dispstr = "数据解析:接收到IC卡离开读卡器,读卡器IP["
    163. End If
    164. dispstr = dispstr + Trim(Str(TcpData(1))) + "." + Trim(Str(TcpData(2))) + "." + Trim(Str(TcpData(3))) + "." + Trim(Str(TcpData(4)))
    165. dispstr = dispstr + "],机号["
    166. '机号
    167. dispstr = dispstr + Format(Str$(CLng(TcpData(5)) + CLng(TcpData(6)) * 256), "00000")
    168. dispstr = dispstr + "],数据包序号["
    169. '数据包序号,每个包都不一样,按递增1变化
    170. dispstr = dispstr + Format(Str$(CLng(TcpData(7)) + CLng(TcpData(8)) * 256), "00000")
    171. dispstr = dispstr + "],卡号长度[" + Trim(Str(TcpData(9)))
    172. dispstr = dispstr + "],16进制卡号["
    173. For i = 10 To 9 + TcpData(9)
    174. dispstr = dispstr + Right("00" + Hex(TcpData(i)), 2)
    175. Next
    176. doublecardhao = TcpData(13)
    177. doublecardhao = doublecardhao * 256
    178. doublecardhao = doublecardhao + TcpData(12)
    179. doublecardhao = doublecardhao * 256
    180. doublecardhao = doublecardhao + TcpData(11)
    181. doublecardhao = doublecardhao * 256
    182. doublecardhao = doublecardhao + TcpData(10)
    183. card10str = Right("0000000000" + CStr(doublecardhao), 10)
    184. dispstr = dispstr + "],转10进制卡号[" + card10str
    185. dispstr = dispstr + "],唯一硬件序号["
    186. For i = 10 + TcpData(9) To bytesTotal - 1
    187. dispstr = dispstr + Right("00" + Hex(TcpData(i)), 2)
    188. Next
    189. dispstr = dispstr + "]"
    190. List2.AddItem (dispstr)
    191. List2.AddItem ("")
    192. List2.ListIndex = List2.ListCount - 1
    193. If Check1.Value > 0 Then Response Index, IPort
    194. Case &HD1, &HDF
    195. If TcpData(0) = &HD1 Then
    196. dispstr = "数据解析:接收到ID卡刷卡数据,读卡器IP["
    197. Else
    198. dispstr = "数据解析:接收到ID卡离开读卡器,读卡器IP["
    199. End If
    200. dispstr = dispstr + Trim(Str(TcpData(1))) + "." + Trim(Str(TcpData(2))) + "." + Trim(Str(TcpData(3))) + "." + Trim(Str(TcpData(4)))
    201. dispstr = dispstr + "],机号["
    202. '机号
    203. dispstr = dispstr + Format(Str$(CLng(TcpData(5)) + CLng(TcpData(6)) * 256), "00000")
    204. dispstr = dispstr + "],数据包序号["
    205. '数据包序号,每个包都不一样,按递增1变化
    206. dispstr = dispstr + Format(Str$(CLng(TcpData(7)) + CLng(TcpData(8)) * 256), "00000")
    207. doublecardhao = TcpData(12)
    208. doublecardhao = doublecardhao * 256
    209. doublecardhao = doublecardhao + TcpData(11)
    210. doublecardhao = doublecardhao * 256
    211. doublecardhao = doublecardhao + TcpData(10)
    212. doublecardhao = doublecardhao * 256
    213. doublecardhao = doublecardhao + TcpData(9)
    214. card10str = Right("0000000000" + CStr(doublecardhao), 10)
    215. dispstr = dispstr + "],16进制卡号["
    216. dispstr = dispstr + Right("00" + Hex(TcpData(9)), 2) + Right("00" + Hex(TcpData(10)), 2) + Right("00" + Hex(TcpData(11)), 2) + Right("00" + Hex(TcpData(12)), 2) + Right("00" + Hex(TcpData(13)), 2) + "],转10进制卡号[" + card10str
    217. dispstr = dispstr + "],唯一硬件序号["
    218. For i = 14 To bytesTotal - 1
    219. dispstr = dispstr + Right("00" + Hex(TcpData(i)), 2)
    220. Next
    221. dispstr = dispstr + "]"
    222. List2.AddItem (dispstr)
    223. List2.AddItem ("")
    224. List2.ListIndex = List2.ListCount - 1
    225. If Check1.Value > 0 Then Response Index, IPort
    226. Case &HF3
    227. dispstr = "数据解析:接收到读卡器心跳包,读卡器IP["
    228. dispstr = dispstr + Trim(Str(TcpData(1))) + "." + Trim(Str(TcpData(2))) + "." + Trim(Str(TcpData(3))) + "." + Trim(Str(TcpData(4)))
    229. dispstr = dispstr + "],机号["
    230. '机号
    231. dispstr = dispstr + Format(Str$(CLng(TcpData(5)) + CLng(TcpData(6)) * 256), "00000")
    232. dispstr = dispstr + "],数据包序号["
    233. '数据包序号,每个包都不一样,按递增1变化
    234. dispstr = dispstr + Format(Str$(CLng(TcpData(7)) + CLng(TcpData(8)) * 256), "00000") + "],"
    235. dispstr = dispstr + "心跳包类型[" + Right("00" + Hex(TcpData(9)), 2) + "],"
    236. dispstr = dispstr + "长度[" + Right("00" + Hex(TcpData(10)), 2) + "],"
    237. dispstr = dispstr + "继电器状态[" + Right("00" + Hex(TcpData(11)), 2) + "],"
    238. dispstr = dispstr + "外部输入状态[" + Right("00" + Hex(TcpData(12)), 2) + "],"
    239. dispstr = dispstr + "随机动态码[" + Right("00" + Hex(TcpData(13)), 2) + Right("00" + Hex(TcpData(14)), 2) + Right("00" + Hex(TcpData(15)), 2) + Right("00" + Hex(TcpData(16)), 2) + "],"
    240. dispstr = dispstr + "唯一硬件序号["
    241. For i = 17 To bytesTotal - 1
    242. dispstr = dispstr + Right("00" + Hex(TcpData(i)), 2)
    243. Next
    244. dispstr = dispstr + "]"
    245. List2.AddItem (dispstr)
    246. List2.AddItem ("")
    247. List2.ListIndex = List2.ListCount - 1
    248. End Select
    249. End Sub
    250. Public Function FindFreeSocket() '寻找空闲的sock
    251. Dim SockCount, i As Integer
    252. SockCount = UBound(ConnectState)
    253. For i = 0 To SockCount
    254. If ConnectState(i) = FREE Then
    255. FindFreeSocket = i
    256. Exit Function
    257. End If
    258. Next i
    259. ReDim Preserve ConnectState(0 To SockCount + 1)
    260. FindFreeSocket = UBound(ConnectState)
    261. End Function
    262. Private Sub initsock()
    263. Dim dispinf As String
    264. ReDim Preserve ConnectState(0 To 1)
    265. On Error GoTo err1
    266. ConnectState(0) = FREE
    267. ConnectState(1) = FREE
    268. If Listener.State = sckClosed Then
    269. Listener.LocalPort = CLng(Text1.Text) '指定网络端口号
    270. Listener.Listen '开始侦听
    271. dispinf = Format(Now, "HH:MM:SS") & " 已创建监听服务!可以接收客户端的连接请求。"
    272. List2.AddItem (dispinf)
    273. List2.ListIndex = List2.ListCount - 1
    274. Command1.Caption = "关闭监听服务"
    275. Else
    276. Listener.Close
    277. dispinf = Format(Now, "HH:MM:SS") & " 已关闭监听服务!不再接受新的客户端连接请求,已连接的客户端还可以通讯。"
    278. List2.AddItem (dispinf)
    279. List2.ListIndex = List2.ListCount - 1
    280. Command1.Caption = "创建监听服务"
    281. End If
    282. Exit Sub
    283. err1:
    284. dispinf = Format(Now, "HH:MM:SS") & " 开启监听服务时出现错误:" & Err.Number & Err.Description
    285. List2.AddItem (dispinf)
    286. List2.ListIndex = List2.ListCount - 1
    287. End Sub
    288. Private Sub Sock_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    289. Dim dispinf As String
    290. Dim i As Integer
    291. If Sock(Index).State <> sckClosed Then
    292. Sock(Index).Close
    293. End If
    294. ConnectState(Index) = FREE
    295. dispinf = Format(Now, "HH:MM:SS") & " 连接 " & Index & " 错误提示:" & Description
    296. List2.AddItem (dispinf)
    297. List2.ListIndex = List2.ListCount - 1
    298. For i = 0 To List1.ListCount - 1
    299. If Val(Mid(List1.List(i), 1, 2)) = Index Then
    300. List1.RemoveItem i
    301. Exit For
    302. End If
    303. Next
    304. End Sub
    305. Private Sub Text5_Click()
    306. Shell Environ("PROGRAMFILES") & "\Internet Explorer\iexplore.exe " & Trim(Text5)
    307. End Sub
    308. Private Sub Response(Index As Integer, IPort As String)
    309. On Error GoTo err1
    310. If Check1.Value > 0 Then
    311. If Option1(0) Then
    312. GetSendData 0
    313. ElseIf Option1(1) Then
    314. GetSendData 1
    315. ElseIf Option1(2) Then
    316. GetSendData 2
    317. Else
    318. GetSendData 3
    319. End If
    320. End If
    321. Dim dispinf As String
    322. Dim sendstr As String
    323. Dim i As Integer
    324. On Error GoTo err1
    325. For i = 0 To UBound(ServerSendbuf)
    326. sendstr = sendstr + Right("00" + Hex(ServerSendbuf(i)), 2) + " "
    327. Next
    328. Sock(Index).SendData ServerSendbuf
    329. dispinf = Format(Now, "HH:MM:SS") & " SendTo " & IPort & " :" & sendstr
    330. List2.AddItem (dispinf)
    331. List2.AddItem ("")
    332. List2.ListIndex = List2.ListCount - 1
    333. Exit Sub
    334. err1:
    335. dispinf = Format(Now, "HH:MM:SS") & " 连接 " & Index & " 传送数据时出错:" & Err.Description
    336. List2.AddItem (dispinf)
    337. List2.ListIndex = List2.ListCount - 1
    338. List1.RemoveItem i
    339. End Sub
    340. Private Sub ButtonSend()
    341. Dim dataArray() As String
    342. Dim sendstr As String
    343. Dim IPort As String
    344. Dim i As Integer
    345. Dim sockid As Integer
    346. Dim dispinf As String
    347. On Error GoTo err1
    348. For i = 0 To UBound(ServerSendbuf)
    349. sendstr = sendstr + Right("00" + Hex(ServerSendbuf(i)), 2) + " "
    350. Next
    351. For i = 0 To List1.ListCount - 1
    352. If List1.Selected(i) = True Then
    353. sockid = Val(Mid(List1.List(i), 1, 2))
    354. Sock(sockid).SendData ServerSendbuf
    355. dataArray = Split(List1.List(i), "|")
    356. IPort = dataArray(2)
    357. dispinf = Format(Now, "HH:MM:SS") & " SendTo " & IPort & " :" & sendstr
    358. List2.AddItem (dispinf)
    359. List2.AddItem ("")
    360. List2.ListIndex = List2.ListCount - 1
    361. End If
    362. Next
    363. Exit Sub
    364. err1:
    365. dispinf = Format(Now, "HH:MM:SS") & " 连接 " & sockid & " 传送数据时出错:" & Err.Description
    366. List2.AddItem (dispinf)
    367. List2.ListIndex = List2.ListCount - 1
    368. List1.RemoveItem i
    369. End Sub
    370. Private Sub GetSendData(responseid As Integer) '生成服务器发送缓冲数据
    371. Dim i, J As Integer
    372. Dim longi As Long
    373. Dim dispinf As String
    374. Dim strls As String
    375. Dim lensy, displen, sendbyte As Integer
    376. Dim textbyte() As Byte
    377. Select Case responseid
    378. Case 0 '生成显示文字发送数据缓冲
    379. ReDim ServerSendbuf(38)
    380. ServerSendbuf(0) = &H5A '命令字,表示驱动蜂鸣器声响
    381. ServerSendbuf(1) = 0
    382. ServerSendbuf(2) = 0
    383. If Check2.Value = 1 Then
    384. ServerSendbuf(3) = Combo2.ListIndex '声音类型
    385. If Option12.Value = True Then
    386. ServerSendbuf(3) = ServerSendbuf(3) Or 128
    387. End If
    388. Else
    389. ServerSendbuf(3) = &HFF '不发音
    390. If Option12.Value = True Then
    391. ServerSendbuf(3) = ServerSendbuf(3) And 127
    392. End If
    393. End If
    394. ServerSendbuf(4) = Combo9.ListIndex '20 '显示保留时间,单位为秒,为255时表示永久显示
    395. strls = Text7.Text + " "
    396. textbyte = StrConv(strls, vbFromUnicode) '字符串转换为字节数组
    397. For i = 0 To 33
    398. ServerSendbuf(i + 5) = textbyte(i)
    399. Next
    400. Case 1 '生成显示文字+蜂鸣响声+继电器+TTS语音发送数据缓冲
    401. strls = "[v"
    402. If (Combo8.ListIndex <= 16) Then strls = strls & Format(Combo8.ListIndex, "0") & "]" Else strls = strls & "16]" '在需要发送的语音字符串中任何位置加入[v10],表示将音量调到10级(范围0~16,0表示静音,16最大,每次重开机后,音量重置为10级)!
    403. strls = strls & Trim(Text3.Text)
    404. textbyte = StrConv(strls, vbFromUnicode) '字符串转换为字节数组
    405. lensy = UBound(textbyte) + 1
    406. displen = 34 '双行屏34,四行屏72
    407. sendbyte = 11 + displen + lensy + 4
    408. ReDim ServerSendbuf(sendbyte)
    409. ServerSendbuf(0) = &H5C '命令字,表示驱动TTS合成语音\显示及继电器
    410. ServerSendbuf(1) = 0
    411. ServerSendbuf(2) = 0
    412. If Check2.Value = 1 Then
    413. ServerSendbuf(3) = Combo2.ListIndex '声音类型
    414. If Option12.Value = True Then
    415. ServerSendbuf(3) = ServerSendbuf(3) Or 128
    416. End If
    417. Else
    418. ServerSendbuf(3) = &HFF '不发音
    419. If Option12.Value = True Then
    420. ServerSendbuf(3) = ServerSendbuf(3) And 127
    421. End If
    422. End If
    423. Select Case Combo3.ListIndex
    424. Case 1
    425. ServerSendbuf(4) = &HF1
    426. Case 2
    427. ServerSendbuf(4) = &HF2
    428. Case 3
    429. ServerSendbuf(4) = &HF3
    430. Case 4
    431. ServerSendbuf(4) = &HF4
    432. Case 5
    433. ServerSendbuf(4) = &HF5
    434. Case 6
    435. ServerSendbuf(4) = &HF6
    436. Case 7
    437. ServerSendbuf(4) = &HF7
    438. Case 8
    439. ServerSendbuf(4) = &HF8
    440. Case Else
    441. ServerSendbuf(4) = &HF0
    442. End Select
    443. '时长
    444. i = Val(Trim(Text30.Text))
    445. ServerSendbuf(5) = i Mod 256
    446. ServerSendbuf(6) = Int(i / 256) Mod 256
    447. ServerSendbuf(7) = Combo9.ListIndex '20 '显示保留时间,单位为秒,为255时表示永久显示
    448. ServerSendbuf(8) = 0 '在显示屏中的哪个位置开始
    449. ServerSendbuf(9) = displen '显示字符串长度 0-34为全屏
    450. strls = Text7.Text + " "
    451. Dim a() As Byte
    452. a = StrConv(strls, vbFromUnicode) '字符串转换为字节数组
    453. For i = 1 To displen '显示文字的ASCII码
    454. ServerSendbuf(i + 10) = a(i - 1)
    455. Next
    456. ServerSendbuf(10) = lensy '语音长度,最长可为126
    457. For i = 1 To lensy 'TTS语音的ASCII码
    458. ServerSendbuf(i + 10 + displen) = textbyte(i - 1)
    459. Next
    460. ServerSendbuf(10 + ServerSendbuf(9) + lensy + 1) = &H55
    461. ServerSendbuf(10 + ServerSendbuf(9) + lensy + 2) = &HAA
    462. ServerSendbuf(10 + ServerSendbuf(9) + lensy + 3) = &H66
    463. ServerSendbuf(10 + ServerSendbuf(9) + lensy + 4) = &H99
    464. Case 2 '生成蜂鸣响声发送数据缓冲
    465. ReDim ServerSendbuf(3)
    466. ServerSendbuf(0) = &H96 '命令字,表示驱动蜂鸣器声响
    467. ServerSendbuf(1) = 0 'Tcp通讯,机号00表示任意机器
    468. ServerSendbuf(2) = 0
    469. ServerSendbuf(3) = Combo2.ListIndex '声音类型
    470. Case 3 '生成继电器开关发送数据缓冲
    471. ReDim ServerSendbuf(5)
    472. ServerSendbuf(0) = &H78 '命令字,表示驱动蜂鸣器声响
    473. ServerSendbuf(1) = 0 'Tcp通讯,机号00表示任意机器
    474. ServerSendbuf(2) = 0
    475. Select Case Combo3.ListIndex
    476. Case 1
    477. ServerSendbuf(3) = &HF1
    478. Case 2
    479. ServerSendbuf(3) = &HF2
    480. Case 3
    481. ServerSendbuf(3) = &HF3
    482. Case 4
    483. ServerSendbuf(3) = &HF4
    484. Case 5
    485. ServerSendbuf(3) = &HF5
    486. Case 6
    487. ServerSendbuf(3) = &HF6
    488. Case 7
    489. ServerSendbuf(3) = &HF7
    490. Case 8
    491. ServerSendbuf(3) = &HF8
    492. Case Else
    493. ServerSendbuf(3) = &HF0
    494. End Select
    495. i = Val(Trim(Text30.Text)) '时长
    496. ServerSendbuf(4) = i Mod 256
    497. ServerSendbuf(5) = Int(i / 256) Mod 256
    498. Case 4 '生成继电器开关发送数据缓冲
    499. ReDim ServerSendbuf(5)
    500. ServerSendbuf(0) = &H78 '命令字,表示驱动蜂鸣器声响
    501. ServerSendbuf(1) = 0 'Tcp通讯,机号00表示任意机器
    502. ServerSendbuf(2) = 0
    503. Select Case Combo3.ListIndex
    504. Case 1
    505. ServerSendbuf(3) = &HE1
    506. Case 2
    507. ServerSendbuf(3) = &HE2
    508. Case 3
    509. ServerSendbuf(3) = &HE3
    510. Case 4
    511. ServerSendbuf(3) = &HE4
    512. Case 5
    513. ServerSendbuf(3) = &HE5
    514. Case 6
    515. ServerSendbuf(3) = &HE6
    516. Case 7
    517. ServerSendbuf(3) = &HE7
    518. Case 8
    519. ServerSendbuf(3) = &HE8
    520. Case Else
    521. ServerSendbuf(3) = &HE0
    522. End Select
    523. i = Val(Trim(Text30.Text)) '时长
    524. ServerSendbuf(4) = i Mod 256
    525. ServerSendbuf(5) = Int(i / 256) Mod 256
    526. Case 5 '生成重发刷卡数据发送数据缓冲
    527. ReDim ServerSendbuf(2)
    528. ServerSendbuf(0) = &HA7 '命令字:重新获取刷卡信息
    529. ServerSendbuf(1) = 0 'Tcp通讯,机号00表示任意机器
    530. ServerSendbuf(2) = 0
    531. End Select
    532. End Sub

     

  • 相关阅读:
    学习笔记11--其他相关安全标准与技术
    nginx 的进程建通信机制-共享内存/channel/信号
    drawio特性
    js亮瞎你眼的日期选择器
    宝塔人机识别验证
    JavaScript内置对象 - Array数组(四)- 序列生成器
    【FNN分类】基于粒子群结合引力搜索算法优化前向反馈神经网络实现数据分类附matlab代码
    快速入门Git
    Kyligence 副总裁周涛:创新数据能力,驱动银行业数字化转型|爱分析活动
    leetcode/爬楼梯的最少成本
  • 原文地址:https://blog.csdn.net/zhangjin7422/article/details/134266577