%@ LANGUAGE="VBScript" %>
<% start_time = Time %>
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Mode = adModeRead
Connection.Open phdb_rd
rowid_query = "select rowid from sitester.sensor_log where batch='"+Request("batch")+"' and sensor="+Request("sensor")+" and measurement_type='IV_guard_bias_gnd' order by logdate"
Set rowid_list = Connection.Execute(rowid_query)
%>
Batch <%=Request("batch")%>, sensor <%=Request("sensor")%> IV Distribution
<%
Dim Color(8)
Color(0) = vbRed
Color(1) = vbBlue
Color(2) = vbYellow
Color(3) = vbGreen
Color(4)= vbMagenta
Color(5)= vbCyan
Color(6)= vbWhite
Color(7)= vbBlack
seed=-(second(now())+60*minute(now())+3600*hour(now())+3600*24*day(now()))
Dim ivb_voltage_array()
Dim ivb_current_array()
Dim ivg_voltage_array()
Dim ivg_current_array()
iteration = 0
Do While Not rowid_list.EOF
iteration = iteration + 1
%>
<%
Log1_Query = "select Rowid,Batch,Sensor,to_char(Logdate,'MM/DD/YYYY HH24:MI:SS') ddate,Action,Measurement_Type,Operator,Comments "
Log1_Query = Log1_Query & "from sitester.sensor_log sl where sl.rowid='"
Log1_Query = Log1_Query & rowid_list("rowid") & "'"
Set Slog1 = Connection.Execute(Log1_Query)
batch1=Slog1("Batch")
sensor1=Slog1("Sensor")
logdate1=Slog1("ddate")
action1=Slog1("Action")
measurement1=Slog1("Measurement_Type")
rowid1=Slog1("Rowid")
operator1=Slog1("Operator")
comm1=Slog1("Comments")
%>
<%
'
' Find the best candidate for the same-pair measurement (guard vs bias), check within +-10 minutes
'
If Cstr(action1)="IV_test" Then
If measurement1="IV_guard_bias_gnd" Then
measurement2="IV_bias_guard_gnd"
ElseIf measurement1="IV_bias_guard_gnd" Then
measurement2="IV_guard_bias_gnd"
Else
response.write("Invalid measurement type !")
End If
Else
response.write(" This is not an IV test !")
End If
' Old query that Bolek used to find pair within +-10 minutes
' Log2_Query = "select rowid,batch,sensor,logdate,action,measurement_type,operator,comments "
' Log2_Query = Log2_Query & "from sitester.sensor_log sl where sl.measurement_type='" & Cstr(measurement2) & "'"
' Log2_Query = Log2_Query & " and sl.batch='" & CStr(batch1) & "' and sl.sensor=" & CStr(sensor1)
' Log2_Query = Log2_Query & " and 24*60*abs(sl.logdate-" & "TO_DATE('" & CStr(logdate1) & "','MM/DD/YYYY HH24:MI:SS'))<10"
' New query made by Kris on 8/16/98 to use min time difference as the selection to find the best pair
Log2_Query = "select rowid,batch,sensor,to_char(logdate,'MM/DD/YYYY HH24:MI:SS') ddate,action,measurement_type,operator,comments "
Log2_Query = Log2_Query & "from sitester.sensor_log where (batch,sensor,abs(logdate-TO_DATE('" & CStr(logdate1) & "','MM/DD/YYYY HH24:MI:SS')))="
Log2_Query = Log2_Query & "(select batch,sensor,min(abs(logdate-TO_DATE('" & CStr(logdate1) & "','MM/DD/YYYY HH24:MI:SS')))"
Log2_Query = Log2_Query & "from sitester.sensor_log where measurement_type='" & Cstr(measurement2) & "'"
Log2_Query = Log2_Query & " and batch='" & CStr(batch1) & "' and sensor=" & CStr(sensor1)
Log2_Query = Log2_Query & " group by batch,sensor)"
Set Slog2 = Connection.Execute(Log2_Query)
If Not Slog2.EOF Then
rowid2=Slog2("Rowid")
logdate2=Slog2("ddate")
operator2=Slog2("Operator")
comm2=Slog2("Comments")
Else
rowid2="Not found"
logdate2="Not found"
operator2="-"
comm2="-"
measurement2="-"
End If
If measurement2="IV_bias_guard_gnd" Then 'swap the pointers
rowid_t=rowid1
rowid1=rowid2
rowid2=rowid_t
comm_t=comm1
comm1=comm2
comm2=comm_t
logdate_t=logdate1
logdate1=logdate2
logdate2=logdate_t
operator_t=operator1
operator1=operator2
operator1=operator_t
measurement_t=measurement1
measurement1=measurement2
measurement2=measurement_t
End If
%>
<%
IV1_Query = "select bias,leakage_current,temperature,humidity from sitester.sensor_iv si,sitester.sensor_log sl "
IV1_Query = IV1_Query & "where sl.rowid='" & Cstr(rowid1) & "' "
IV1_Query = IV1_Query & "and startdate=logdate order by bias"
Set Siv1 = Connection.Execute(IV1_Query)
If Cstr(rowid2)<>"Not found" Then
IV2_Query = "select bias,leakage_current,temperature,humidity from sitester.sensor_iv,sitester.sensor_log sl "
IV2_Query = IV2_Query & "where sl.rowid='" & Cstr(rowid2) & "' "
IV2_Query = IV2_Query & "and startdate=logdate order by bias"
Set Siv2 = Connection.Execute(IV2_Query)
End If
%>
<%
' Prepare plot
seed=seed+1
filename="iviv" & cstr(int(100000.*rnd(seed))) & ".jpg"
filename_full=ph_image_directory & filename
%>
<%
Dim Chart
rem **********************************************************************
rem * Instantiate the Chart component
rem **********************************************************************
Set Chart = Server.CreateObject ("ASPChart.Chart")
rem **********************************************************************
rem * Create x Array
rem **********************************************************************
Chart.AddSeries 5
Chart.SeriesTitle = "Active Area"
Chart.LineWidth = 2
Chart.Stairs = false
Chart.SeriesInLegend = true
data_points = 0
Do While Not Siv1.Eof
ReDim Preserve ivb_voltage_array(data_points)
ReDim Preserve ivb_current_array(data_points)
ivb_voltage_array(data_points)=CDbl(Siv1("bias"))
ivb_current_array(data_points)=CDbl(Siv1("leakage_current"))/1000.
Chart.AddXY CDbl(Siv1("bias")),CDbl(Siv1("leakage_current"))/1000., "",Color(1)
data_points=data_points+1
Siv1.MoveNext
Loop
If Cstr(rowid2)<>"Not found" Then
Chart.AddSeries 5
Chart.SeriesTitle = "Guard Ring"
Chart.LineWidth = 2
Chart.Stairs = false
Chart.SeriesInLegend = true
data_points = 0
Do While Not Siv2.Eof
ReDim Preserve ivg_voltage_array(data_points)
ReDim Preserve ivg_current_array(data_points)
ivg_voltage_array(data_points)=CDbl(Siv2("bias"))
ivg_current_array(data_points)=CDbl(Siv2("leakage_current"))/1000.
Chart.AddXY CDbl(Siv2("bias")),CDbl(Siv2("leakage_current"))/1000., "",Color(4)
data_points=data_points+1
Siv2.MoveNext
Loop
End If
rem **********************************************************************
rem * Add and format the title
rem **********************************************************************
Chart.ChartTitleAdd ("")
Chart.ChartTitleFont.Size = 18
Chart.ChartTitleFont.Name = "Times New Roman"
Chart.ChartTitleFont.Italic = true
Chart.ChartTitleFont.Bold = true
Chart.View3D = false
Chart.LegendVisible = true
Chart.LegendStyle = cSeries
Chart.AxisGridLines = true
Chart.Frame = false
Chart.BottomAxisIncrement = 10
rem **********************************************************************
rem * Remove the OuterBevel, add a gradient fill to chart panel
rem **********************************************************************
Chart.BevelOuter = 0
rem Chart.GradientVisible = true
rem Chart.GradientStartColor = vbWhite
rem Chart.GradientEndColor = vbYellow
Chart.PanelColor = Color(6)
rem **********************************************************************
rem * Set the Width and Height of the image
rem **********************************************************************
Chart.Height = 400
Chart.Width = 600
Chart.HorizAxisMax = 150.
Chart.HorizAxisMin = 0.
Chart.VertAxisMax = 20.0
Chart.VertAxisMin = 0.
Chart.AddAxisLabel 1 , "Current [microA]"
Chart.AddAxisLabel 2 , "Voltage [V]"
rem **********************************************************************
rem * Set the filename, save the image and write the image tag
rem **********************************************************************
Chart.FileName = filename_full
Chart.SaveChart
line="
"
Response.Write (line)
rem **********************************************************************
rem * Destroy the object
rem **********************************************************************
Set Chart = nothing
If Not Siv1.BOF Then
Siv1.MoveFirst
End If
If Not Siv2.BOF Then
Siv2.MoveFirst
End If
%>
Measurement Date
Measurement Type
Operator
Operator's Comments
Temperature
Humidity
<%=logdate1%>
<%=measurement1%>
<%=operator1%>
<%=comm1%>
<%If Not (Siv1.EOF or Siv1.BOF) Then
Response.Write CStr(Siv1("temperature")) & "°C"
Else
Response.Write "°C"
End If%>
<%If Not (Siv1.EOF or Siv1.BOF) Then
Response.Write CStr(Siv1("humidity")) & "%"
Else
Response.Write "%"
End If%>
<%=logdate2%>
<%=measurement2%>
<%=operator2%>
<%=comm2%>
<%If Not (Siv2.EOF or Siv2.BOF) Then
Response.Write CStr(Siv2("temperature")) & "°C"
Else
Response.Write "°C"
End If%>
<%If Not (Siv2.EOF or Siv2.BOF) Then
Response.Write CStr(Siv2("humidity")) & "%"
Else
Response.Write "%"
End If%>
<%
rowid_list.MoveNext
Loop
%>
<%
' Database is not needed anymore !
Connection.Close
%>