以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]Chart设置  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192575)

--  作者:fanjq8686
--  发布时间:2024/7/3 8:34:00
--  [求助]Chart设置
请教老师:

\'--------------------Y值自动、固定切换-----------------------
If e.Form.Controls("CheckBox12").Checked = True Then
    Chart.AxisY.Min = -0.1 \'指定Y轴的最小值
    Chart.AxisY.Max = 1.5 \'指定Y轴的最大值
    \'Chart.AxisY.Major = 0.2 \'主刻度间隔值
    \'Chart.AxisY.Minor = 0.1\'副刻度间隔值
Else
    \'程序将自动决定最佳的Y轴范围
    \'Chart.AxisY.Min = 0 \'指定Y轴的最小值
    \'Chart.AxisY.Max = 0.5 \'指定Y轴的最大值
End If

在指定了Y轴的最大值、最小值后,程序不能回到自动决定Y轴范围。

--  作者:有点蓝
--  发布时间:2024/7/3 8:36:00
--  
Else
    \'程序将自动决定最佳的Y轴范围
    Chart.AxisY.Min = nothing 
    Chart.AxisY.Max = nothing
End If

--  作者:fanjq8686
--  发布时间:2024/7/3 8:57:00
--  
测试了,还是没解决。
--  作者:有点蓝
--  发布时间:2024/7/3 9:00:00
--  
请上传实例说明
--  作者:fanjq8686
--  发布时间:2024/7/3 9:04:00
--  
\'---------------采集--------------------------------
Dim dt As Date = Functions.Execute("服务器时间") \'"服务器时间"是自定义函数
Dim Str00 As String
Dim cs As String = e.Form.Controls("NumericComboBox1").Value \'流水号
\'Dim rt As Row = Tables(DateSt0).Current \'-----------------------------------
Dim rt As Row
If Forms("业务管理窗口").Opened Then
    rt = Tables(DateSt0).Current \'-----------------------------------
    Str00 = rt("报告编号")
    If User.IsRole("所长")Or User.Name = "开发者" Or User.Type = UserTypeEnum.Developer Or User.Name = rt("检验部门负责人") Or User.Name = rt("检验主检") Or User.Name = rt("检验辅检") Then
    Else
        MessageBox.Show("你不是本项目检验人员,不能采集")
        Return 
    End If 
Else
    Str00 = "test"
End If 

If CJTDNum <= 0 Then\'采集通道数
    MessageBox.Show("采集卡打开的通道数为0,不能采集" )
    Return
End If
e.Form.Controls("TabControl1").SelectedIndex = 0
e.Form.Controls("Button8").PerformClick() \'确定设置

\'---------------SaveTofilename--------------------------------
Dim Str1 As String = Str00 & "-" \'= DateSt
Dim Str2 As String = e.Form.Controls("ComboBox10").Value & "-" \'腔体
Dim Str3 As String = e.Form.Controls("ComboBox11").Value & "-" \'气体
Dim Value As String = e.Form.Controls("ComboBox09").Value \'试验项目
Dim Result As String
Select Case Value
    Case "参考压力"
        Result = "C"
    Case "过压试验"
        Result = "G"
    Case "内部点燃不传爆试验"
        Result = "N"
    Case Else
        Result = "X"
End Select
Dim Str4 As String = Result
Dim alpha As String = e.Form.Controls("TextBox7").Value \'滤波器的平滑因子
Dim Str5 As String = e.Form.Controls("NumericComboBox1").Value \'流水号

\'---------------保存前判断文件路径及名称波形是否存在--------------------------------
Dim filename As String = "C:\\项目\\" & Str00 & "\\" & Str1 & Str2 & Str3 & Str4 & Str5 & ".bmp" \'文件路径及名称
If ftp1.FileExists(filename.Replace("C:", "")) Or FileSys.FileExists(filename) Then \'如果存在则
    Messagebox.Show("本图片文件已经存在,请更名后保存!", "提示")
    Return 
End If

\'---------------SaveToCSV-----保存前判断文件路径及名称波形是否存在---------------------------
filename = "C:\\项目\\" & Str00 & "\\" & Str1 & Str2 & Str3 & Str4 & Str5 & ".CSV" \'文件路径及名称
If ftp1.FileExists(filename.Replace("C:", "")) Or FileSys.FileExists(filename) Then \'如果存在则
    Messagebox.Show("本CSV文件已经存在,请更名后保存!", "提示")
    Return 
End If

\'---------------Chart设置--------------------------------
Dim Chart As WinForm.Chart = e.Form.Controls("Chart1")
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart.SeriesList.Clear() \'清除图表原来的图系
\'--------------------Y值自动、固定切换-----------------------
If e.Form.Controls("CheckBox12").Checked = True Then
    Chart.AxisY.Min = -0.1 \'指定Y轴的最小值
    Chart.AxisY.Max = 1.5 \'指定Y轴的最大值
    \'Chart.AxisY.Major = 0.2 \'主刻度间隔值
    \'Chart.AxisY.Minor = 0.1\'副刻度间隔值
Else
    \'程序将自动决定最佳的Y轴范围
    \'Chart.AxisY.Min = 0 \'指定Y轴的最小值
    \'Chart.AxisY.Max = 0 \'指定Y轴的最大值
End If

Series = Chart.SeriesList.Add() \'增加一个图系
Series.Length = 10 \'新增图系包括10个数据点
For i As Integer = 0 To 9 \'指定每个数据点的位置
    Series.X(i) = i \'指定水平坐标
    Series.Y(i) = 0 \'i + Rand.Next(5) \'垂直坐标用随机数生成
Next

Dim readContent As Integer
Dim Time3 As Integer = e.Form.Controls("TextBox13").Value \'超时时间,以 ms 为单位,当达到所设定的超时时间后,如果采集卡还没有采集到足够 Points点的数据,函数退出,返回错误代码 - 7。
Dim tb14 As WinForm.TextBox = e.Form.Controls("TextBox14") \'错误
Dim Val1 As Integer = CJShotPoints \\ CJTDNum \'每通道采集点数
Dim Val3 As Integer = e.Form.Controls("TextBox3").Value \'波形间距3

Dim Values(200000) As Single \'用来存放采集得到的模拟输入数据的数组指针:最大2M。
\'---------------读取校准系数数组到与使用通道对应的数组--------------------------------
Dim jzxs1(7) As Single \'用来存放使用通道校准系数。
Functions.Execute("ratio", jzxs1, e)

readContent = SetUSB3ClrAiFifo(CJDevIndex) \'清空指定设备的模拟输入 Fifo 缓存清空指定设备的模拟输入 Fifo 缓存---------------------2-9
If readContent <> 0 Then
    Functions.Execute("RepError", readContent, e)
    Return
End If 

readContent = SetUSB3AiSoftTrig(CJDevIndex) \'模拟输入软件触发----------------------------------------------------3-1
If readContent <> 0 Then
    Functions.Execute("RepError", readContent, e)
    Return
End If
\'MessageBox.Show("222222222222222222")

readContent = USB3GetAi(CJDevIndex, Val1, Values, Time3) \'每通道需要读取的点数。--------------------------3-2
If readContent <> 0 Then
    Functions.Execute("RepError", readContent, e)
    \'Return
End If

\'---------------最大压力-图表的上标题-------------------------------
Dim Str() As Single = Functions.Execute("max", Values, jzxs1, CJTDNum, Val1, alpha) \'最大压力
Dim Str0 As String = "CheckBox0"
Dim Str22(6) As String
Str22(0) = dt
Str22(1) = User.Name
Str22(2) = e.Form.Controls("ComboBox09").Value \'试验项目 
Str22(3) = e.Form.Controls("ComboBox11").Value \'试验气体
Str22(4) = e.Form.Controls("ComboBox10").Value \'试验部位
Str22(5) = "最大压力:" & Format(Str(0), "f") & " MPa "
Str22(6) = "报告编号:" & Str00
Dim Str33 As String = ""
For i As Integer = 0 To 5
    If e.Form.Controls(Str0 & CStr(i + 1)).checked Then
        Str33 = Str33 & Str22(i) & " "
    End If
Next
Chart.HeaderText = Str33 \'图表的上标题
e.Form.Controls("TextBox9").Value = Format(Str(0), "f") \'Str(0) \'最大压力

\'---------------显示波形--------------------------------
Functions.Execute("display", Chart, Val3 , Values, jzxs1, e.Form.Controls("CheckBox12").Checked, alpha) \'固定或自动Y e.Form.Controls("CheckBox12")

\'---------------保存波形--------------------------------
filename = "C:\\项目\\" & Str00 & "\\" & Str1 & Str2 & Str3 & Str4 & Str5 & ".bmp" \'文件路径及名称
Chart.SaveImage(filename) \'保存图片文件
\'---------------SaveToCSV-----在这里保存为CSV文件---------------------------
filename = "C:\\项目\\" & Str00 & "\\" & Str1 & Str2 & Str3 & Str4 & Str5 & ".CSV" \'文件路径及名称
Functions.Execute("SaveToCSV", Values, jzxs1, filename)

\'---------------自动上传--------------------------------
If e.Form.Controls("CheckBox9").Checked Then \'自动保存
    e.Form.Controls("Button5").PerformClick() \'保存
End If
e.Form.Controls("NumericComboBox1").Value = cs + 1 \'流水号增加1

--  作者:有点蓝
--  发布时间:2024/7/3 9:08:00
--  
新建项目,导入需要的数据,做个有同样chart问题的例子发上来测试
--  作者:fanjq8686
--  发布时间:2024/7/3 9:34:00
--  
原项目为一
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

个数据采集,涉及到硬件,没法上传。新建项目模拟一下。
--  作者:有点蓝
--  发布时间:2024/7/3 10:24:00
--  
改为

Else
    \'程序将自动决定最佳的Y轴范围
    Chart.AxisY.AutoMin = True 
    Chart.AxisY.AutoMax = True
End If

--  作者:fanjq8686
--  发布时间:2024/7/3 10:45:00
--  
谢谢!解决。