c# zedGraph绘制实时数据的散点图

xuehan1108 2009-12-17 04:02:22
看了几个有关zedGraph画动态曲线的例子,都采用Timer定时,来控制曲线的动态时间。但我的数据是下位机实时采集得到的数据,通过串口Oncomm事件传递给Pc,我现在想画其实时的曲线,不用Timer能实现吗?坐标自动收缩能实现吗?
...全文
1212 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
美丽海洋 2011-02-12
  • 打赏
  • 举报
回复
不知道这个问题解决了没有?
我也做相同的功能曲线,我还遇到问题就是为什么接收数据时间总偏后怎么回事;
比如发送数据频率是20;我30s内应该接受到600个数据,但是实际上才接受不到600个;不知道怎么会出现这种问题?请赐教。
hou_kui 2010-10-24
  • 打赏
  • 举报
回复
怎么画散点图呢?顶
xuehan1108 2009-12-25
  • 打赏
  • 举报
回复
现在有个问题啊。用ZedGraph画图的时候,我的X坐标为HH:mm:ss格式,但目前X轴全部显示的00:00:00X轴这样定义的 myPane.XAxis.Scale.Format = "HH:mm:ss";//横轴格式
myPane.XAxis.Type = AxisType.Date;
string[] labels = new string[dt.Rows.Count];
for(int i=0;i<dt.Rows.Count;i++)
{
lables[i] = Convert.ToDateTime(dt.Rows[i]["RecTime"]).ToString("HH:mm:ss");
}
myPane.XAxis.Scale.TextLabels = labels;
焱rock 2009-12-21
  • 打赏
  • 举报
回复
我在接收数据的时候确实有些问题。这部分你是怎么做的呢?
[/Quote]
如果下位机是一直在发送数据的话,我觉得还是要用DataRecieved事件或者新开线程来专门接收数据才行的,要不然会有缓冲区大小出问题等等异常。另外按照我的理解你的意思应该是用一个按钮来开启一个串口。开启之后能不关就不关呗。
串口名字:serialport.PortName ="COM1";
xuehan1108 2009-12-21
  • 打赏
  • 举报
回复
#9楼 得分:0回复于:2009-12-20 18:28:24引用 7 楼 xuehan1108 的回复:
(麻雀哈哈),你好。我还有个问题,关于串口响应,我是在通讯设置确认时开始响应Oncomm事件,然后接收下位机的数据。在数据处理的过程中(另外窗体),我是通过点击开始按钮获取下位机的数据,不知道oncomm事件可以在另外的窗体调用不?如何调用?我的下位机是不停的传数据,但是等到合适的时候我才在处理数据的函数里获取下位机的数据。


处理数据的过程可以做成static方法吧,另外我有一个疑问:下位机不停的传数据的话,你通过按钮获取数据,你的缓冲区得多大啊?是否这种方式有点不合适?供参考。

我在接收数据的时候确实有些问题。这部分你是怎么做的呢?
xuehan1108 2009-12-21
  • 打赏
  • 举报
回复
还有,MScomm串口号怎么设置啊?我用axMSComm1.CommPort =2;怎么是错的呢?
xuehan1108 2009-12-21
  • 打赏
  • 举报
回复
我的意思是通过按钮获取那一时刻开始的数据,我不是把所有的数据都用于计算。
焱rock 2009-12-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xuehan1108 的回复:]
(麻雀哈哈),你好。我还有个问题,关于串口响应,我是在通讯设置确认时开始响应Oncomm事件,然后接收下位机的数据。在数据处理的过程中(另外窗体),我是通过点击开始按钮获取下位机的数据,不知道oncomm事件可以在另外的窗体调用不?如何调用?我的下位机是不停的传数据,但是等到合适的时候我才在处理数据的函数里获取下位机的数据。
[/Quote]
处理数据的过程可以做成static方法吧,另外我有一个疑问:下位机不停的传数据的话,你通过按钮获取数据,你的缓冲区得多大啊?是否这种方式有点不合适?供参考。
qq2013 2009-12-20
  • 打赏
  • 举报
回复
56666
xuehan1108 2009-12-20
  • 打赏
  • 举报
回复
(麻雀哈哈),你好。我还有个问题,关于串口响应,我是在通讯设置确认时开始响应Oncomm事件,然后接收下位机的数据。在数据处理的过程中(另外窗体),我是通过点击开始按钮获取下位机的数据,不知道oncomm事件可以在另外的窗体调用不?如何调用?我的下位机是不停的传数据,但是等到合适的时候我才在处理数据的函数里获取下位机的数据。
xuehan1108 2009-12-20
  • 打赏
  • 举报
回复
(麻雀哈哈),你好。我还有个问题,关于串口响应,我是在通讯设置确认时开始响应Oncomm事件,然后接收下位机的数据。在数据处理的过程中(另外窗体),我是通过点击开始按钮获取下位机的数据,不知道oncomm事件可以在另外的窗体调用不?如何调用?我的下位机是不停的传数据,但是等到合适的时候我才在处理数据的函数里获取下位机的数据。
xuehan1108 2009-12-20
  • 打赏
  • 举报
回复
(麻雀哈哈),你好。我还有个问题,关于串口响应,我是在通讯设置确认时开始响应Oncomm事件,然后接收下位机的数据。在数据处理的过程中(另外窗体),我是通过点击开始按钮获取下位机的数据,不知道oncomm事件可以在另外的窗体调用不?如何调用?我的下位机是不停的传数据,但是等到合适的时候我才在处理数据的函数里获取下位机的数据。
wuyq11 2009-12-17
  • 打赏
  • 举报
回复
焱rock 2009-12-17
  • 打赏
  • 举报
回复
/// <summary>
/// zedgragh控件刷新线程
/// </summary>

public void DrawPicture()
{
while (true)
{
if (g_cDrawEnable == 1)
{
zedGraphControl2.Refresh();
}
System.Threading.Thread.Sleep(200);
}
}
private void Form1_Load(object sender, EventArgs e)
{
drawPictureThread=new Thread (new ThreadStart (DrawPicture));
drawPictureThread.IsBackground = true;
drawPictureThread.Start();
}
焱rock 2009-12-17
  • 打赏
  • 举报
回复
我做过相关的应用,数据是在串口响应事件中添加到PointPairList中的,实时刷新界面是新起的一个线程,在线程中更新。坐标自动收缩我想就在刷新界面中改变坐标轴的值就行了吧。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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