IIA首页    新闻      案例      工业经理人
      产品         技术      专题      工程师社区
      学院         下载      视频      在线研讨会
现场层       传感器    现场仪表   工业安全
现场总线  工业以太网   工业无线  工业连接
机器视觉    测试测量   执行机构   电子元件
机器控制/过程控制     PLC    DCS
 控制系统  控制软件   HMI   运动控制
 嵌入式系统   工业机器人
优化/集成/管理
MES    PLM    工业数据中心
能效管理    设备管理与维护
可持续发展技术专题 2011汉诺威工业博览会回顾
 

问答

Q&A

VB 串口老是下标越界,我ReDim comBUF(0 To 256)有257个数的了
悬赏分:0 - 解决时间:2007-11-14 09:48:45
出来下标越界后点调试后
FileBUF(FileCOUNT) = comBUF(comI)
就指在这一行
把鼠标放到comBUF(comI)上显示comBUF(comI)=<下标越界>
把鼠标放到comI上显示comI=7
才7啊怎么就越界了啊 有时是二十几等
反正都没越界他脚说越界了
问题补充:2个COM口波特率设置差一倍
我一个不断发送的设为9600
当接收的也设为9600时很正常
当接收的设为4800时CommEvent等于1004(帧错误。)但不提示下标越界
当接收的设为19200时CommEvent也是1004(帧错误。)不过这一开就立马出来下标越界了
此时comBUF(comI)的comI才等于7不知道怎么就越界了,但这肯定是帧错误引起的,就是不明白这与下标越界有什么关系。想不通
提问者:jsjjccc - 经理 五级
最佳答案
未见到你的全部代码,无法确定出错原因。下面提供能正常运行的代码: Option Explicit Dim strData As String Private Sub Form_Load() Timer2.Interval = 10 MSComm1.Settings = "9600,n,8,1" MSComm1.CommPort = 1 MSComm1.RThreshold = 1 MSComm1.PortOpen = True End Sub Private Sub MsComm1_OnComm() Dim intInputLen As Integer Select Case Me.MSComm1.CommEvent Case comEvReceive '此处添加处理接收的代码 Me.MSComm1.InputMode = comInputModeBinary '二进制接收 intInputLen = Me.MSComm1.InBufferCount ReDim bytInput(intInputLen) bytInput = Me.MSComm1.Input jieshou End Select End Sub Public Function jieshou() '接收数据处理为16进制 Dim i As Integer 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 Text1 = strData End Function 补充: 帧错误 解释以下帧,在最早的串口异步通信中定义一字节的二进制信号7位或8位加起始位和停止位组成一帧信号。出现帧错误可能由于单片机的时基发生变化,使得波特率发生变化,与接收端的设置波特率不一致,导致数据接收出错。 这可由试验来看: 2个COM口波特率设置差一倍 MSComm1.Settings = "4800,n,8,1" MSComm2.Settings = "9600,n,8,1" 当 MSComm1.Output = "12345678" 发送8字节数据,而MSComm2接收16字节数据,大相径庭。 其二原因,可能是上下位机的奇偶校验设置不同,也会造成数据出错。 其三原因,串口连接线过长或受电磁干扰。
回答者:未见到你的全部代码,无法确定出错原因。下 -副总裁 十一级 11-08 15:25:31
对最佳答案的评论:
评论字数200字以内

验证码: 看不清

 

搜企
首页 | 国际金属加工网 | 造车网 | 会员 | 主题信息 | 自动化问答 | 网站地图 | 免责声明 | 关于我们 | 主编信箱
北京市朝阳区东四环中路58号远洋国际中心C座2402室 电话: 010-65307950 传真: 010-65307859
Copyright ©1997-2012 IIA News.com & SooQ. All rights reserved.