串口问题

sunny8226 2004-09-16 08:16:25
做串口调试,用字符串接收。点击COMMAND后发送,如果连续发的话有时候会出现下面情况:
ONCOMM事件触发了接收事件,但是运行到读取的语句:v1= mscomm1.input时,程序死掉,等程序“反应”过来后,所读取的数据是乱码,但是同时用另一串口调试工具来检测,返回数据是正确的。
请问问题可能出现在哪里啊??
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
efengxu 2004-09-17
  • 打赏
  • 举报
回复
INBUFFERSIZE属性的设置可以改变的,可根据你接受数据多少自己设定
sunny8226 2004-09-17
  • 打赏
  • 举报
回复
COM控件的INBUFFERSIZE属性的设置,默认是1024,其他还有哪些值可以设啊?随便什么数值吗?


还有我运行VB时,有时候总是说“****”内存指令不能为读,调试程序选确定,结束选取消。有时候IE也会这样,请问这是为什么
熊孩子开学喽 2004-09-17
  • 打赏
  • 举报
回复
DoEvents是为了在作某些CPU占用比较高的操作是将资源释放,不至于造成类似“死机”的效果。因为串口的通讯速度比较慢,所以在接受比较长的数据时会占用比较多的时间,加上这一句之后,程序相对“活泼”一些。
你的程序的问题可能在于你的数据接受缓冲太小。
看看你的COM控件的INBUFFERSIZE属性的设置。
还有一个可能,看看的COM控件的接受数据类型,
有两种接受方式,文本方式和二进制方式,
估计也有可能是你没有设置成和上位机一致。
sunny8226 2004-09-16
  • 打赏
  • 举报
回复
请问楼上的,DoEvents有什么作用吗?
tztz520 2004-09-16
  • 打赏
  • 举报
回复
Private Sub MSComm1_OnComm()
Dim ST As String
DoEvents
if MSComm1.CommEvent= comEvReceive then
ST = MSComm1.Input
debug.print st
end if
end sub
sunny8226 2004-09-16
  • 打赏
  • 举报
回复
波特率没错的。。。。。
有谁知道吗》可以提供点想法也意见,我调了好久了。。。。。。
tztz520 2004-09-16
  • 打赏
  • 举报
回复
可能是你的波特率设得不对.

7,763

社区成员

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

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