Advertisement
Robomatics

MultiLight

Apr 21st, 2013
512
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 76.45 KB | None | 0 0
  1. 'To do:
  2. 'Fix desyncs, make a marker for nodes and for master chip
  3. 'Create Playlist with hold at end and play time length (overall for that transistion to automake a send time)
  4. 'TicTacToe
  5. 'Make up premade symbols like a heart or a stop symbol for library.
  6. 'Tooltips?
  7. 'Figure out how to select rows in program, as to keep the highlight on the data moved, not the index of the row.
  8. 'change row color clearing to a for statement for all rows.
  9. 'add 'load and run' button under file selection to immediately start playing animation.
  10.  
  11. Imports System.Threading
  12.  
  13. Public Class MultiLight
  14.  
  15.     Dim SerialList As String() = System.IO.Ports.SerialPort.GetPortNames()
  16.     Dim port As String
  17.     Dim counter As Integer = 1
  18.     Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Black, 1)
  19.     Dim PB(192) As System.Windows.Forms.PictureBox
  20.     Dim PBpic(192) As Drawing.Bitmap
  21.     Dim temppic As New Drawing.Bitmap(15, 15)
  22.     Dim GFX(192) As System.Drawing.Graphics
  23.     Dim CS As New BitArray(58176)   'Chip Scenes (576 * 101 = 58176)
  24.     Dim programset As Boolean
  25.     Dim Directory As String = System.IO.Directory.GetCurrentDirectory
  26.     Dim filelist As String() = System.IO.Directory.GetFiles(System.IO.Directory.GetCurrentDirectory, "*.mlf")
  27.     Dim Mainsetupfile As String
  28.     Dim MouseTraxActive As Boolean
  29.     Dim MousedownPB As Boolean
  30.     Dim textshift As Integer
  31.     Dim Playlist As Boolean
  32.     Dim SelectedFile As String
  33.     Dim Playlistcount As Integer
  34.  
  35.     'First Load
  36.     Private Sub MultiLight_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  37.         SerialPort1.Dispose()
  38.         SerialPort1.Close()
  39.         SerialPort1.BaudRate = 9600
  40.         SerialPort1.Parity = IO.Ports.Parity.None
  41.         SerialPort1.DataBits = 8
  42.         SerialPort1.StopBits = 1
  43.         SerialPort1.Handshake = IO.Ports.Handshake.None
  44.         SerialPort1.PortName = "COMNULL"
  45.  
  46.         For Each Me.port In SerialList
  47.             ComboBox1.Items.Add(port)
  48.         Next port
  49.         ComboBox1.Items.Add("TEST")
  50.  
  51.         Call ControlInit()
  52.  
  53.  
  54.         For i = 0 To CS.Length - 1
  55.             CS(i) = False
  56.         Next
  57.  
  58.         For Each file As String In filelist
  59.             ListBox1.Items.Add(file.Substring(Directory.Length + 1))
  60.         Next
  61.  
  62.         programset = True
  63.  
  64.     End Sub
  65.     'Setup PBs
  66.     Private Sub ControlInit()
  67.         Dim point As Drawing.Point
  68.         Dim Startpoint As Drawing.Point
  69.         Dim drawFont As New Font("Arial", 6)
  70.         point.X = 0
  71.         point.Y = 0
  72.  
  73.         'Chip 1
  74.  
  75.         For i = 0 To 191
  76.             Me.PB(i) = New System.Windows.Forms.PictureBox
  77.             Me.PB(i).Enabled = True
  78.             Me.PB(i).Name = "PB" & i
  79.             Me.PB(i).Size = New System.Drawing.Size(15, 15)
  80.             Me.PB(i).Visible = True
  81.             Me.PB(i).BackColor = Color.Black
  82.             Me.PB(i).Parent = GroupBox1
  83.  
  84.  
  85.             'Left Face
  86.             If i >= 0 Then
  87.                 Startpoint.X = 30
  88.                 Startpoint.Y = 100
  89.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (i * 16), Startpoint.Y)
  90.             End If
  91.             If i >= 8 Then
  92.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + ((i - 8) * 16), Startpoint.Y + 16)
  93.             End If
  94.             If i >= 16 Then
  95.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + ((i - 16) * 16), Startpoint.Y + 32)
  96.             End If
  97.             If i >= 24 Then
  98.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + ((i - 24) * 16), Startpoint.Y + 48)
  99.             End If
  100.             If i >= 32 Then
  101.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + ((i - 32) * 16), Startpoint.Y + 64)
  102.             End If
  103.             If i >= 40 Then
  104.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + ((i - 40) * 16), Startpoint.Y + 80)
  105.             End If
  106.             If i >= 48 Then
  107.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + ((i - 48) * 16), Startpoint.Y + 96)
  108.             End If
  109.             If i >= 56 Then
  110.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + ((i - 56) * 16), Startpoint.Y + 112)
  111.             End If
  112.  
  113.             'Left Face
  114.             If i >= 64 Then
  115.                 Startpoint.X = 170
  116.                 Startpoint.Y = 100
  117.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + ((i - 64) * 16), Startpoint.Y)
  118.             End If
  119.             If i >= 72 Then
  120.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 64) - 8) * 16), Startpoint.Y + 16)
  121.             End If
  122.             If i >= 80 Then
  123.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 64) - 16) * 16), Startpoint.Y + 32)
  124.             End If
  125.             If i >= 88 Then
  126.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 64) - 24) * 16), Startpoint.Y + 48)
  127.             End If
  128.             If i >= 96 Then
  129.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 64) - 32) * 16), Startpoint.Y + 64)
  130.             End If
  131.             If i >= 104 Then
  132.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 64) - 40) * 16), Startpoint.Y + 80)
  133.             End If
  134.             If i >= 112 Then
  135.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 64) - 48) * 16), Startpoint.Y + 96)
  136.             End If
  137.             If i >= 120 Then
  138.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 64) - 56) * 16), Startpoint.Y + 112)
  139.             End If
  140.  
  141.             'Bottom Face
  142.             If i >= 128 Then
  143.                 Startpoint.X = 170
  144.                 Startpoint.Y = 240
  145.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + ((i - 128) * 16), Startpoint.Y)
  146.             End If
  147.             If i >= 136 Then
  148.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 128) - 8) * 16), Startpoint.Y + 16)
  149.             End If
  150.             If i >= 144 Then
  151.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 128) - 16) * 16), Startpoint.Y + 32)
  152.             End If
  153.             If i >= 152 Then
  154.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 128) - 24) * 16), Startpoint.Y + 48)
  155.             End If
  156.             If i >= 160 Then
  157.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 128) - 32) * 16), Startpoint.Y + 64)
  158.             End If
  159.             If i >= 168 Then
  160.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 128) - 40) * 16), Startpoint.Y + 80)
  161.             End If
  162.             If i >= 176 Then
  163.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 128) - 48) * 16), Startpoint.Y + 96)
  164.             End If
  165.             If i >= 184 Then
  166.                 Me.PB(i).Location = New System.Drawing.Point(Startpoint.X + (((i - 128) - 56) * 16), Startpoint.Y + 112)
  167.             End If
  168.  
  169.  
  170.             Me.Controls.Add(PB(i))
  171.             AddHandler PB(i).MouseDown, AddressOf PicClickHandler
  172.             AddHandler PB(i).MouseEnter, AddressOf PBEnter
  173.             AddHandler PB(i).MouseLeave, AddressOf PBExit
  174.  
  175.         Next
  176.         For i = 0 To 191
  177.             PBpic(i) = New Drawing.Bitmap(15, 15)
  178.             GFX(i) = System.Drawing.Graphics.FromImage(PBpic(i))
  179.             GFX(i).FillRectangle(Brushes.Black, 0, 0, 15, 15)
  180.             GFX(i).DrawString(i.ToString, drawFont, Brushes.White, point)
  181.             PB(i).Image = PBpic(i)
  182.         Next
  183.  
  184.  
  185.     End Sub
  186.     'PB Clicked
  187.     Private Sub PicClickHandler(ByVal Sender As Object, ByVal e As System.EventArgs)
  188.         PB(0).Focus()
  189.         Dim senderPicBox As PictureBox = CType(Sender, PictureBox)
  190.         Dim index As Integer
  191.         Dim picindex As Integer
  192.         Dim pointervalue As Integer
  193.         pointervalue = (NumericUpDown2.Value * 576)
  194.         index = (System.Array.IndexOf(PB, Sender)) * 3
  195.         picindex = (System.Array.IndexOf(PB, Sender))
  196.  
  197.         ' CS(index + 0) = Red
  198.         ' CS(index + 1) = Green
  199.         ' CS(index + 2) = Blue
  200.  
  201.         'Is Black, make Red
  202.         If RadioButton1.Checked = True Then
  203.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  204.             GFX(picindex).FillRectangle(Brushes.Red, 0, 0, 15, 15)
  205.             PB(picindex).Image = PBpic(picindex)
  206.             CS(pointervalue + index) = True
  207.             CS(pointervalue + index + 1) = False
  208.             CS(pointervalue + index + 2) = False
  209.             Return
  210.         End If
  211.         'Is Red, make Green
  212.         If RadioButton2.Checked = True Then
  213.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  214.             GFX(picindex).FillRectangle(Brushes.LimeGreen, 0, 0, 15, 15)
  215.             PB(picindex).Image = PBpic(picindex)
  216.             CS(pointervalue + index) = False
  217.             CS(pointervalue + index + 1) = True
  218.             CS(pointervalue + index + 2) = False
  219.             Return
  220.         End If
  221.         'Is Green, make Blue
  222.         If RadioButton3.Checked = True Then
  223.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  224.             GFX(picindex).FillRectangle(Brushes.Blue, 0, 0, 15, 15)
  225.             PB(picindex).Image = PBpic(picindex)
  226.             CS(pointervalue + index) = False
  227.             CS(pointervalue + index + 1) = False
  228.             CS(pointervalue + index + 2) = True
  229.             Return
  230.         End If
  231.         'Is Blue, make Teal
  232.         If RadioButton4.Checked = True Then
  233.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  234.             GFX(picindex).FillRectangle(Brushes.Aquamarine, 0, 0, 15, 15)
  235.             PB(picindex).Image = PBpic(picindex)
  236.             CS(pointervalue + index) = False
  237.             CS(pointervalue + index + 1) = True
  238.             CS(pointervalue + index + 2) = True
  239.             Return
  240.         End If
  241.         'Is Teal, make Pink
  242.         If RadioButton5.Checked = True Then
  243.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  244.             GFX(picindex).FillRectangle(Brushes.Pink, 0, 0, 15, 15)
  245.             PB(picindex).Image = PBpic(picindex)
  246.             CS(pointervalue + index) = True
  247.             CS(pointervalue + index + 1) = False
  248.             CS(pointervalue + index + 2) = True
  249.             Return
  250.         End If
  251.         'Is Pink, make Yellow
  252.         If RadioButton6.Checked = True Then
  253.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  254.             GFX(picindex).FillRectangle(Brushes.Yellow, 0, 0, 15, 15)
  255.             PB(picindex).Image = PBpic(picindex)
  256.             CS(pointervalue + index) = True
  257.             CS(pointervalue + index + 1) = True
  258.             CS(pointervalue + index + 2) = False
  259.             Return
  260.         End If
  261.         'Is Yellow, make White
  262.         If RadioButton7.Checked = True Then
  263.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  264.             GFX(picindex).FillRectangle(Brushes.White, 0, 0, 15, 15)
  265.             PB(picindex).Image = PBpic(picindex)
  266.             CS(pointervalue + index) = True
  267.             CS(pointervalue + index + 1) = True
  268.             CS(pointervalue + index + 2) = True
  269.             Return
  270.         End If
  271.         'Is White, make Black
  272.         If RadioButton8.Checked = True Then
  273.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  274.             GFX(picindex).FillRectangle(Brushes.Black, 0, 0, 15, 15)
  275.             PB(picindex).Image = PBpic(picindex)
  276.             CS(pointervalue + index) = False
  277.             CS(pointervalue + index + 1) = False
  278.             CS(pointervalue + index + 2) = False
  279.             Return
  280.         End If
  281.  
  282.     End Sub
  283.     'Start/Stop Button
  284.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  285.  
  286.         If SerialPort1.IsOpen = True Or ComboBox1.Text = "TEST" Then
  287.             If Timer2.Enabled = True Then
  288.                 Try
  289.                     DGV.Rows(Playlistcount - 1).DefaultCellStyle.BackColor = Color.White
  290.                 Catch ex As Exception
  291.                 End Try
  292.                 Timer2.Enabled = False
  293.                 Button1.Text = "Start"
  294.                 NumericUpDown2.Enabled = True
  295.                 NumericUpDown3.Enabled = True
  296.                 ComboBox1.Enabled = True
  297.                 Button17.Enabled = True
  298.                 Playlist = False
  299.             Else
  300.                 counter = 1
  301.                 Timer2.Interval = NumericUpDown25.Value
  302.                 Button1.Text = "Stop"
  303.                 Timer2.Enabled = True
  304.                 NumericUpDown2.Value = 1
  305.                 NumericUpDown2.Enabled = False
  306.                 NumericUpDown3.Enabled = False
  307.                 ComboBox1.Enabled = False
  308.                 Button17.Enabled = False
  309.                 Playlist = False
  310.             End If
  311.         End If
  312.     End Sub
  313.     'Send
  314.     Private Sub send()
  315.  
  316.         Dim CB(84) As Byte      'Compiled Bytes (4bytes per chip, most is 20 chips, 20 * 4 = 80
  317.         Dim pointer As Integer
  318.         pointer = counter * 576
  319.         Dim subcount As Integer = 0
  320.  
  321.  
  322.         NumericUpDown2.Value = counter
  323.  
  324.  
  325.             Do Until subcount >= 79
  326.             If subcount <> 64 And subcount <> 72 Then
  327.                 Dim mData_Out1() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0)}
  328.                 For Each b As Boolean In mData_Out1
  329.                     CB(subcount) = CByte(CB(subcount) << 1) 'shift
  330.                     If b Then CB(subcount) = CByte(CB(subcount) Or 1) 'or if true
  331.                 Next
  332.                 pointer = pointer + 8
  333.                 Dim mData_Out2() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0)}
  334.                 For Each b As Boolean In mData_Out2
  335.                     CB(subcount + 1) = CByte(CB(subcount + 1) << 1) 'shift
  336.                     If b Then CB(subcount + 1) = CByte(CB(subcount + 1) Or 1) 'or if true
  337.                 Next
  338.                 pointer = pointer + 8
  339.                 Dim mData_Out3() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0)}
  340.                 For Each b As Boolean In mData_Out3
  341.                     CB(subcount + 2) = CByte(CB(subcount + 2) << 1) 'shift
  342.                     If b Then CB(subcount + 2) = CByte(CB(subcount + 2) Or 1) 'or if true
  343.                 Next
  344.                 pointer = pointer + 8
  345.                 Dim mData_Out4() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0)}
  346.                 For Each b As Boolean In mData_Out4
  347.                     CB(subcount + 3) = CByte(CB(subcount + 3) << 1) 'shift
  348.                     If b Then CB(subcount + 3) = CByte(CB(subcount + 3) Or 1) 'or if true
  349.                 Next
  350.                 'CORRECTIONS
  351.             Else
  352.                 'For set 64 (Node 16) 7-8
  353.                 If subcount = 64 Then
  354.                     Dim mData_Out1() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0)}
  355.                     For Each b As Boolean In mData_Out1
  356.                         CB(subcount) = CByte(CB(subcount) << 1) 'shift
  357.                         If b Then CB(subcount) = CByte(CB(subcount) Or 1) 'or if true
  358.                     Next
  359.                     pointer = pointer + 8
  360.                     Dim mData_Out2() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0)}
  361.                     For Each b As Boolean In mData_Out2
  362.                         CB(subcount + 1) = CByte(CB(subcount + 1) << 1) 'shift
  363.                         If b Then CB(subcount + 1) = CByte(CB(subcount + 1) Or 1) 'or if true
  364.                     Next
  365.                     pointer = pointer + 8
  366.                     Dim mData_Out3() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0)}
  367.                     For Each b As Boolean In mData_Out3
  368.                         CB(subcount + 2) = CByte(CB(subcount + 2) << 1) 'shift
  369.                         If b Then CB(subcount + 2) = CByte(CB(subcount + 2) Or 1) 'or if true
  370.                     Next
  371.                     pointer = pointer + 8
  372.                     Dim mData_Out4() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3)}
  373.                     For Each b As Boolean In mData_Out4
  374.                         CB(subcount + 3) = CByte(CB(subcount + 3) << 1) 'shift
  375.                         If b Then CB(subcount + 3) = CByte(CB(subcount + 3) Or 1) 'or if true
  376.                     Next
  377.                     'For set 72 (Node 18) 2-4 1-5
  378.                 Else
  379.                     Dim mData_Out1() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 8 + 3), CS(pointer + 8 + 2), CS(pointer + 8 + 1), CS(pointer + 8 + 6), CS(pointer + 8 + 5), CS(pointer + 8 + 4)}
  380.                     For Each b As Boolean In mData_Out1
  381.                         CB(subcount) = CByte(CB(subcount) << 1) 'shift
  382.                         If b Then CB(subcount) = CByte(CB(subcount) Or 1) 'or if true
  383.                     Next
  384.                     pointer = pointer + 8
  385.                     Dim mData_Out2() As Boolean = {CS(pointer + 7), CS(pointer - 8 + 2), CS(pointer - 8 + 1), CS(pointer - 8 + 0), CS(pointer - 8 + 5), CS(pointer - 8 + 4), CS(pointer - 8 + 3), CS(pointer + 0)}
  386.                     For Each b As Boolean In mData_Out2
  387.                         CB(subcount + 1) = CByte(CB(subcount + 1) << 1) 'shift
  388.                         If b Then CB(subcount + 1) = CByte(CB(subcount + 1) Or 1) 'or if true
  389.                     Next
  390.                     pointer = pointer + 8
  391.                     Dim mData_Out3() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0)}
  392.                     For Each b As Boolean In mData_Out3
  393.                         CB(subcount + 2) = CByte(CB(subcount + 2) << 1) 'shift
  394.                         If b Then CB(subcount + 2) = CByte(CB(subcount + 2) Or 1) 'or if true
  395.                     Next
  396.                     pointer = pointer + 8
  397.                     Dim mData_Out4() As Boolean = {CS(pointer + 7), CS(pointer + 6), CS(pointer + 5), CS(pointer + 4), CS(pointer + 3), CS(pointer + 2), CS(pointer + 1), CS(pointer + 0)}
  398.                     For Each b As Boolean In mData_Out4
  399.                         CB(subcount + 3) = CByte(CB(subcount + 3) << 1) 'shift
  400.                         If b Then CB(subcount + 3) = CByte(CB(subcount + 3) Or 1) 'or if true
  401.                     Next
  402.                 End If
  403.             End If
  404.  
  405.             'c
  406.            
  407.             '/c
  408.  
  409.             pointer = pointer + 6
  410.             subcount = subcount + 4
  411.         Loop
  412.  
  413.  
  414.  
  415.         If CheckBox1.Checked = False Then
  416.             Call Scenechange()
  417.         End If
  418.  
  419.         If ComboBox1.Text <> "TEST" Then
  420.             Try
  421.                 SerialPort1.DiscardOutBuffer()
  422.                 For i = 0 To 79
  423.                     SerialPort1.Write(CB, i, 1)
  424.                 Next
  425.             Catch ex As Exception
  426.                 Timer2.Enabled = False
  427.                 MsgBox("Send Failed, get Brandon.")
  428.             End Try
  429.         End If
  430.     End Sub
  431.     'Ever Ticking Timer
  432.     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  433.  
  434.         If ComboBox1.Items.Contains(ComboBox1.Text) = True And SerialPort1.PortName <> ComboBox1.Text And ComboBox1.Text <> "TEST" Then
  435.             If SerialPort1.IsOpen = True Then
  436.                 SerialPort1.Close()
  437.                 Thread.Sleep(500)
  438.             End If
  439.             SerialPort1.PortName = ComboBox1.Text
  440.             SerialPort1.ReadTimeout = 500
  441.             SerialPort1.WriteTimeout = 500
  442.             SerialPort1.Encoding = System.Text.Encoding.UTF8
  443.             SerialPort1.Open()
  444.         End If
  445.  
  446.     End Sub
  447.     'Send Timer
  448.     Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
  449.  
  450.  
  451.         counter = counter + 1
  452.  
  453.         If Playlist = True Then
  454.             If counter = NumericUpDown3.Value + 1 Then
  455.                 If Playlistcount <> DGV.RowCount - 1 Then
  456.                     Playlistcount = Playlistcount + 1
  457.                     DGV.Rows(Playlistcount).DefaultCellStyle.BackColor = Color.Blue
  458.                     DGV.Rows(Playlistcount - 1).DefaultCellStyle.BackColor = Color.White
  459.                     If DGV.Rows(Playlistcount).Cells(0).Value = "PAUSE" Then
  460.                         Timer2.Enabled = False
  461.                         Return
  462.                     End If
  463.  
  464.                     SelectedFile = DGV.Rows(Playlistcount).Cells(0).Value
  465.                     Timer2.Enabled = False
  466.                     Call loadz()
  467.                     Timer2.Enabled = True
  468.                     NumericUpDown2.Value = 1
  469.                 Else
  470.                     Timer2.Enabled = False
  471.                     Button17.Text = "Start Playlist"
  472.                     NumericUpDown2.Enabled = True
  473.                     NumericUpDown3.Enabled = True
  474.                     Button17.Enabled = True
  475.                     ComboBox1.Enabled = True
  476.                     Playlist = False
  477.                     Return
  478.                 End If
  479.             End If
  480.         End If
  481.  
  482.         If counter = NumericUpDown3.Value + 1 Then
  483.             counter = 1
  484.         End If
  485.  
  486.  
  487.         Call send()
  488.  
  489.  
  490.     End Sub
  491.     'Max Scene
  492.     Private Sub NumericUpDown3_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown3.ValueChanged
  493.         NumericUpDown2.Maximum = NumericUpDown3.Value
  494.     End Sub
  495.     'Scene Change
  496.     Private Sub Scenechange()
  497.  
  498.         Dim pointervalue As Integer
  499.         pointervalue = (NumericUpDown2.Value * 576)
  500.         Dim index As Integer = 0
  501.         Dim point As Drawing.Point
  502.         Dim drawFont As New Font("Arial", 6)
  503.         point.X = 0
  504.         point.Y = 0
  505.  
  506.         For picindex = 0 To 191
  507.             If CS(pointervalue + index) = True And CS(pointervalue + index + 1) = False And CS(pointervalue + index + 2) = False Then
  508.                 GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  509.                 GFX(picindex).FillRectangle(Brushes.Red, 0, 0, 15, 15)
  510.                 PB(picindex).Image = PBpic(picindex)
  511.             End If
  512.             If CS(pointervalue + index) = False And CS(pointervalue + index + 1) = True And CS(pointervalue + index + 2) = False Then
  513.                 GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  514.                 GFX(picindex).FillRectangle(Brushes.LimeGreen, 0, 0, 15, 15)
  515.                 PB(picindex).Image = PBpic(picindex)
  516.             End If
  517.             If CS(pointervalue + index) = False And CS(pointervalue + index + 1) = False And CS(pointervalue + index + 2) = True Then
  518.                 GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  519.                 GFX(picindex).FillRectangle(Brushes.Blue, 0, 0, 15, 15)
  520.                 PB(picindex).Image = PBpic(picindex)
  521.             End If
  522.             If CS(pointervalue + index) = False And CS(pointervalue + index + 1) = True And CS(pointervalue + index + 2) = True Then
  523.                 GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  524.                 GFX(picindex).FillRectangle(Brushes.Aquamarine, 0, 0, 15, 15)
  525.                 PB(picindex).Image = PBpic(picindex)
  526.             End If
  527.             If CS(pointervalue + index) = True And CS(pointervalue + index + 1) = False And CS(pointervalue + index + 2) = True Then
  528.                 GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  529.                 GFX(picindex).FillRectangle(Brushes.Pink, 0, 0, 15, 15)
  530.                 PB(picindex).Image = PBpic(picindex)
  531.             End If
  532.             If CS(pointervalue + index) = True And CS(pointervalue + index + 1) = True And CS(pointervalue + index + 2) = False Then
  533.                 GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  534.                 GFX(picindex).FillRectangle(Brushes.Yellow, 0, 0, 15, 15)
  535.                 PB(picindex).Image = PBpic(picindex)
  536.             End If
  537.             If CS(pointervalue + index) = True And CS(pointervalue + index + 1) = True And CS(pointervalue + index + 2) = True Then
  538.                 GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  539.                 GFX(picindex).FillRectangle(Brushes.White, 0, 0, 15, 15)
  540.                 PB(picindex).Image = PBpic(picindex)
  541.             End If
  542.             If CS(pointervalue + index) = False And CS(pointervalue + index + 1) = False And CS(pointervalue + index + 2) = False Then
  543.                 GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  544.                 GFX(picindex).FillRectangle(Brushes.Black, 0, 0, 15, 15)
  545.                 GFX(picindex).DrawString(picindex.ToString, drawFont, Brushes.White, Point)
  546.                 PB(picindex).Image = PBpic(picindex)
  547.             End If
  548.             index = index + 3
  549.         Next
  550.  
  551.  
  552.     End Sub
  553.     'Change scene on numeric change
  554.     Private Sub NumericUpDown2_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown2.ValueChanged
  555.         If programset = True And CheckBox1.Checked = False And Timer2.Enabled = False Then
  556.             Call Scenechange()
  557.         End If
  558.     End Sub
  559.     'Mouse Wheel
  560.     Private Sub panel1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
  561.         If e.Delta = 120 And NumericUpDown2.Value <> NumericUpDown3.Value Then
  562.             NumericUpDown2.Value = NumericUpDown2.Value + 1
  563.             Call Scenechange()
  564.         End If
  565.         If e.Delta = -120 And NumericUpDown2.Value <> 1 Then
  566.             NumericUpDown2.Value = NumericUpDown2.Value - 1
  567.             Call Scenechange()
  568.         End If
  569.     End Sub
  570.     'Copy from Prev
  571.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  572.         Dim pointervalue As Integer
  573.         pointervalue = (NumericUpDown2.Value * 576)
  574.  
  575.         If NumericUpDown2.Value <> 1 Then
  576.             For i = 0 To 575
  577.                 CS(pointervalue + i) = CS(pointervalue + i - 576)
  578.             Next
  579.         End If
  580.         Call Scenechange()
  581.     End Sub
  582.     'Copy from Next
  583.     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  584.         Dim pointervalue As Integer
  585.         pointervalue = (NumericUpDown2.Value * 576)
  586.  
  587.         If NumericUpDown2.Value <> 1 Then
  588.             For i = 0 To 575
  589.                 CS(pointervalue + i) = CS(pointervalue + i + 576)
  590.             Next
  591.         End If
  592.         Call Scenechange()
  593.     End Sub
  594.     'Load
  595.     Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
  596.         If ListBox1.SelectedIndex <> -1 Then
  597.             SelectedFile = filelist(ListBox1.SelectedIndex)
  598.             Call loadz()
  599.         End If
  600.     End Sub
  601.     Private Sub loadz()
  602.  
  603.         'File Layout ex ^S1 version ^S2 Total Scenes ^S3...
  604.         '^S1 = Version
  605.         '^S2 = Total Scenes
  606.         '^S3 = Speed
  607.         '^S4 = Data
  608.         '^S5 = End
  609.  
  610.  
  611.         If System.IO.File.Exists(SelectedFile) = True Then
  612.  
  613.             GC.Collect()
  614.             Mainsetupfile = System.IO.File.ReadAllText(SelectedFile)
  615.             GC.Collect()
  616.  
  617.             'Scenes
  618.             NumericUpDown3.Value = Mainsetupfile.Substring(Mainsetupfile.IndexOf("^S2") + 3, (Mainsetupfile.IndexOf("^S3") - (Mainsetupfile.IndexOf("^S2") + 3)))
  619.  
  620.             'Speed
  621.             NumericUpDown25.Value = Mainsetupfile.Substring(Mainsetupfile.IndexOf("^S3") + 3, (Mainsetupfile.IndexOf("^S4") - (Mainsetupfile.IndexOf("^S3") + 3)))
  622.  
  623.             'Data
  624.             Dim LongString As String = ""
  625.             LongString = Mainsetupfile.Substring(Mainsetupfile.IndexOf("^S4") + 3, (Mainsetupfile.IndexOf("^S5") - (Mainsetupfile.IndexOf("^S4") + 3)))
  626.             For i = 0 To CS.Length - 1
  627.                 If LongString(i) = "1" Then
  628.                     CS(i) = True
  629.                 ElseIf LongString(i) = "0" Then
  630.                     CS(i) = False
  631.                 Else
  632.                     MsgBox("Get Brandon...")
  633.                 End If
  634.             Next
  635.             counter = 1
  636.             Timer2.Interval = NumericUpDown25.Value
  637.  
  638.             If CheckBox1.Checked = False And Playlist = False Then
  639.                 Scenechange()
  640.             End If
  641.         Else
  642.  
  643.             MsgBox("Selection does not exist!")
  644.         End If
  645.     End Sub
  646.     'Save
  647.     Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
  648.  
  649.         If TextBox1.Text = "" Then
  650.             MsgBox("Need a name for this")
  651.             Return
  652.         End If
  653.  
  654.         Label9.Visible = True
  655.         Label9.Text = "Saving..."
  656.  
  657.         'CS to Bytes, the easy but nasty version...
  658.         Dim Longstring As String = ""
  659.         For i = 0 To CS.Length - 1
  660.             If CS(i) = True Then
  661.                 Longstring = Longstring & "1"
  662.             Else
  663.                 Longstring = Longstring & "0"
  664.             End If
  665.         Next
  666.  
  667.         'Clear setup
  668.         Mainsetupfile = ""
  669.         'Version
  670.         Mainsetupfile = Mainsetupfile & "^S1" & "1"
  671.         'Total Scenes
  672.         Mainsetupfile = Mainsetupfile & "^S2" & NumericUpDown3.Value.ToString
  673.         'Speed
  674.         Mainsetupfile = Mainsetupfile & "^S3" & NumericUpDown25.Value.ToString
  675.         'Data
  676.         Mainsetupfile = Mainsetupfile & "^S4" & Longstring
  677.         'End
  678.         Mainsetupfile = Mainsetupfile & "^S5"
  679.  
  680.  
  681.         GC.Collect()
  682.         System.IO.File.WriteAllText(Directory & "\" & TextBox1.Text & ".mlf", Mainsetupfile)
  683.         GC.Collect()
  684.  
  685.         Label9.Text = "Saved!!"
  686.  
  687.         Call Refresh()
  688.  
  689.     End Sub
  690.     'Refresh
  691.     Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
  692.         Call Refreshz()
  693.     End Sub
  694.     Private Sub Refreshz()
  695.         ListBox1.Items.Clear()
  696.         Dim filelist2 As String() = System.IO.Directory.GetFiles(System.IO.Directory.GetCurrentDirectory, "*.mlf")
  697.         For Each file As String In filelist2
  698.             ListBox1.Items.Add(file.Substring(Directory.Length + 1))
  699.         Next
  700.         filelist = filelist2
  701.     End Sub
  702.     'Remove Saved!! label.
  703.     Private Sub Button6_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button6.LostFocus
  704.         Label9.Visible = False
  705.     End Sub
  706.     'New
  707.     Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
  708.  
  709.         For i = 0 To CS.Length - 1
  710.             CS(i) = False
  711.         Next
  712.  
  713.         Scenechange()
  714.  
  715.     End Sub
  716.     'Shifts
  717.     Private Sub ShiftRight(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
  718.         Dim pointervalue As Integer
  719.         pointervalue = (NumericUpDown2.Value * 576)
  720.  
  721.         Dim index As Integer = 575
  722.         Do Until index = 0
  723.             Select Case index
  724.                 Case (64 * 3)
  725.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  726.                 Case (64 * 3) + 1
  727.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  728.                 Case (64 * 3) + 2
  729.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  730.                 Case (72 * 3)
  731.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  732.                 Case (72 * 3) + 1
  733.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  734.                 Case (72 * 3) + 2
  735.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  736.                 Case (80 * 3)
  737.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  738.                 Case (80 * 3) + 1
  739.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  740.                 Case (80 * 3) + 2
  741.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  742.                 Case (88 * 3)
  743.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  744.                 Case (88 * 3) + 1
  745.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  746.                 Case (88 * 3) + 2
  747.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  748.                 Case (96 * 3)
  749.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  750.                 Case (96 * 3) + 1
  751.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  752.                 Case (96 * 3) + 2
  753.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  754.                 Case (104 * 3)
  755.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  756.                 Case (104 * 3) + 1
  757.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  758.                 Case (104 * 3) + 2
  759.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  760.                 Case (112 * 3)
  761.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  762.                 Case (112 * 3) + 1
  763.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  764.                 Case (112 * 3) + 2
  765.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  766.                 Case (120 * 3)
  767.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  768.                 Case (120 * 3) + 1
  769.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  770.                 Case (120 * 3) + 2
  771.                     CS(pointervalue + index) = CS(pointervalue + index - (57 * 3))
  772.  
  773.                 Case (0 * 3)
  774.                     CS(pointervalue + index) = False
  775.                 Case (0 * 3) + 1
  776.                     CS(pointervalue + index) = False
  777.                 Case (0 * 3) + 2
  778.                     CS(pointervalue + index) = False
  779.                 Case (8 * 3)
  780.                     CS(pointervalue + index) = False
  781.                 Case (8 * 3) + 1
  782.                     CS(pointervalue + index) = False
  783.                 Case (8 * 3) + 2
  784.                     CS(pointervalue + index) = False
  785.                 Case (16 * 3)
  786.                     CS(pointervalue + index) = False
  787.                 Case (16 * 3) + 1
  788.                     CS(pointervalue + index) = False
  789.                 Case (16 * 3) + 2
  790.                     CS(pointervalue + index) = False
  791.                 Case (24 * 3)
  792.                     CS(pointervalue + index) = False
  793.                 Case (24 * 3) + 1
  794.                     CS(pointervalue + index) = False
  795.                 Case (24 * 3) + 2
  796.                     CS(pointervalue + index) = False
  797.                 Case (32 * 3)
  798.                     CS(pointervalue + index) = False
  799.                 Case (32 * 3) + 1
  800.                     CS(pointervalue + index) = False
  801.                 Case (32 * 3) + 2
  802.                     CS(pointervalue + index) = False
  803.                 Case (40 * 3)
  804.                     CS(pointervalue + index) = False
  805.                 Case (40 * 3) + 1
  806.                     CS(pointervalue + index) = False
  807.                 Case (40 * 3) + 2
  808.                     CS(pointervalue + index) = False
  809.                 Case (48 * 3)
  810.                     CS(pointervalue + index) = False
  811.                 Case (48 * 3) + 1
  812.                     CS(pointervalue + index) = False
  813.                 Case (48 * 3) + 2
  814.                     CS(pointervalue + index) = False
  815.                 Case (56 * 3)
  816.                     CS(pointervalue + index) = False
  817.                 Case (56 * 3) + 1
  818.                     CS(pointervalue + index) = False
  819.                 Case (56 * 3) + 2
  820.                     CS(pointervalue + index) = False
  821.  
  822.                 Case (128 * 3)
  823.                     CS(pointervalue + index) = False
  824.                 Case (128 * 3) + 1
  825.                     CS(pointervalue + index) = False
  826.                 Case (128 * 3) + 2
  827.                     CS(pointervalue + index) = False
  828.                 Case (136 * 3)
  829.                     CS(pointervalue + index) = False
  830.                 Case (136 * 3) + 1
  831.                     CS(pointervalue + index) = False
  832.                 Case (136 * 3) + 2
  833.                     CS(pointervalue + index) = False
  834.                 Case (144 * 3)
  835.                     CS(pointervalue + index) = False
  836.                 Case (144 * 3) + 1
  837.                     CS(pointervalue + index) = False
  838.                 Case (144 * 3) + 2
  839.                     CS(pointervalue + index) = False
  840.                 Case (152 * 3)
  841.                     CS(pointervalue + index) = False
  842.                 Case (152 * 3) + 1
  843.                     CS(pointervalue + index) = False
  844.                 Case (152 * 3) + 2
  845.                     CS(pointervalue + index) = False
  846.                 Case (160 * 3)
  847.                     CS(pointervalue + index) = False
  848.                 Case (160 * 3) + 1
  849.                     CS(pointervalue + index) = False
  850.                 Case (160 * 3) + 2
  851.                     CS(pointervalue + index) = False
  852.                 Case (168 * 3)
  853.                     CS(pointervalue + index) = False
  854.                 Case (168 * 3) + 1
  855.                     CS(pointervalue + index) = False
  856.                 Case (168 * 3) + 2
  857.                     CS(pointervalue + index) = False
  858.                 Case (176 * 3)
  859.                     CS(pointervalue + index) = False
  860.                 Case (176 * 3) + 1
  861.                     CS(pointervalue + index) = False
  862.                 Case (176 * 3) + 2
  863.                     CS(pointervalue + index) = False
  864.                 Case (184 * 3)
  865.                     CS(pointervalue + index) = False
  866.                 Case (184 * 3) + 1
  867.                     CS(pointervalue + index) = False
  868.                 Case (184 * 3) + 2
  869.                     CS(pointervalue + index) = False
  870.  
  871.                 Case Else
  872.                     CS(pointervalue + index) = CS(pointervalue + index - 3)
  873.             End Select
  874.  
  875.             index = index - 1
  876.         Loop
  877.  
  878.         Call Scenechange()
  879.     End Sub
  880.     Private Sub ShiftLeft(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
  881.         Dim pointervalue As Integer
  882.         pointervalue = (NumericUpDown2.Value * 576)
  883.  
  884.         For i = 0 To 575
  885.             Select Case i
  886.                 Case (7 * 3)
  887.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  888.                 Case (7 * 3) + 1
  889.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  890.                 Case (7 * 3) + 2
  891.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  892.                 Case (15 * 3)
  893.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  894.                 Case (15 * 3) + 1
  895.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  896.                 Case (15 * 3) + 2
  897.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  898.                 Case (23 * 3)
  899.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  900.                 Case (23 * 3) + 1
  901.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  902.                 Case (23 * 3) + 2
  903.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  904.                 Case (31 * 3)
  905.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  906.                 Case (31 * 3) + 1
  907.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  908.                 Case (31 * 3) + 2
  909.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  910.                 Case (39 * 3)
  911.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  912.                 Case (39 * 3) + 1
  913.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  914.                 Case (39 * 3) + 2
  915.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  916.                 Case (47 * 3)
  917.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  918.                 Case (47 * 3) + 1
  919.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  920.                 Case (47 * 3) + 2
  921.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  922.                 Case (55 * 3)
  923.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  924.                 Case (55 * 3) + 1
  925.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  926.                 Case (55 * 3) + 2
  927.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  928.                 Case (63 * 3)
  929.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  930.                 Case (63 * 3) + 1
  931.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  932.                 Case (63 * 3) + 2
  933.                     CS(pointervalue + i) = CS(pointervalue + i + (57 * 3))
  934.  
  935.                 Case (71 * 3)
  936.                     CS(pointervalue + i) = False
  937.                 Case (71 * 3) + 1
  938.                     CS(pointervalue + i) = False
  939.                 Case (71 * 3) + 2
  940.                     CS(pointervalue + i) = False
  941.                 Case (79 * 3)
  942.                     CS(pointervalue + i) = False
  943.                 Case (79 * 3) + 1
  944.                     CS(pointervalue + i) = False
  945.                 Case (79 * 3) + 2
  946.                     CS(pointervalue + i) = False
  947.                 Case (87 * 3)
  948.                     CS(pointervalue + i) = False
  949.                 Case (87 * 3) + 1
  950.                     CS(pointervalue + i) = False
  951.                 Case (87 * 3) + 2
  952.                     CS(pointervalue + i) = False
  953.                 Case (95 * 3)
  954.                     CS(pointervalue + i) = False
  955.                 Case (95 * 3) + 1
  956.                     CS(pointervalue + i) = False
  957.                 Case (95 * 3) + 2
  958.                     CS(pointervalue + i) = False
  959.                 Case (103 * 3)
  960.                     CS(pointervalue + i) = False
  961.                 Case (103 * 3) + 1
  962.                     CS(pointervalue + i) = False
  963.                 Case (103 * 3) + 2
  964.                     CS(pointervalue + i) = False
  965.                 Case (111 * 3)
  966.                     CS(pointervalue + i) = False
  967.                 Case (111 * 3) + 1
  968.                     CS(pointervalue + i) = False
  969.                 Case (111 * 3) + 2
  970.                     CS(pointervalue + i) = False
  971.                 Case (119 * 3)
  972.                     CS(pointervalue + i) = False
  973.                 Case (119 * 3) + 1
  974.                     CS(pointervalue + i) = False
  975.                 Case (119 * 3) + 2
  976.                     CS(pointervalue + i) = False
  977.                 Case (127 * 3)
  978.                     CS(pointervalue + i) = False
  979.                 Case (127 * 3) + 1
  980.                     CS(pointervalue + i) = False
  981.                 Case (127 * 3) + 2
  982.                     CS(pointervalue + i) = False
  983.  
  984.                 Case (135 * 3)
  985.                     CS(pointervalue + i) = False
  986.                 Case (135 * 3) + 1
  987.                     CS(pointervalue + i) = False
  988.                 Case (135 * 3) + 2
  989.                     CS(pointervalue + i) = False
  990.                 Case (143 * 3)
  991.                     CS(pointervalue + i) = False
  992.                 Case (143 * 3) + 1
  993.                     CS(pointervalue + i) = False
  994.                 Case (143 * 3) + 2
  995.                     CS(pointervalue + i) = False
  996.                 Case (151 * 3)
  997.                     CS(pointervalue + i) = False
  998.                 Case (151 * 3) + 1
  999.                     CS(pointervalue + i) = False
  1000.                 Case (151 * 3) + 2
  1001.                     CS(pointervalue + i) = False
  1002.                 Case (159 * 3)
  1003.                     CS(pointervalue + i) = False
  1004.                 Case (159 * 3) + 1
  1005.                     CS(pointervalue + i) = False
  1006.                 Case (159 * 3) + 2
  1007.                     CS(pointervalue + i) = False
  1008.                 Case (167 * 3)
  1009.                     CS(pointervalue + i) = False
  1010.                 Case (167 * 3) + 1
  1011.                     CS(pointervalue + i) = False
  1012.                 Case (167 * 3) + 2
  1013.                     CS(pointervalue + i) = False
  1014.                 Case (175 * 3)
  1015.                     CS(pointervalue + i) = False
  1016.                 Case (175 * 3) + 1
  1017.                     CS(pointervalue + i) = False
  1018.                 Case (175 * 3) + 2
  1019.                     CS(pointervalue + i) = False
  1020.                 Case (183 * 3)
  1021.                     CS(pointervalue + i) = False
  1022.                 Case (183 * 3) + 1
  1023.                     CS(pointervalue + i) = False
  1024.                 Case (183 * 3) + 2
  1025.                     CS(pointervalue + i) = False
  1026.                 Case (191 * 3)
  1027.                     CS(pointervalue + i) = False
  1028.                 Case (191 * 3) + 1
  1029.                     CS(pointervalue + i) = False
  1030.                 Case (191 * 3) + 2
  1031.                     CS(pointervalue + i) = False
  1032.  
  1033.                 Case Else
  1034.                     CS(pointervalue + i) = CS(pointervalue + i + 3)
  1035.             End Select
  1036.  
  1037.         Next
  1038.  
  1039.         Call Scenechange()
  1040.     End Sub
  1041.     Private Sub ShiftUp(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
  1042.         Dim pointervalue As Integer
  1043.         pointervalue = (NumericUpDown2.Value * 576)
  1044.  
  1045.         For i = 0 To 575
  1046.             Select Case i
  1047.                 Case (56 * 3)
  1048.                     CS(pointervalue + i) = False
  1049.                 Case (56 * 3) + 1
  1050.                     CS(pointervalue + i) = False
  1051.                 Case (56 * 3) + 2
  1052.                     CS(pointervalue + i) = False
  1053.                 Case (57 * 3)
  1054.                     CS(pointervalue + i) = False
  1055.                 Case (57 * 3) + 1
  1056.                     CS(pointervalue + i) = False
  1057.                 Case (57 * 3) + 2
  1058.                     CS(pointervalue + i) = False
  1059.                 Case (58 * 3)
  1060.                     CS(pointervalue + i) = False
  1061.                 Case (58 * 3) + 1
  1062.                     CS(pointervalue + i) = False
  1063.                 Case (58 * 3) + 2
  1064.                     CS(pointervalue + i) = False
  1065.                 Case (59 * 3)
  1066.                     CS(pointervalue + i) = False
  1067.                 Case (59 * 3) + 1
  1068.                     CS(pointervalue + i) = False
  1069.                 Case (59 * 3) + 2
  1070.                     CS(pointervalue + i) = False
  1071.                 Case (60 * 3)
  1072.                     CS(pointervalue + i) = False
  1073.                 Case (60 * 3) + 1
  1074.                     CS(pointervalue + i) = False
  1075.                 Case (60 * 3) + 2
  1076.                     CS(pointervalue + i) = False
  1077.                 Case (61 * 3)
  1078.                     CS(pointervalue + i) = False
  1079.                 Case (61 * 3) + 1
  1080.                     CS(pointervalue + i) = False
  1081.                 Case (61 * 3) + 2
  1082.                     CS(pointervalue + i) = False
  1083.                 Case (62 * 3)
  1084.                     CS(pointervalue + i) = False
  1085.                 Case (62 * 3) + 1
  1086.                     CS(pointervalue + i) = False
  1087.                 Case (62 * 3) + 2
  1088.                     CS(pointervalue + i) = False
  1089.                 Case (63 * 3)
  1090.                     CS(pointervalue + i) = False
  1091.                 Case (63 * 3) + 1
  1092.                     CS(pointervalue + i) = False
  1093.                 Case (63 * 3) + 2
  1094.                     CS(pointervalue + i) = False
  1095.                 Case Else
  1096.                     CS(pointervalue + i) = CS(pointervalue + i + 24)
  1097.             End Select
  1098.  
  1099.  
  1100.         Next
  1101.  
  1102.         Call Scenechange()
  1103.     End Sub
  1104.     Private Sub ShiftDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
  1105.         Dim pointervalue As Integer
  1106.         pointervalue = (NumericUpDown2.Value * 576)
  1107.  
  1108.         Dim index As Integer = 575
  1109.         Do Until index = 0
  1110.  
  1111.             Select Case index
  1112.                 Case (64 * 3)
  1113.                     CS(pointervalue + index) = False
  1114.                 Case (64 * 3) + 1
  1115.                     CS(pointervalue + index) = False
  1116.                 Case (64 * 3) + 2
  1117.                     CS(pointervalue + index) = False
  1118.                 Case (65 * 3)
  1119.                     CS(pointervalue + index) = False
  1120.                 Case (65 * 3) + 1
  1121.                     CS(pointervalue + index) = False
  1122.                 Case (65 * 3) + 2
  1123.                     CS(pointervalue + index) = False
  1124.                 Case (66 * 3)
  1125.                     CS(pointervalue + index) = False
  1126.                 Case (66 * 3) + 1
  1127.                     CS(pointervalue + index) = False
  1128.                 Case (66 * 3) + 2
  1129.                     CS(pointervalue + index) = False
  1130.                 Case (67 * 3)
  1131.                     CS(pointervalue + index) = False
  1132.                 Case (67 * 3) + 1
  1133.                     CS(pointervalue + index) = False
  1134.                 Case (67 * 3) + 2
  1135.                     CS(pointervalue + index) = False
  1136.                 Case (68 * 3)
  1137.                     CS(pointervalue + index) = False
  1138.                 Case (68 * 3) + 1
  1139.                     CS(pointervalue + index) = False
  1140.                 Case (68 * 3) + 2
  1141.                     CS(pointervalue + index) = False
  1142.                 Case (69 * 3)
  1143.                     CS(pointervalue + index) = False
  1144.                 Case (69 * 3) + 1
  1145.                     CS(pointervalue + index) = False
  1146.                 Case (69 * 3) + 2
  1147.                     CS(pointervalue + index) = False
  1148.                 Case (70 * 3)
  1149.                     CS(pointervalue + index) = False
  1150.                 Case (70 * 3) + 1
  1151.                     CS(pointervalue + index) = False
  1152.                 Case (70 * 3) + 2
  1153.                     CS(pointervalue + index) = False
  1154.                 Case (71 * 3)
  1155.                     CS(pointervalue + index) = False
  1156.                 Case (71 * 3) + 1
  1157.                     CS(pointervalue + index) = False
  1158.                 Case (71 * 3) + 2
  1159.                     CS(pointervalue + index) = False
  1160.                 Case Else
  1161.                     CS(pointervalue + index) = CS(pointervalue + index - 24)
  1162.             End Select
  1163.             index = index - 1
  1164.         Loop
  1165.  
  1166.         Call Scenechange()
  1167.     End Sub
  1168.     'MouseTrax
  1169.     Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
  1170.  
  1171.         If SerialPort1.IsOpen = True Then
  1172.             If MouseTraxActive = False Then
  1173.                 MouseTraxActive = True
  1174.                 Button12.Text = "Stop MouseTrax"
  1175.                 Timer2.Interval = NumericUpDown25.Value
  1176.                 NumericUpDown3.Value = 1
  1177.                 Timer2.Enabled = True
  1178.                 NumericUpDown2.Enabled = False
  1179.                 NumericUpDown3.Enabled = False
  1180.                 Button1.Enabled = False
  1181.                 GroupBox3.Enabled = False
  1182.                 For i = 0 To PB.Length - 2
  1183.                     PB(i).Width = 16
  1184.                     PB(i).Height = 16
  1185.                 Next
  1186.                 For i = 0 To 1200
  1187.                     CS(i) = False
  1188.                 Next
  1189.                 Call Scenechange()
  1190.             Else
  1191.                 MouseTraxActive = False
  1192.                 Timer2.Enabled = False
  1193.                 Button12.Text = "Start MouseTrax"
  1194.                 NumericUpDown2.Enabled = True
  1195.                 NumericUpDown3.Enabled = True
  1196.                 Button1.Enabled = True
  1197.                 GroupBox3.Enabled = True
  1198.                 For i = 0 To PB.Length - 2
  1199.                     PB(i).Width = 15
  1200.                     PB(i).Height = 15
  1201.                 Next
  1202.             End If
  1203.         End If
  1204.     End Sub
  1205.     'Mouse events on PBs
  1206.     Private Sub PBEnter(ByVal Sender As Object, ByVal e As System.EventArgs)
  1207.         If MouseTraxActive = False Then
  1208.             Return
  1209.         End If
  1210.  
  1211.         PB(0).Focus()
  1212.         Dim senderPicBox As PictureBox = CType(Sender, PictureBox)
  1213.         Dim index As Integer
  1214.         Dim picindex As Integer
  1215.         Dim pointervalue As Integer
  1216.         pointervalue = (NumericUpDown2.Value * 576)
  1217.         index = (System.Array.IndexOf(PB, Sender)) * 3
  1218.         picindex = (System.Array.IndexOf(PB, Sender))
  1219.  
  1220.  
  1221.         If RadioButton1.Checked = True Then
  1222.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  1223.             GFX(picindex).FillRectangle(Brushes.Red, 0, 0, 15, 15)
  1224.             PB(picindex).Image = PBpic(picindex)
  1225.             CS(pointervalue + index) = True
  1226.             CS(pointervalue + index + 1) = False
  1227.             CS(pointervalue + index + 2) = False
  1228.             Return
  1229.         End If
  1230.         'Is Red, make Green
  1231.         If RadioButton2.Checked = True Then
  1232.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  1233.             GFX(picindex).FillRectangle(Brushes.LimeGreen, 0, 0, 15, 15)
  1234.             PB(picindex).Image = PBpic(picindex)
  1235.             CS(pointervalue + index) = False
  1236.             CS(pointervalue + index + 1) = True
  1237.             CS(pointervalue + index + 2) = False
  1238.             Return
  1239.         End If
  1240.         'Is Green, make Blue
  1241.         If RadioButton3.Checked = True Then
  1242.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  1243.             GFX(picindex).FillRectangle(Brushes.Blue, 0, 0, 15, 15)
  1244.             PB(picindex).Image = PBpic(picindex)
  1245.             CS(pointervalue + index) = False
  1246.             CS(pointervalue + index + 1) = False
  1247.             CS(pointervalue + index + 2) = True
  1248.             Return
  1249.         End If
  1250.         'Is Blue, make Teal
  1251.         If RadioButton4.Checked = True Then
  1252.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  1253.             GFX(picindex).FillRectangle(Brushes.Aquamarine, 0, 0, 15, 15)
  1254.             PB(picindex).Image = PBpic(picindex)
  1255.             CS(pointervalue + index) = False
  1256.             CS(pointervalue + index + 1) = True
  1257.             CS(pointervalue + index + 2) = True
  1258.             Return
  1259.         End If
  1260.         'Is Teal, make Pink
  1261.         If RadioButton5.Checked = True Then
  1262.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  1263.             GFX(picindex).FillRectangle(Brushes.Pink, 0, 0, 15, 15)
  1264.             PB(picindex).Image = PBpic(picindex)
  1265.             CS(pointervalue + index) = True
  1266.             CS(pointervalue + index + 1) = False
  1267.             CS(pointervalue + index + 2) = True
  1268.             Return
  1269.         End If
  1270.         'Is Pink, make Yellow
  1271.         If RadioButton6.Checked = True Then
  1272.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  1273.             GFX(picindex).FillRectangle(Brushes.Yellow, 0, 0, 15, 15)
  1274.             PB(picindex).Image = PBpic(picindex)
  1275.             CS(pointervalue + index) = True
  1276.             CS(pointervalue + index + 1) = True
  1277.             CS(pointervalue + index + 2) = False
  1278.             Return
  1279.         End If
  1280.         'Is Yellow, make White
  1281.         If RadioButton7.Checked = True Then
  1282.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  1283.             GFX(picindex).FillRectangle(Brushes.White, 0, 0, 15, 15)
  1284.             PB(picindex).Image = PBpic(picindex)
  1285.             CS(pointervalue + index) = True
  1286.             CS(pointervalue + index + 1) = True
  1287.             CS(pointervalue + index + 2) = True
  1288.             Return
  1289.         End If
  1290.         'Is White, make Black
  1291.         If RadioButton8.Checked = True Then
  1292.             GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  1293.             GFX(picindex).FillRectangle(Brushes.Black, 0, 0, 15, 15)
  1294.             PB(picindex).Image = PBpic(picindex)
  1295.             CS(pointervalue + index) = False
  1296.             CS(pointervalue + index + 1) = False
  1297.             CS(pointervalue + index + 2) = False
  1298.             Return
  1299.         End If
  1300.  
  1301.  
  1302.     End Sub
  1303.     Private Sub PBExit(ByVal Sender As Object, ByVal e As System.EventArgs)
  1304.         If MouseTraxActive = False Then
  1305.             Return
  1306.         End If
  1307.  
  1308.         PB(0).Focus()
  1309.         Dim senderPicBox As PictureBox = CType(Sender, PictureBox)
  1310.         Dim index As Integer
  1311.         Dim picindex As Integer
  1312.         Dim pointervalue As Integer
  1313.         pointervalue = (NumericUpDown2.Value * 576)
  1314.         index = (System.Array.IndexOf(PB, Sender)) * 3
  1315.         picindex = (System.Array.IndexOf(PB, Sender))
  1316.  
  1317.         GFX(picindex) = System.Drawing.Graphics.FromImage(PBpic(picindex))
  1318.         GFX(picindex).FillRectangle(Brushes.Black, 0, 0, 15, 15)
  1319.         PB(picindex).Image = PBpic(picindex)
  1320.         CS(pointervalue + index) = False
  1321.         CS(pointervalue + index + 1) = False
  1322.         CS(pointervalue + index + 2) = False
  1323.  
  1324.  
  1325.     End Sub
  1326.     'Insert Text
  1327.     Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
  1328.         Dim pointervalue As Integer
  1329.         pointervalue = (NumericUpDown2.Value * 576)
  1330.         Dim Characterbits As New BitArray(64)
  1331.         Dim charbytes() As Byte
  1332.         Dim Charsize As Integer
  1333.         Dim sentlength As Integer
  1334.  
  1335.         'For i = 0 To 127
  1336.         '    CS(pointervalue + (i * 3)) = False
  1337.         '    CS(pointervalue + (i * 3) + 1) = False
  1338.         '    CS(pointervalue + (i * 3) + 2) = False
  1339.         'Next
  1340.  
  1341.  
  1342.         For i = 0 To TextBox2.Text.Length - 1
  1343.             Select Case TextBox2.Text(i)
  1344.                 Case "1"
  1345.                     charbytes = {11, 18, 19, 25, 27, 35, 43, 49, 50, 51, 52, 53}
  1346.                     Charsize = 5
  1347.                 Case "2"
  1348.                     charbytes = {10, 11, 17, 20, 28, 35, 42, 49, 50, 51, 52}
  1349.                     Charsize = 4
  1350.                 Case "3"
  1351.                     charbytes = {9, 10, 11, 20, 25, 26, 27, 36, 44, 49, 50, 51}
  1352.                     Charsize = 4
  1353.                 Case "4"
  1354.                     charbytes = {9, 12, 17, 20, 25, 28, 33, 34, 35, 36, 44, 52}
  1355.                     Charsize = 4
  1356.                 Case "5"
  1357.                     charbytes = {9, 10, 11, 12, 17, 25, 26, 27, 36, 44, 44, 49, 50, 51}
  1358.                     Charsize = 4
  1359.                 Case "6"
  1360.                     charbytes = {10, 11, 17, 25, 26, 27, 33, 36, 41, 44, 50, 51}
  1361.                     Charsize = 4
  1362.                 Case "7"
  1363.                     charbytes = {9, 10, 11, 12, 20, 28, 35, 43, 50}
  1364.                     Charsize = 4
  1365.                 Case "8"
  1366.                     charbytes = {10, 11, 17, 20, 26, 27, 33, 36, 41, 44, 50, 51}
  1367.                     Charsize = 4
  1368.                 Case "9"
  1369.                     charbytes = {10, 11, 17, 20, 25, 28, 34, 35, 36, 44, 50, 51}
  1370.                     Charsize = 4
  1371.                 Case "0"
  1372.                     charbytes = {10, 11, 17, 20, 25, 28, 33, 36, 41, 44, 50, 51}
  1373.                     Charsize = 4
  1374.                 Case "a"
  1375.                     charbytes = {26, 27, 33, 36, 41, 44, 50, 51, 52, 53}
  1376.                     Charsize = 5
  1377.                 Case "b"
  1378.                     charbytes = {9, 17, 25, 26, 27, 33, 36, 41, 44, 49, 50, 51}
  1379.                     Charsize = 4
  1380.                 Case "c"
  1381.                     charbytes = {26, 27, 33, 41, 50, 51}
  1382.                     Charsize = 3
  1383.                 Case "d"
  1384.                     charbytes = {12, 20, 26, 27, 28, 33, 36, 41, 44, 50, 51, 52}
  1385.                     Charsize = 4
  1386.                 Case "e"
  1387.                     charbytes = {18, 19, 25, 28, 33, 34, 35, 36, 41, 50, 51, 52}
  1388.                     Charsize = 4
  1389.                 Case "f"
  1390.                     charbytes = {11, 18, 20, 26, 33, 34, 35, 36, 42, 50}
  1391.                     Charsize = 4
  1392.                 Case "g"
  1393.                     charbytes = {18, 19, 25, 28, 33, 36, 42, 43, 44, 52, 57, 58, 59}
  1394.                     Charsize = 4
  1395.                 Case "h"
  1396.                     charbytes = {9, 17, 25, 33, 34, 35, 41, 44, 49, 52}
  1397.                     Charsize = 4
  1398.                 Case "i"
  1399.                     charbytes = {17, 33, 41, 49}
  1400.                     Charsize = 1
  1401.                 Case "j"
  1402.                     charbytes = {19, 35, 43, 49, 51, 58}
  1403.                     Charsize = 3
  1404.                 Case "k"
  1405.                     charbytes = {17, 25, 33, 35, 41, 42, 49, 51}
  1406.                     Charsize = 3
  1407.                 Case "l"
  1408.                     charbytes = {17, 25, 33, 41, 49}
  1409.                     Charsize = 1
  1410.                 Case "m"
  1411.                     charbytes = {34, 36, 41, 43, 45, 49, 51, 53}
  1412.                     Charsize = 5
  1413.                 Case "n"
  1414.                     charbytes = {25, 33, 34, 41, 43, 49, 51}
  1415.                     Charsize = 3
  1416.                 Case "o"
  1417.                     charbytes = {26, 27, 33, 36, 41, 44, 50, 51}
  1418.                     Charsize = 4
  1419.                 Case "p"
  1420.                     charbytes = {18, 19, 25, 28, 33, 36, 41, 42, 43, 49, 57}
  1421.                     Charsize = 4
  1422.                 Case "q"
  1423.                     charbytes = {18, 19, 25, 28, 33, 36, 42, 43, 44, 52, 60}
  1424.                     Charsize = 4
  1425.                 Case "r"
  1426.                     charbytes = {25, 26, 33, 35, 41, 49}
  1427.                     Charsize = 3
  1428.                 Case "s"
  1429.                     charbytes = {18, 19, 25, 34, 43, 49, 50}
  1430.                     Charsize = 3
  1431.                 Case "t"
  1432.                     charbytes = {18, 25, 26, 27, 34, 42, 50}
  1433.                     Charsize = 3
  1434.                 Case "u"
  1435.                     charbytes = {33, 36, 41, 44, 50, 51}
  1436.                     Charsize = 4
  1437.                 Case "v"
  1438.                     charbytes = {25, 27, 33, 35, 41, 43, 50}
  1439.                     Charsize = 3
  1440.                 Case "w"
  1441.                     charbytes = {33, 35, 37, 41, 43, 45, 50, 52}
  1442.                     Charsize = 5
  1443.                 Case "x"
  1444.                     charbytes = {33, 35, 42, 49, 51}
  1445.                     Charsize = 3
  1446.                 Case "y"
  1447.                     charbytes = {33, 35, 41, 43, 50, 57}
  1448.                     Charsize = 3
  1449.                 Case "z"
  1450.                     charbytes = {25, 26, 27, 28, 35, 42, 49, 50, 51, 52}
  1451.                     Charsize = 4
  1452.  
  1453.                 Case "A"
  1454.                     charbytes = {10, 11, 17, 20, 25, 28, 33, 34, 35, 36, 41, 44, 49, 52}
  1455.                     Charsize = 4
  1456.                 Case "B"
  1457.                     charbytes = {9, 10, 11, 17, 20, 25, 26, 27, 33, 36, 41, 44, 49, 50, 51}
  1458.                     Charsize = 4
  1459.                 Case "C"
  1460.                     charbytes = {10, 11, 12, 17, 25, 33, 41, 50, 51, 52}
  1461.                     Charsize = 4
  1462.                 Case "D"
  1463.                     charbytes = {9, 10, 11, 17, 20, 25, 28, 33, 36, 41, 44, 49, 50, 51}
  1464.                     Charsize = 4
  1465.                 Case "E"
  1466.                     charbytes = {9, 10, 11, 12, 17, 25, 26, 27, 28, 33, 41, 49, 50, 51, 52}
  1467.                     Charsize = 4
  1468.                 Case "F"
  1469.                     charbytes = {9, 10, 11, 12, 17, 25, 26, 27, 28, 33, 41, 49}
  1470.                     Charsize = 4
  1471.                 Case "G"
  1472.                     charbytes = {10, 11, 17, 20, 25, 33, 35, 36, 41, 44, 50, 51}
  1473.                     Charsize = 4
  1474.                 Case "H"
  1475.                     charbytes = {9, 12, 17, 20, 25, 28, 33, 34, 35, 36, 41, 44, 49, 52}
  1476.                     Charsize = 4
  1477.                 Case "I"
  1478.                     charbytes = {9, 10, 11, 12, 13, 19, 27, 35, 43, 49, 50, 51, 52, 53}
  1479.                     Charsize = 5
  1480.                 Case "J"
  1481.                     charbytes = {9, 10, 11, 12, 13, 20, 28, 36, 41, 44, 50, 51}
  1482.                     Charsize = 5
  1483.                 Case "K"
  1484.                     charbytes = {9, 12, 17, 19, 25, 26, 33, 34, 41, 43, 49, 52}
  1485.                     Charsize = 4
  1486.                 Case "L"
  1487.                     charbytes = {9, 17, 25, 33, 41, 49, 50, 51, 52}
  1488.                     Charsize = 4
  1489.                 Case "M"
  1490.                     charbytes = {9, 13, 17, 18, 20, 21, 25, 27, 29, 33, 37, 41, 45, 49, 53}
  1491.                     Charsize = 5
  1492.                 Case "N"
  1493.                     charbytes = {9, 13, 17, 18, 21, 25, 27, 29, 33, 36, 37, 41, 45, 49, 53}
  1494.                     Charsize = 5
  1495.                 Case "O"
  1496.                     charbytes = {10, 11, 17, 20, 25, 28, 33, 36, 41, 44, 50, 51}
  1497.                     Charsize = 4
  1498.                 Case "P"
  1499.                     charbytes = {9, 10, 11, 17, 20, 25, 28, 33, 34, 35, 41, 49}
  1500.                     Charsize = 4
  1501.                 Case "Q"
  1502.                     charbytes = {10, 11, 17, 20, 25, 28, 33, 36, 41, 44, 50, 51, 52, 53}
  1503.                     Charsize = 5
  1504.                 Case "R"
  1505.                     charbytes = {9, 10, 11, 17, 20, 25, 26, 27, 33, 34, 41, 43, 49, 52}
  1506.                     Charsize = 4
  1507.                 Case "S"
  1508.                     charbytes = {10, 11, 12, 17, 26, 35, 44, 49, 50, 51}
  1509.                     Charsize = 4
  1510.                 Case "T"
  1511.                     charbytes = {9, 10, 11, 12, 13, 19, 27, 35, 43, 51}
  1512.                     Charsize = 5
  1513.                 Case "U"
  1514.                     charbytes = {9, 12, 17, 20, 25, 28, 33, 36, 41, 44, 50, 51}
  1515.                     Charsize = 4
  1516.                 Case "V"
  1517.                     charbytes = {9, 13, 17, 21, 25, 29, 33, 37, 42, 44, 51}
  1518.                     Charsize = 5
  1519.                 Case "W"
  1520.                     charbytes = {9, 13, 17, 21, 25, 29, 33, 35, 37, 41, 42, 44, 45, 49, 53}
  1521.                     Charsize = 5
  1522.                 Case "X"
  1523.                     charbytes = {17, 21, 26, 28, 35, 42, 44, 49, 53}
  1524.                     Charsize = 5
  1525.                 Case "Y"
  1526.                     charbytes = {9, 13, 18, 20, 27, 35, 43, 51}
  1527.                     Charsize = 5
  1528.                 Case "Z"
  1529.                     charbytes = {9, 10, 11, 12, 13, 21, 27, 28, 34, 41, 49, 50, 51, 52, 53}
  1530.                     Charsize = 5
  1531.                 Case ":"
  1532.                     charbytes = {25, 41}
  1533.                     Charsize = 1
  1534.                 Case "!"
  1535.                     charbytes = {9, 17, 25, 33, 49}
  1536.                     Charsize = 1
  1537.                 Case "?"
  1538.                     charbytes = {10, 11, 17, 20, 28, 34, 35, 50}
  1539.                     Charsize = 4
  1540.                 Case "."
  1541.                     charbytes = {49}
  1542.                     Charsize = 1
  1543.                 Case ";"
  1544.                     charbytes = {26, 42, 49}
  1545.                     Charsize = 2
  1546.                 Case "'"
  1547.                     charbytes = {9, 17}
  1548.                     Charsize = 1
  1549.                 Case " "
  1550.                     charbytes = {}
  1551.                     Charsize = 1
  1552.  
  1553.  
  1554.                 Case Else
  1555.                     Return
  1556.             End Select
  1557.  
  1558.             Dim exitindex As Boolean
  1559.  
  1560.             For Each index As Byte In charbytes
  1561.                 exitindex = False
  1562.                 If sentlength > 6 Then
  1563.                     index = index + 56
  1564.                 ElseIf sentlength > 2 And (index + sentlength) >= 0 And (index + sentlength) <= 4 Then
  1565.                     index = index + 56
  1566.                 ElseIf sentlength > 2 And (index + sentlength) >= 8 And (index + sentlength) <= 12 Then
  1567.                     index = index + 56
  1568.                 ElseIf sentlength > 2 And (index + sentlength) >= 16 And (index + sentlength) <= 20 Then
  1569.                     index = index + 56
  1570.                 ElseIf sentlength > 2 And (index + sentlength) >= 24 And (index + sentlength) <= 28 Then
  1571.                     index = index + 56
  1572.                 ElseIf sentlength > 2 And (index + sentlength) >= 32 And (index + sentlength) <= 36 Then
  1573.                     index = index + 56
  1574.                 ElseIf sentlength > 2 And (index + sentlength) >= 40 And (index + sentlength) <= 44 Then
  1575.                     index = index + 56
  1576.                 ElseIf sentlength > 2 And (index + sentlength) >= 48 And (index + sentlength) <= 52 Then
  1577.                     index = index + 56
  1578.                 ElseIf sentlength > 2 And (index + sentlength) >= 56 And (index + sentlength) <= 60 Then
  1579.                     index = index + 56
  1580.                 End If
  1581.  
  1582.                 If sentlength > 10 And (index + sentlength) >= 64 And (index + sentlength) <= 67 Then
  1583.                     exitindex = True
  1584.                 ElseIf sentlength > 10 And (index + sentlength) >= 72 And (index + sentlength) <= 75 Then
  1585.                     exitindex = True
  1586.                 ElseIf sentlength > 10 And (index + sentlength) >= 80 And (index + sentlength) <= 83 Then
  1587.                     exitindex = True
  1588.                 ElseIf sentlength > 10 And (index + sentlength) >= 88 And (index + sentlength) <= 91 Then
  1589.                     exitindex = True
  1590.                 ElseIf sentlength > 10 And (index + sentlength) >= 96 And (index + sentlength) <= 99 Then
  1591.                     exitindex = True
  1592.                 ElseIf sentlength > 10 And (index + sentlength) >= 104 And (index + sentlength) <= 107 Then
  1593.                     exitindex = True
  1594.                 ElseIf sentlength > 10 And (index + sentlength) >= 112 And (index + sentlength) <= 115 Then
  1595.                     exitindex = True
  1596.                 ElseIf sentlength > 10 And (index + sentlength) >= 120 And (index + sentlength) <= 123 Then
  1597.                     exitindex = True
  1598.                 End If
  1599.  
  1600.                 If sentlength > 16 Then
  1601.                     exitindex = True
  1602.                 End If
  1603.  
  1604.                 If exitindex = False Then
  1605.                     If RadioButton1.Checked = True Then
  1606.                         CS(pointervalue + (index * 3) + (sentlength * 3)) = True
  1607.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 1) = False
  1608.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 2) = False
  1609.                     End If
  1610.                     If RadioButton2.Checked = True Then
  1611.                         CS(pointervalue + (index * 3) + (sentlength * 3)) = False
  1612.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 1) = True
  1613.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 2) = False
  1614.                     End If
  1615.                     If RadioButton3.Checked = True Then
  1616.                         CS(pointervalue + (index * 3) + (sentlength * 3)) = False
  1617.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 1) = False
  1618.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 2) = True
  1619.                     End If
  1620.                     If RadioButton4.Checked = True Then
  1621.                         CS(pointervalue + (index * 3) + (sentlength * 3)) = False
  1622.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 1) = True
  1623.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 2) = True
  1624.                     End If
  1625.                     If RadioButton5.Checked = True Then
  1626.                         CS(pointervalue + (index * 3) + (sentlength * 3)) = True
  1627.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 1) = False
  1628.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 2) = True
  1629.                     End If
  1630.                     If RadioButton6.Checked = True Then
  1631.                         CS(pointervalue + (index * 3) + (sentlength * 3)) = True
  1632.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 1) = True
  1633.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 2) = False
  1634.                     End If
  1635.                     If RadioButton7.Checked = True Then
  1636.                         CS(pointervalue + (index * 3) + (sentlength * 3)) = True
  1637.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 1) = True
  1638.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 2) = True
  1639.                     End If
  1640.                     If RadioButton8.Checked = True Then
  1641.                         CS(pointervalue + (index * 3) + (sentlength * 3)) = False
  1642.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 1) = False
  1643.                         CS(pointervalue + (index * 3) + (sentlength * 3) + 2) = False
  1644.                     End If
  1645.                 End If
  1646.  
  1647.             Next
  1648.  
  1649.             sentlength = sentlength + Charsize + 1
  1650.  
  1651.         Next
  1652.  
  1653.         Scenechange()
  1654.  
  1655.     End Sub
  1656.     'Animation Playlist
  1657.     Private Sub AddToList(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
  1658.         DGV.Rows.Add()
  1659.         DGV.Rows(DGV.Rows.Count - 1).Cells(0).Value = ListBox1.SelectedItem
  1660.         DGV.Rows(DGV.Rows.Count - 1).Cells(1).Value = "1"
  1661.     End Sub
  1662.     Private Sub APShiftUp(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
  1663.         Dim tempfile As String
  1664.         Dim tempcount As String
  1665.  
  1666.         If DGV.CurrentRow.Index <> 0 Then
  1667.             tempfile = DGV.Rows(DGV.CurrentRow.Index).Cells(0).Value
  1668.             tempcount = DGV.Rows(DGV.CurrentRow.Index).Cells(1).Value
  1669.             DGV.Rows(DGV.CurrentRow.Index).Cells(0).Value = DGV.Rows(DGV.CurrentRow.Index - 1).Cells(0).Value
  1670.             DGV.Rows(DGV.CurrentRow.Index).Cells(1).Value = DGV.Rows(DGV.CurrentRow.Index - 1).Cells(1).Value
  1671.             DGV.Rows(DGV.CurrentRow.Index - 1).Cells(0).Value = tempfile
  1672.             DGV.Rows(DGV.CurrentRow.Index - 1).Cells(1).Value = tempcount
  1673.  
  1674.         End If
  1675.  
  1676.     End Sub
  1677.     Private Sub APShiftDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
  1678.         Dim tempfile As String
  1679.         Dim tempcount As String
  1680.  
  1681.         If DGV.CurrentRow.Index <> DGV.RowCount - 1 Then
  1682.             tempfile = DGV.Rows(DGV.CurrentRow.Index).Cells(0).Value
  1683.             tempcount = DGV.Rows(DGV.CurrentRow.Index).Cells(1).Value
  1684.             DGV.Rows(DGV.CurrentRow.Index).Cells(0).Value = DGV.Rows(DGV.CurrentRow.Index + 1).Cells(0).Value
  1685.             DGV.Rows(DGV.CurrentRow.Index).Cells(1).Value = DGV.Rows(DGV.CurrentRow.Index + 1).Cells(1).Value
  1686.             DGV.Rows(DGV.CurrentRow.Index + 1).Cells(0).Value = tempfile
  1687.             DGV.Rows(DGV.CurrentRow.Index + 1).Cells(1).Value = tempcount
  1688.         End If
  1689.  
  1690.     End Sub
  1691.     Private Sub APDelete(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
  1692.         If DGV.RowCount <> 0 Then
  1693.             DGV.Rows.RemoveAt(DGV.CurrentRow.Index)
  1694.         End If
  1695.     End Sub
  1696.     Private Sub APStart(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click
  1697.  
  1698.         If SerialPort1.IsOpen = True Or ComboBox1.Text = "TEST" And DGV.RowCount <> 0 Then
  1699.             If Timer2.Enabled = True Then
  1700.                 DGV.Rows(Playlistcount - 1).DefaultCellStyle.BackColor = Color.White
  1701.                 Timer2.Enabled = False
  1702.                 Button17.Text = "Start Playlist"
  1703.                 NumericUpDown2.Enabled = True
  1704.                 NumericUpDown3.Enabled = True
  1705.                 Button17.Enabled = True
  1706.                 ComboBox1.Enabled = True
  1707.                 Playlist = False
  1708.             Else
  1709.  
  1710.                 SelectedFile = DGV.Rows(0).Cells(0).Value
  1711.                 Call loadz()
  1712.  
  1713.                 counter = 1
  1714.                 Playlistcount = 0
  1715.                 Timer2.Interval = NumericUpDown25.Value
  1716.                 Button17.Text = "Stop Playlist"
  1717.                 Timer2.Enabled = True
  1718.                 NumericUpDown2.Value = 1
  1719.                 NumericUpDown2.Enabled = False
  1720.                 NumericUpDown3.Enabled = False
  1721.                 ComboBox1.Enabled = False
  1722.                 Playlist = True
  1723.             End If
  1724.         End If
  1725.  
  1726.     End Sub
  1727.     Private Sub APPause(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button19.Click
  1728.         DGV.Rows.Add()
  1729.         DGV.Rows(DGV.Rows.Count - 1).Cells(0).Value = "PAUSE"
  1730.         DGV.Rows(DGV.Rows.Count - 1).Cells(1).Value = " "
  1731.     End Sub
  1732.     Private Sub APContinue(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button20.Click
  1733.         If DGV.Rows(Playlistcount).Cells(0).Value = "PAUSE" Then
  1734.             Playlistcount = Playlistcount + 1
  1735.             If Playlistcount <> DGV.RowCount Then
  1736.                 DGV.Rows(Playlistcount).DefaultCellStyle.BackColor = Color.Blue
  1737.                 DGV.Rows(Playlistcount - 1).DefaultCellStyle.BackColor = Color.White
  1738.                 SelectedFile = DGV.Rows(Playlistcount).Cells(0).Value
  1739.                 Call loadz()
  1740.                 Timer2.Enabled = True
  1741.                 NumericUpDown2.Value = 1
  1742.                 Call send()
  1743.             Else
  1744.                 DGV.Rows(Playlistcount - 1).DefaultCellStyle.BackColor = Color.White
  1745.                 Timer2.Enabled = False
  1746.                 Button17.Text = "Start Playlist"
  1747.                 NumericUpDown2.Enabled = True
  1748.                 NumericUpDown3.Enabled = True
  1749.                 Button17.Enabled = True
  1750.                 ComboBox1.Enabled = True
  1751.                 Playlist = False
  1752.             End If
  1753.         End If
  1754.     End Sub
  1755. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement