找回密码
 立即注册

QQ登录

只需一步,快速开始

hanatech

初级会员

50

主题

140

帖子

452

积分

初级会员

积分
452

活字格认证微信认证勋章

hanatech
初级会员   /  发表于:2015-7-12 16:34  /   查看:4669  /  回复:8
在地磅磅房现场测试发现:当COM串口初始化成功并能接收数据,报表加载非常慢,甚至要2-3分钟才能加载完,用stopwatch监控,发现报表加载和数据源加载都正常,只要不COM串口,报表加载正常,求解决?

8 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-7-13 10:14:00
沙发
您好,
非常抱歉。
AR产品的主要功能是展示数据。
通过您的描述,不使用串口报表加载正常,我们这边推测是串口读取数据超时导致的。
建议您可以现将数据保存至数据库,例如sqlite,报表展示时使用数据库作为数据源。能是否对问题做进一步的确认。

希望能够帮助到您。
回复 使用道具 举报
hanatech
初级会员   /  发表于:2015-7-13 13:08:00
板凳
数据是先存到数据库的,微软自带的报表没有这种情况。。。我准备给你们上传demo
回复 使用道具 举报
hanatech
初级会员   /  发表于:2015-7-13 13:12:00
地板

Activerport与COM串口demo

这是我们在现场测试用的DEMO,发现,串口数据引入之后,报表加载很慢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-7-13 15:04:00
5#
您好,
你的例子程序,我这边已经运行起来。有两个问题想跟您沟通一下:
1.串口接收数据时,需要触发spWeight_DataReceived,这个事件是谁触发的?
2.在这个方法中,
  1. Thread.Sleep(250)
复制代码
,如果频繁被触发,是否会导致主UI线程的卡顿。是否可以考虑将这个逻辑放到线程当中。
回复 使用道具 举报
hanatech
初级会员   /  发表于:2015-7-14 09:33:00
6#
1、主UI线程并未卡顿
回复 使用道具 举报
hanatech
初级会员   /  发表于:2015-7-14 09:33:00
7#
2、实际程序是放在线程中。
3、RDLC并未有问题。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-7-14 14:02:00
8#
您好,
我们对您的代码进行分析,有两个建议:
1.您的串口操作中执行了
  1. Control.CheckForIllegalCrossThreadCalls = false;
复制代码
这句会影响AR的显示,在AR中使用了多线程技术。
2.将串口线程移动到后台后可以使用
  1. if(this.LEDNum.InvokeRequired)
  2. {
  3. this.Invoke(new Action(()=> this.LEDNum.Text = Convert.ToDecimal(data).ToString()));
  4. } 
  5. else 
  6. {
  7. this.LEDNum.Text = Convert.ToDecimal(data).ToString();
  8. }
复制代码

多线程问题是一个通用的技术问题,网上有一些参考资料,您可以参考:
http://www.cnblogs.com/yizhu2000/archive/2008/01/03/1011958.html
http://www.cnblogs.com/wangshenhe/archive/2012/05/25/2516842.html

如果您的问题没有解决的话,请给我们一个能够重现这个问题的例子程序。我们可以更快的定位问题。
希望能够帮助到您。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-7-24 09:14:00
9#
为了给你提供更优质的服务,请对本次服务进行评分。
我们会认真对待你提出的宝贵意见,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部