急急急!求助大神哪里错了!可有偿!qq306485773

baidu_28662503 2017-04-16 09:18:47
vb连接rs232串口,插上串口就一直发送下面这样的asc码,H开头,Z结尾为一组数据,现在要把实时的一组数赋给字符串str1,一直崩溃!
代码如下:
With MSComm1
.CommPort = 1 '设置Com1为通信端口
.Settings = "9600,N,8,1"
.InBufferSize = 1024 '设置缓冲区接收数据为1024字节
.OutBufferSize = 512
.InputMode = comInputModeBinary '设置数据接收模式为16进制形式
.InputLen = 1 '设置Input一次从接收缓冲读取字节数为1
.RThreshold = 1 '设置接收一个字节就产生OnComm事件
.SThreshold = 1
.OutBufferCount = 0 '清空发送缓冲区
.InBufferCount = 0 '滑空接收缓冲区
If Not .PortOpen Then
.PortOpen = True '打开通信端口
End If
End With

Dim str1 As String
Dim str_tmp2 As String
Dim l1 As Integer
Dim f1 As Boolean

str1 = ""
f1 = False
l1 = 0
Do While (1)
str_tmp2 = MSComm1.Input
If f1 Then
str1 = str1 & str_tmp2
l1 = l1 + 1
End If
If (str_tmp2 = "H") Then
f1 = True
Else
If l1 >= 8 Then
f1 = False
Exit Do
End If
End If
Loop



qq306485773
...全文
720 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_28662503 2018-02-01
  • 打赏
  • 举报
回复
With MSComm1
         .CommPort = 4                                   '设置Com4为通信端口
         .Settings = "9600,N,8,1"                    '设置通信端口参数 9600赫兹,无校验位,8个数据位,1个停止位
         .InBufferSize = 1024                           '设置缓冲区接收数据为1024字节
         .OutBufferSize = 512
         .InputMode = comInputModeText     '设置数据接收模式为16进制形式
         .InputLen = 1                                       '设置Input一次从接收缓冲读取字节数为1
         .RThreshold = 1                                  '设置接收一个字节就产生OnComm事件
         .SThreshold = 1
         .OutBufferCount = 0                           '清空发送缓冲区
         .InBufferCount = 0                              '滑空接收缓冲区
          If Not .PortOpen Then
             .PortOpen = True                            '打开通信端口
           End If
    End With
zdingyun 2017-05-31
  • 打赏
  • 举报
回复
从LZ接收代码看是字符串拼接,那么接收模式应取文本接收。
zdingyun 2017-05-31
  • 打赏
  • 举报
回复
InputMode = comInputModeBinary ,这是设置以二进制模设接收数据,非十六进制接收! InputLen = 1,设置为0,全部读入达到接收缓冲区的数据。 SThreshold = 1,不需要设置 所谓十六进制仅是将接收的ASCII码转换为2字符的十六进制字符串显示而已。 vb连接rs232串口,插上串口就一直发送下面这样的asc码,H开头,Z结尾为一组数据,现在要把实时的一组数赋给字符串str1,一直崩溃! LZ的没表达清晰,实时的一组数据是发送的还是接收的? 具体代码参考: 串口调试软件
shiguangxin 2017-05-31
  • 打赏
  • 举报
回复
赵老师这次回答的靠谱 啊啊
赵4老师 2017-04-26
  • 打赏
  • 举报
回复
注释掉所有On Error Resume Next语句,在VB6 IDE中运行, 出错后点击调试,光标会停在出错的那条语句处, 或者 事先在怀疑可能有逻辑错误的语句处设置断点,运行经过断点时中断, 此时可以在立即窗口中使用 ?变量名 或 ?函数名(函数参数) 或 过程名(参数) 辅助调试。
of123 2017-04-25
  • 打赏
  • 举报
回复
如果是固定长度的: .RThreshold = 10 '设置接收十个字节产生OnComm事件 str_tmp2 = MSComm1.Input
tanta 2017-04-25
  • 打赏
  • 举报
回复
跟踪调试,跟踪调试,跟踪调试,重要的事情说三遍。
赵4老师 2017-04-17
  • 打赏
  • 举报
回复
baidu_28662503 2017-04-16
  • 打赏
  • 举报
回复
有偿啊有偿啊!!

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧