Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
Public Serial1 As Serial
Private Sg As LedControl
Private bc As ByteConverter
'33Kohm resistor should be connected between pin 18(ISET) and pin 19(V+) of MAX7219
'CNQ-3641 4 digits 7-segment display module used(com cathode)
End Sub
Private Sub AppStart
Serial1.Initialize(115200)
Log("AppStart")
Sg.Initialize(12,11,10,1)
Sg.Shutdown(0,False)
Sg.SetIntensity(0,8)
Sg.SetScanLimit(0,4) '
Sg.ClearDisplay(0)
RunTest
End Sub
private Sub PrintMAX(Address As Int,Str() As Byte)
Dim ArrayIndex As Byte
Dim S As String
Dim isDP As Int = bc.IndexOf(Str,".".GetBytes) 'check if DP in string and get index(place)
If isDP > 0 Then
Str = ReplaceString(Str,".".GetBytes,"".GetBytes ) 'remove DP from original string
End If
Do While ArrayIndex < Str.Length
S = bc.StringFromBytes(Array As Byte(Str(ArrayIndex)))
Sg.SetChar(Address,ArrayIndex,s,False)
ArrayIndex = ArrayIndex + 1
Loop
Sg.SetLed(0,isDP-1,0,True) 'place DP
End Sub
private Sub RunTest()
PrintMAX(0,"HoLA")
Delay(1000)
Sg.ClearDisplay(0)
PrintMAX(0,"b4A")
Delay(1000)
Sg.ClearDisplay(0)
PrintMAX(0,"12.34")
Delay(1000)
PrintMAX(0,"0.000")
Delay(1000)
PrintMAX(0,NumberFormat(55/16,2,2))
Delay(1000)
End Sub
Public Sub ReplaceString(Original() As Byte, SearchFor() As Byte, ReplaceWith() As Byte) As Byte()
'count number of occurrences
Dim c As Int = 0
Dim i As Int
If SearchFor.Length <> ReplaceWith.Length Then
i = bc.IndexOf(Original, SearchFor)
Do While i > -1
c = c + 1
i = bc.IndexOf2(Original, SearchFor, i + SearchFor.Length)
Loop
End If
Dim result(Original.Length + c * (ReplaceWith.Length - SearchFor.Length)) As Byte
Dim prevIndex As Int = 0
Dim targetIndex As Int = 0
i = bc.IndexOf(Original, SearchFor)
Do While i > -1
bc.ArrayCopy2(Original, prevIndex, result, targetIndex, i - prevIndex)
targetIndex = targetIndex + i - prevIndex
bc.ArrayCopy2(ReplaceWith, 0, result, targetIndex, ReplaceWith.Length)
targetIndex = targetIndex + ReplaceWith.Length
prevIndex = i + SearchFor.Length
i = bc.IndexOf2(Original, SearchFor, prevIndex)
Loop
If prevIndex < Original.Length Then
bc.ArrayCopy2(Original, prevIndex, result, targetIndex, Original.Length - prevIndex)
End If
Return result
End Sub