Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private xui As XUI
Private sp As Serial
Private astream As AsyncStreams
Private cmb1 As ComboBox
Private Label1 As Label
Private angle As Double = 40
Private Canvas1 As Canvas
Private Pane1 As Pane
Private lblPeriod As Label
Private lblFreq As Label
Private lblVolt As Label
Private Button1 As Button
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.RootPane.LoadLayout("Layout1")
MainForm.Show
sp.Initialize("")
cmb1.Items.AddAll(sp.ListPorts)
Canvas1.DrawLine(100,100,100 - 80 * Cos(angle * 3.14 / 180),100 - 80 * Sin(angle * 3.14 / 180),fx.Colors.Black, 1dip)
drawVM
End Sub
Sub cmb1_SelectedIndexChanged(Index As Int, Value As Object)
Try
sp.Open(cmb1.Value)
sp.SetParams(9600,8,1,0)
astream.Initialize(sp.GetInputStream, sp.GetOutputStream, "astream")
Label1.Text = "Port Opened"
Catch
Label1.Text = "Port is busy"
Log("Port error")
End Try
End Sub
Sub AStream_NewData (Buffer() As Byte)
Dim freq As Double
Dim volt, period As Double
Dim u4, u3, u2, u1 As Int
If Buffer.Length > 5 Then
If Buffer(1) < 0 Then u1=Buffer(1)+256 Else u1=Buffer(1) 'convert to unsigned byte
If Buffer(2) < 0 Then u2=Buffer(2)+256 Else u2=Buffer(2) 'convert to unsigned byte
If Buffer(3) < 0 Then u3=Buffer(3)+256 Else u3=Buffer(3)
freq=u1*65536 + u2*256 + u3
lblFreq.Text=NumberFormat(freq,1,0)
period=1000000 / freq
lblPeriod.Text=NumberFormat(period,1,1)
Canvas1.DrawRect(10,10,180,180,fx.Colors.White,True,0)
drawVM
If Buffer(4) < 0 Then u4=Buffer(4)+256 Else u4=Buffer(4) 'convert to unsigned byte
volt=(Buffer(5)*256 + u4) / 1023 * 5
lblVolt.text=NumberFormat(volt,1,3) & " V"
angle = (40 + volt * 20) * 3.1415 / 180 'analogue meter
Canvas1.DrawLine(100,100,100 - 80 * Cos(angle),100 - 80 * Sin(angle),fx.Colors.Black, 1dip)
End If
End Sub
Sub drawVM
For i=0 To 5
Canvas1.DrawLine(100-80*Cos((i*20+40)*3.14/180),100-80*Sin((i*20+40)*3.14/180),100-70*Cos((i*20+40)*3.14/180) _
,100-70*Sin((i*20+40)*3.14/180),fx.Colors.Black, 1dip)
Next
End Sub
Sub Button1_Click
cmb1.Items.Clear
cmb1.Items.AddAll(sp.ListPorts)
End Sub
Sub MainForm_Closed
'sp.Close
End Sub