⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendt.bas

📁 通过PC机的串口和单片机等嵌入式下位机通信
💻 BAS
字号:
Attribute VB_Name = "SendT"
'发送系统时间的协议到下位机
Public Sub SendTimeP()
On Error GoTo fail

Dim sendsystemtime(3) As Byte   '发送时间协议
For i = 0 To 2                  '协议赋值
  sendsystemtime(i) = &HFE
Next i
sendsystemtime(3) = &H7C

If intComPort = 0 Then
   k = MsgBox("端口无效!请选择正确的端口后再发送.", vbCritical, "错误")
   Exit Sub
End If

If Main.MSComm.PortOpen Then
  Main.MSComm.PortOpen = False
End If
Main.MSComm.InputMode = comInputModeBinary
Main.MSComm.CommPort = intComPort
Main.MSComm.PortOpen = True              '开端口
Main.MSComm.Output = sendsystemtime      '发送三个FE
Main.Status.Caption = "时间发送中....."
SendMode = 3                              '等待返回一个FE
Main.Sendtime.Enabled = False
fail:
End Sub
'发送时间到下位机
Public Sub SendTimeTo()
On Error GoTo fail

Dim Nowtime(7) As Byte
'时间赋值
If Main.systimeOption.Value Then
  Nowtime(0) = second(Now)
  Nowtime(1) = minute(Now)
  Nowtime(2) = hour(Now)
  Nowtime(3) = day(Now)
  Nowtime(4) = Weekday(Now) - 1
  Nowtime(5) = month(Now)
  Nowtime(6) = year(Now) - 2000
Else
  Nowtime(0) = second(Main.Systemtime.Text)
  Nowtime(1) = minute(Main.Systemtime.Text)
  Nowtime(2) = hour(Main.Systemtime.Text)
  Nowtime(3) = day(Main.Systemtime.Text)
  Nowtime(4) = Weekday(Main.Systemtime.Text) - 1
  Nowtime(5) = month(Main.Systemtime.Text)
  Nowtime(6) = year(Main.Systemtime.Text) - 2000
End If
Nowtime(7) = &H7C
For i = 0 To 6                    'BCD码转换过程
  If Nowtime(i) > 9 Then
    Nowtime(i) = ConvertBCD(Nowtime(i))
  End If
Next i
Nowtime(5) = Nowtime(5) + 128      '月份的特殊处理

If Main.MSComm.PortOpen Then
  Main.MSComm.PortOpen = False
End If
Main.MSComm.CommPort = intComPort
Main.MSComm.PortOpen = True

Main.MSComm.Output = Nowtime         '把时间串发送
Main.MSComm.PortOpen = False
Main.Sendtime.Enabled = True
Main.Status.Caption = "时间发送成功!"

SendMode = 0                 '恢复接收模式

fail:
If Err.Number = 13 Then
  k = MsgBox("类型不匹配,请检查时间格式是否正确或使用系统时间.", vbCritical, "错误")
  Main.Status.Caption = "时间配置失败!"
  Main.Sendtime.Enabled = True
  Main.MSComm.PortOpen = False
  Exit Sub
End If
End Sub

'BCD码转换函数
Public Function ConvertBCD(byt As Byte) As Byte
Dim High As Byte
Dim Low As Byte
High = byt \ 10
Low = byt Mod 10
High = High * 16
ConvertBCD = High + Low
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -