#Region Project Attributes
#MainFormWidth: 800
#MainFormHeight: 800
#End Region
#AdditionalJar: jspice-0.0.1.jar
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private xui As XUI
Private TextArea1 As TextArea
Private Pane1 As Pane
Dim lc1 As linechart
Dim myLineChart As JavaObject
Dim lclabel As Label
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.RootPane.LoadLayout("Layout1")
MainForm.Show
TextArea1.Text = ""
Dim spice As JSpice
spice.Initialize
lclabel.Text = ""
lclabel.TextColor = fx.Colors.Red
'THIS IS EREL's EXAMPLE USING NETLISTBUILDER
' Dim builder As NetlistBuilder
' builder.Initialize
' builder.AddNetlistDCCurrent("a", 1, Array As String("0", "1")).AddNetlistResistor("R1", 10, Array As String("1", "0"))
' builder.AddNetlistResistor("R2", 1000, Array As String("1", "2")).AddNetlistResistor("R3", 1000, Array As String("2", "0"))
' Dim Netlist As JavaObject = builder.Build
' spice.Simulate(Netlist)
'' 'THIS IS EREL'S EXAMPLE USING IVR
'' Dim netlist1 As IVR
'' netlist1.Initialize
'' Dim dcCurrent As Double = 1
'' Dim R1 As Double = 10
'' Dim R2 As Double = 1000
'' Dim R3 As Double = 1000
'' netlist1.addNetlistDCCurrent("a", dcCurrent, Array As String("0", "1"))
'' netlist1.addNetlistResistor("R1", R1, Array As String("1", "0"))
'' netlist1.addNetlistResistor("R2", R2, Array As String("1", "2"))
'' netlist1.addNetlistResistor("R3", R3, Array As String("2", "0"))
'' spice.Simulate(netlist1.build)
''
'' '*******************************************************************************************************************************
'' 'THIS IS WE SECOND EXAMPLE IN THE GITHUB POSTING / LINK
'' Dim netlist2 As IVR 'use for DC Current Source, DC Voltage Source, and Resistors
'' netlist2.Initialize
'' Dim dcCurrent As Double = 0.02
'' netlist2.addNetlistDCCurrent("a", dcCurrent, Array As String("0", "4")) 'set the current source
'' Dim dcVoltage As Double = 10
'' netlist2.addNetlistDCVoltage("x", dcVoltage, Array As String("2", "5")) 'set the voltage source
''
'' Dim R1 As Double = 100
'' netlist2.addNetlistResistor("R1", R1, Array As String("5", "0")) 'set the resistors
'' Dim R2 As Double = 1000
'' netlist2.addNetlistResistor("R2", R2, Array As String("0", "3"))
'' Dim R3 As Double = 1000
'' netlist2.addNetlistResistor("R3", R3, Array As String("2", "3"))
'' Dim R4 As Double = 100
'' netlist2.addNetlistResistor("R4", R4, Array As String("1", "2"))
'' Dim R5 As Double = 1000
'' netlist2.addNetlistResistor("R5", R5, Array As String("3", "0"))
'' Dim R6 As Double = 10000
'' netlist2.addNetlistResistor("R6", R6, Array As String("1", "4"))
''
'' spice.Simulate(netlist2.build)
'**********************************************************************************************************************************
'THIS IS AN EXAMPLE OF DC SWEEP ANALYSIS - IT WILL SHOW A GRAPH
spice.Initialize
Dim netlist3 As IVR
netlist3.Initialize
Dim dcVoltage As Double = 10
netlist3.addNetlistDCVoltage("x", dcVoltage, Array As String("1", "0")) 'set the voltage source
Dim R4 As Double = 100
netlist3.addNetlistResistor("R4", R4, Array As String("1", "2")) 'set the resistors
Dim R3 As Double = 1000
netlist3.addNetlistResistor("R3", R3, Array As String("2", "3")) 'set the resistors
Dim R2 As Double = 1000
netlist3.addNetlistResistor("R2", R2, Array As String("3", "0")) 'set the resistors
Dim R1 As Double = 100
netlist3.addNetlistResistor("R1", R1, Array As String("2", "0")) 'set the resistors
Dim startval As Double = 100
Dim endval As Double = 10000
Dim stepval As Double = 100
Dim dcSweepConfig As JavaObject
dcSweepConfig.InitializeNewInstance("org.knowm.jspice.simulate.dcsweep.DCSweepConfig", Array("R1", "V(3)", startval, endval, stepval))
Dim nl As JavaObject = netlist3.build
nl.RunMethod("setSimulationConfig", Array(dcSweepConfig))
spice.simulate(nl)
'***************************************************************************************************************************************
End Sub
Sub jspice_result(mystring As String)
Log("back in B4J")
Log(mystring)
TextArea1.Text = TextArea1.Text & mystring & CRLF
Dim yvals As String = mystring.SubString(mystring.LastIndexOf("["))
yvals = yvals.Replace("[", "")
yvals = yvals.Replace("]", "")
Log(yvals)
Dim xvalsBeginIndex As Int = mystring.IndexOf("[")
Dim xvalsEndIndex As Int = mystring.IndexOf("]")
Dim xvals As String = mystring.SubString2(xvalsBeginIndex + 8, xvalsEndIndex)
Log(xvals)
Dim yvalsarray() As String = Regex.Split("," , yvals)
Dim xvalsarray() As String = Regex.Split(",", xvals)
'START OF LINE CHART
'Initialize the chart
lc1.Initialize
'set the title - see the css file for setting the title color
lc1.Title = "DC Sweep Analysis"
lc1.YAxisTitle = "V(3)"
'set the x-axis "values"
lc1.Xvalues = xvalsarray
lc1.XAxisTitle = "R(R1)"
'set series 1 y-axis data
Dim yvalsfloat(yvalsarray.Length) As Float
For i = 0 To yvalsarray.Length - 1
yvalsfloat(i) = yvalsarray(i)
Next
lc1.Yvalues_1 = yvalsfloat
lc1.SeriesName_1 = "Series A"
lc1.YaxisMin = 2.3
lc1.YaxisMax = 5.0
lc1.YaxisStep = 0.5
lc1.ShowSymbols = False
lc1.ShowCrossHair = True
'draw the chart and then get it as a java object
myLineChart = lc1.drawLineChart
'add the line chart object to the root pane
Pane1.AddNode(myLineChart,Pane1.width * 0.025, Pane1.Height * 0.025, Pane1.Width * 0.95, Pane1.Height * 0.95)
End Sub
Sub linechart_value_clicked (mylist As List)
lclabel.Text = ""
For i = 0 To mylist.Size-1
lclabel.Text = lclabel.Text & mylist.get(i) & " "
Next
End Sub