类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
我将我的mode上电后就会有很多数据返回,在串口监测工具都看得很清楚的,但是我的OnComm 怎么会没有反映?主要是什么原因啊?
Private Sub MSComm1_OnComm() 串口中断
On Error Resume Next
Static bFlag As Boolean
Static Xbyte As Long
Select Case MSComm1.CommEvent 选择事件
Case comEvReceive 接收到字符
Dim InByte() As Byte 定义一个二进制指针放接收到的数据
InByte = MSComm1.Input 数据转移到指针
Dim temp As Long
Dim temp1 As Long
Dim temp2 As Long
Dim j As Long
For j = 0 To UBound(InByte) 循环到指针上标
。
。
。
。
网友回答:
要选设置串口.
Private Sub Form_Load()
MSComm1.InBufferSize = 5120
MSComm1.OutBufferSize = 2560
MSComm1.CommPort = 1
设置波特率为4800,没有奇偶校验,8位数据位,1位结束位
MSComm1.Settings = "4800,N,8,1"
读取全部的输入缓冲区
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
端口打开
MSComm1.PortOpen = True
MSComm1.RThreshold = 1 这个属性设定当收到多少个字符时触发 "MSComm1_OnComm" 事件.
MSComm1.SThreshold = 1
End Sub
接收信息就在MSComm1中的OnComm事件.
Private Sub MSComm1_OnComm()
Dim ST As String
ST = MSComm1.Input接收信息
debug.print st将接收到的信息打印出来
End Sub
是不是通讯端口号、波特率、奇偶校验、数据位、停止位设置不正确?
设置以下串口的属性:
CommPort 设置并返回通讯端口号。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。
Input 从接收缓冲区返回和删除字符。
Output 向传输缓冲区写一个字符串。
MSComm1.Output = "at+csq" & vbcrlf
关注,帮你顶!
MSComm1.RThreshold = 1
你一定这个地方设置的是 0 ,这个就不会响应oncomm事件,一定要设置值
MSComm1.RThreshold 不一定要设置成1啊,那要看你的输入缓冲有多大,设成1是只要有东西进来就触发一次
当然不一定要设置1,我的意思是要设置值,2,3,等都可以,意思是设置多少,就是接收到多少促发oncomm事件
应该是读取之后没有清空缓冲区。至于RThreshold的值不一定必须为1,可以根据自己的条件和实际情况进行设置,不过一般设置为1,便于当有数据就产生消息
1、这部分信息是在MSComm1.Output = "at+csq" & Chr(13) & Chr(10)产生的吗?
at+csq
+CSQ: 20,99
OK
2、从现象看:你直接通过键盘输入送到串口与通过
MSComm1.Output = "at+csq" & Chr(13) & Chr(10)发送到串口,
有一个差别,就是前者的发送是间歇性的,比较慢,而后者是连续性的,比较快。
是否下位机的处理速度比较慢?
如果是下位机的处理速度比较慢,可在发送时加入等待,试试如下:
Dim Str As String
Dim I As Integer
Dim J As Integer
Str = "at+csq" & Chr(13) & Chr(10)
For I = 1 To Len(Str)
MSComm1.Output = Mid(Str, I, 1)
For J = 0 To 3 (调整这里的等待时间)
DoEvents
Next J
Next I
还是没用啊,
Dim a
a = MSComm1.Input
If Len(a) > 0 Then
Text1.Text = Text1.Text & vbCrLf & StrConv(a, vbUnicode) & vbCrLf
Else
Text1.Text = Text1.Text & vbCrLf & "串口没有回应"
End If
为什么总是出现 "串口没有回应"啊?
我监测到a 总是空的,是不是和我有设置OnComm有关啊?我RThreshold 为 1。