问题描述
上位机接收串口数据,下位机不停发送数据到上位机,当开始打开串口时,程序会卡死1分钟左右,之后恢复正常;有时候调用了pointList.Clear(),后再重新往里面加入数据也会让程序卡死~~
解决方案
解决方案二:
放到线程里就好了
解决方案三:
你的数据有多少?CS一般数据不多不会卡,你如果在网站上使用zedgraph的话倒是有可能会卡。
解决方案四:
引用楼主huang1004943336的回复:
上位机接收串口数据,下位机不停发送数据到上位机,当开始打开串口时,程序会卡死1分钟左右,之后恢复正常;有时候调用了pointList.Clear(),后再重新往里面加入数据也会让程序卡死~~
你先单步调试看是哪一步卡,然后再分析原因
解决方案五:
保证是主线程去读串口了
解决方案六:
引用2楼Q1092926267的回复:
你的数据有多少?CS一般数据不多不会卡,你如果在网站上使用zedgraph的话倒是有可能会卡。
应该不存在数据量的问题,我用串口大师只发一个数据过来也是同样的情况。单步调试也用了,在完成所有程序步骤之后,程序还是才出现卡死现象,要很久才能恢复过来
解决方案七:
引用4楼Z65443344的回复:
保证是主线程去读串口了
是主线程读串口,数据接收事件运行与辅助线程
解决方案八:
引用5楼huang1004943336的回复:
Quote: 引用2楼Q1092926267的回复:
你的数据有多少?CS一般数据不多不会卡,你如果在网站上使用zedgraph的话倒是有可能会卡。应该不存在数据量的问题,我用串口大师只发一个数据过来也是同样的情况。单步调试也用了,在完成所有程序步骤之后,程序还是才出现卡死现象,要很久才能恢复过来
所有步骤完成了才出现卡死那很明显不是接收串口和绑定图像的问题
解决方案九:
引用7楼Q1092926267的回复:
Quote: 引用5楼huang1004943336的回复:
Quote: 引用2楼Q1092926267的回复:
你的数据有多少?CS一般数据不多不会卡,你如果在网站上使用zedgraph的话倒是有可能会卡。应该不存在数据量的问题,我用串口大师只发一个数据过来也是同样的情况。单步调试也用了,在完成所有程序步骤之后,程序还是才出现卡死现象,要很久才能恢复过来
所有步骤完成了才出现卡死那很明显不是接收串口和绑定图像的问题
我觉得应该是绘图部分的问题,我单步调试,结束之后,要很久图像才出来,而且出来的时候已经完成了几次数据的显示。但是又完全找不到原因
解决方案十:
引用8楼huang1004943336的回复:
Quote: 引用7楼Q1092926267的回复:
Quote: 引用5楼huang1004943336的回复:
Quote: 引用2楼Q1092926267的回复:
你的数据有多少?CS一般数据不多不会卡,你如果在网站上使用zedgraph的话倒是有可能会卡。应该不存在数据量的问题,我用串口大师只发一个数据过来也是同样的情况。单步调试也用了,在完成所有程序步骤之后,程序还是才出现卡死现象,要很久才能恢复过来
所有步骤完成了才出现卡死那很明显不是接收串口和绑定图像的问题
我觉得应该是绘图部分的问题,我单步调试,结束之后,要很久图像才出来,而且出来的时候已经完成了几次数据的显示。但是又完全找不到原因
完成几次数据的显示???你里面还用了timer控件定时刷新显示?
解决方案十一:
引用8楼huang1004943336的回复:
Quote: 引用7楼Q1092926267的回复:
Quote: 引用5楼huang1004943336的回复:
Quote: 引用2楼Q1092926267的回复:
你的数据有多少?CS一般数据不多不会卡,你如果在网站上使用zedgraph的话倒是有可能会卡。应该不存在数据量的问题,我用串口大师只发一个数据过来也是同样的情况。单步调试也用了,在完成所有程序步骤之后,程序还是才出现卡死现象,要很久才能恢复过来
所有步骤完成了才出现卡死那很明显不是接收串口和绑定图像的问题
我觉得应该是绘图部分的问题,我单步调试,结束之后,要很久图像才出来,而且出来的时候已经完成了几次数据的显示。但是又完全找不到原因
如果不知道什么原因只能用排除法了例如禁用绑定zedgraph控件看界面是不是卡死如果还是卡死了那就禁用串口看卡不卡一直排除下去就知道哪一块的问题了
解决方案十二:
引用10楼Q1092926267的回复:
Quote: 引用8楼huang1004943336的回复:
Quote: 引用7楼Q1092926267的回复:
Quote: 引用5楼huang1004943336的回复:
Quote: 引用2楼Q1092926267的回复:
你的数据有多少?CS一般数据不多不会卡,你如果在网站上使用zedgraph的话倒是有可能会卡。应该不存在数据量的问题,我用串口大师只发一个数据过来也是同样的情况。单步调试也用了,在完成所有程序步骤之后,程序还是才出现卡死现象,要很久才能恢复过来
所有步骤完成了才出现卡死那很明显不是接收串口和绑定图像的问题
我觉得应该是绘图部分的问题,我单步调试,结束之后,要很久图像才出来,而且出来的时候已经完成了几次数据的显示。但是又完全找不到原因
如果不知道什么原因只能用排除法了例如禁用绑定zedgraph控件看界面是不是卡死如果还是卡死了那就禁用串口看卡不卡一直排除下去就知道哪一块的问题了
因为串口时不停在发送数据到上位机,所以在界面卡死再恢复的时候,直接出来了几次数据。如果我在代码中注释掉zedGraph的实时绘图,程序就可以很正常的运行
解决方案十三:
引用11楼huang1004943336的回复:
Quote: 引用10楼Q1092926267的回复:
Quote: 引用8楼huang1004943336的回复:
Quote: 引用7楼Q1092926267的回复:
Quote: 引用5楼huang1004943336的回复:
Quote: 引用2楼Q1092926267的回复:
你的数据有多少?CS一般数据不多不会卡,你如果在网站上使用zedgraph的话倒是有可能会卡。应该不存在数据量的问题,我用串口大师只发一个数据过来也是同样的情况。单步调试也用了,在完成所有程序步骤之后,程序还是才出现卡死现象,要很久才能恢复过来
所有步骤完成了才出现卡死那很明显不是接收串口和绑定图像的问题
我觉得应该是绘图部分的问题,我单步调试,结束之后,要很久图像才出来,而且出来的时候已经完成了几次数据的显示。但是又完全找不到原因
如果不知道什么原因只能用排除法了例如禁用绑定zedgraph控件看界面是不是卡死如果还是卡死了那就禁用串口看卡不卡一直排除下去就知道哪一块的问题了
因为串口时不停在发送数据到上位机,所以在界面卡死再恢复的时候,直接出来了几次数据。如果我在代码中注释掉zedGraph的实时绘图,程序就可以很正常的运行
实时绘图的代码贴出来看一下
解决方案十四:
///<summary>///该函数进行界面曲线的更新///</summary>///<paramname="pressure">此时收到的压强</param>privatevoidrefreshUI(doublepressure){doublex=(double)newXDate(DateTime.Now);pointPairListPressure.Add(x,pressure);if(pointPairListPressure.Count>100){pointPairListPressure.RemoveAt(0);}zedGraphControl1.AxisChange();zedGraphControl1.Refresh();}
解决方案十五:
好无助~~等高手解答
解决方案:
引用12楼Q1092926267的回复:
Quote: 引用11楼huang1004943336的回复:
Quote: 引用10楼Q1092926267的回复:
Quote: 引用8楼huang1004943336的回复:
Quote: 引用7楼Q1092926267的回复:
Quote: 引用5楼huang1004943336的回复:
Quote: 引用2楼Q1092926267的回复:
你的数据有多少?CS一般数据不多不会卡,你如果在网站上使用zedgraph的话倒是有可能会卡。应该不存在数据量的问题,我用串口大师只发一个数据过来也是同样的情况。单步调试也用了,在完成所有程序步骤之后,程序还是才出现卡死现象,要很久才能恢复过来
所有步骤完成了才出现卡死那很明显不是接收串口和绑定图像的问题
我觉得应该是绘图部分的问题,我单步调试,结束之后,要很久图像才出来,而且出来的时候已经完成了几次数据的显示。但是又完全找不到原因
如果不知道什么原因只能用排除法了例如禁用绑定zedgraph控件看界面是不是卡死如果还是卡死了那就禁用串口看卡不卡一直排除下去就知道哪一块的问题了
因为串口时不停在发送数据到上位机,所以在界面卡死再恢复的时候,直接出来了几次数据。如果我在代码中注释掉zedGraph的实时绘图,程序就可以很正常的运行
实时绘图的代码贴出来看一下
我把代码贴出来了,麻烦帮我看看。谢谢