今日尝试写一款窗口上位机数据绘图助手Plotter的开发,实现接收解析数据包进行画图的功能:
文章提供完整代码解释、设计点解释、测试效果图、完整工程下载
控件摆放与使用控件大致介绍:
下载必要的Nuget程序包:
图表绘制相关代码逻辑:
将时间戳作为X轴输入:
时间戳绘制效果如下:
清空图表按钮实现:
//清空图表
private void clear_button_Click(object sender, EventArgs e)
{
ClearChart(zedGraphControl1);
firstDataPoint_flag = false; //记录获取第一个数据 状态置零
}
// 清空图表中的所有曲线
private void ClearChart(ZedGraph.ZedGraphControl zgc)
{
GraphPane myPane = zgc.GraphPane;
// 遍历并删除所有曲线
while (myPane.CurveList.Count > 0)
{
myPane.CurveList.RemoveAt(0);
}
myPane.AxisChange();
// 刷新图表以显示更改
zgc.Refresh();
// 最后别忘记清理字典
ClearCurvesDictionary();
}
鼠标在数据点上获取精确值:
串口接收事件生成与衔接图表逻辑:
单片机方面宏定义打印函数:
单片机串口发送示例:
接收数据字符串字段函数:
在串口接收事件中的调用解算:
阶段性解算成果展示:
字典转换颜色字符串: