3331|4

87

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

VB.NET串口接收数据不完整 [复制链接]

我在用VB.NET开发winsCE,在用串口通信的时候,我用代码 n = Me.SerialPort1.BytesToRead
                                           If n > 0 Then
                                               Me.SerialPort1.Read(shuju, 0, 30)
                                            end if
我定义的数组shuju是字节型的,在和PC机的串口连接之后,我在CE端用软件单步调试,监测所收到的串口数据,发现一直没有0
比如我在PC机串口调试助手中发十六进制字节数据AA AA 00 00 54
在CE端监测窗口中只有AA AA 54 ,却没有CE ,这是什么原因啊?
希望高手能指点下!

最新回复

我试验了,但是有提示出错! 是不是要在窗体的开头添加API之类的啊! 另外,我希望能在我程序的基础上做些改动,实现我要的功能! 实现数据的正确接收! 谢谢啊!  详情 回复 发表于 2009-12-28 17:56
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
If n > 0 Then
  Me.SerialPort1.Read(shuju, 0, 30)
end if
1.改成N>=0试试
2.把n = Me.SerialPort1.BytesToRead 这句话去掉
直接用
byte[] buffer = new byte[30]
serialPort1.Read(buffer, 0, buffer.Length);
看buffer接收的数据对不对。
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你说的第一种方案我试过了。不行,第二种方案byte[] buffer = new byte[30]我不太明白是什么意思?
你把完整的给我写下!
谢谢啊!
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
byte[] buffer = new byte[30] --在.net里面数组其实就是一个sub-class,所以申明方式与C++不同!
serialPort1.Read(buffer, 0, buffer.Length);

你既然能收到AA AA 54! 是不是你在接受的时候吧所以 为零的数据全部过滤掉了?

看你的接受代码是怎么样的!

上面的方法是将所有的数据放到一个buf里面然后在打印出来 在验证一下数据的正确性
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

5
 
我试验了,但是有提示出错!
是不是要在窗体的开头添加API之类的啊!
另外,我希望能在我程序的基础上做些改动,实现我要的功能!
实现数据的正确接收!
谢谢啊!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表