本人正在做一个串口通信程序,要求当PC机送出数据20秒后,单片机要是没有回应,则重新发送数据,怎么实现?
怎么用定时器?
怎么知道PC机的onCOMM没有接收到数据?
怎么用定时器?
怎么知道PC机的onCOMM没有接收到数据?
解决方案 »
- vb Stream 实时错误 '3004' 写入文件失败
- 输出到Excel。下列代码哪错了?
- 新手问题:帮我看看这个是错在那里?
- ★★★★本人因恋爱需要,希望在武汉找一份兼职★★★★
- 谁知道用友U8里用的GRID控件是什么控件?
- 怎样使用API函数GetModuleHandle,请举例。
- 如何用代码实现EXCEL表格所有内容左对齐
- VB向ACCESS里插入数据,总是插不进数据!
- datagrid控件与sql server数据库如何用ado连接?(很着急)(速答速给分)
- 问个很弱智的问题,vb的api文本浏览器如何打开?
- VB 如何在局域网内实现FTP 传输?
- **ActiveX在线录音控件中使用mp3enc.ocx进行格式转的问题**
Option Explicit
Dim strData As StringPrivate Sub Command1_Click()
Timer1.Enabled = True
End SubPrivate Sub Form_Load()
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
Timer1.Enabled = False
Timer1.Interval = 20000 '20秒
End SubPrivate Sub MsComm1_OnComm()
Dim intInputLen As Integer
Select Case Me.MSComm1.CommEvent
Case comEvReceive
'此处添加处理接收的代码
strData = strData & MSComm1.Input
If strData <> "" Then
Timer1.Enabled = False '
End If
End Select
End SubPrivate Sub Timer1_Timer()
MSComm1.Output = "ABCD"
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 3
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary
MSComm1.InputLen = 0 '读取缓冲区的全部内容
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
MSComm1.RThreshold = 1 '4表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
MSComm1.SThreshold = 1 '4表示每当串口输出缓冲区中字符小于2个时将引发一个OnComm事件
End Sub
Private Sub MSComm1_OnComm()
Dim i As Integer
Dim k As Integer
Dim p As Integer
Dim j As Integer
Dim ptr() As Byte
Dim crcdata() As Byte
Dim comerr As Boolean
Dim Arr() As Byte
Static precommand As Integer
Static resendnum As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
indata = MSComm1.Input
If indata <> Empty Then
Timer1.Enabled = False
End If End Select
End Sub
If indata <> Empty提示不匹配,怎么修改,我的输入模式是而进制
Timer1.Enabled = False
End If 这个判断也就没意思了?
Option Explicit
Dim strData As StringPrivate Sub Command1_Click()
Timer1.Enabled = True
End SubPrivate Sub Form_Load()
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeBinary '二进制接收
MSComm1.PortOpen = True
Timer1.Enabled = False
Timer1.Interval = 20000 '20秒
End SubPrivate Sub MsComm1_OnComm()
Dim intInputLen As Integer
Select Case Me.MSComm1.CommEvent
Case comEvReceive
'此处添加处理接收的代码
intInputLen = MSComm1.InBufferCount
ReDim bytInput(intInputLen)
bytInput = Me.MSComm1.Input
For i = 0 To UBound(bytInput)
If Len(Hex(bytInput(i))) = 1 Then
strData = strData & "0" & Hex(bytInput(i))
Else
strData = strData & Hex(bytInput(i))
End If
Next
If strData <> "" Then
Timer1.Enabled = False '
End If
End Select
End Sub