daily pastebin goal
44%
SHARE
TWEET

Digole.vb

a guest Jun 20th, 2015 237 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Public Class Digole
  2.         Implements IDisposable
  3.  
  4.         Private Shared ReadOnly Enc As Text.Encoding = Text.Encoding.GetEncoding("ISO-8859-1")
  5.         Private Port As IO.Ports.SerialPort
  6.         Private PortName As String
  7.  
  8.         ''' <summary>Creates a new instance of this class and opens the com port with the default settings</summary>
  9.         ''' <param name="PortName">The name of the com port to open, eg. "COM2"</param>
  10.         Public Sub New(ByVal PortName As String)
  11.  
  12.                 Me.New(PortName, 9600)
  13.  
  14.         End Sub
  15.  
  16.         ''' <summary>Creates a new instance of this class and opens the com port with the default settings</summary>
  17.         ''' <param name="PortName">The name of the com port to open, eg. "COM2"</param>
  18.         ''' <param name="Baud">The baud rate to use. Normally 9600</param>
  19.         Public Sub New(ByVal PortName As String, ByVal Baud As Integer)
  20.  
  21.                 Me.PortName = PortName
  22.  
  23.                 Port = New IO.Ports.SerialPort(PortName, Baud, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
  24.                 Port.Encoding = Enc
  25.                 Port.Open()
  26.  
  27.         End Sub
  28.  
  29.         ''' <summary>Releases all used resources by this class and closes the com port</summary>
  30.         Public Sub Dispose() Implements IDisposable.Dispose
  31.  
  32.                 If Port IsNot Nothing Then
  33.                         If Port.IsOpen Then Port.Close()
  34.                         Port.Dispose()
  35.                         Port = Nothing
  36.                 End If
  37.                 GC.SuppressFinalize(Me)
  38.                 GC.Collect()
  39.  
  40.         End Sub
  41.  
  42.  
  43.  
  44.         ''' <summary>Writes raw data to the com port</summary>
  45.         ''' <param name="Data">The data to write</param>
  46.         Public Sub WriteRaw(ByVal Data As Byte())
  47.  
  48.                 Port.Write(Data, 0, Data.Length)
  49.  
  50.         End Sub
  51.  
  52.         ''' <summary>Writes raw data to the com port</summary>
  53.         ''' <param name="Data">The data to write</param>
  54.         Public Sub WriteRaw(ByVal Data As String)
  55.  
  56.                 Port.Write(Data)
  57.  
  58.         End Sub
  59.  
  60.         ''' <summary>Clears the screen</summary>
  61.         Public Sub ClearScreen()
  62.  
  63.                 Port.Write("CL")
  64.  
  65.         End Sub
  66.  
  67.         ''' <summary>Enables the text cursor</summary>
  68.         Public Sub EnableCorsor()
  69.  
  70.                 Port.Write("CS1")
  71.  
  72.         End Sub
  73.  
  74.         ''' <summary>Disables the text cursor</summary>
  75.         Public Sub DisableCursor()
  76.  
  77.                 Port.Write("CS0")
  78.  
  79.         End Sub
  80.  
  81.         ''' <summary>Enables the backlight</summary>
  82.         Public Sub BacklightOn()
  83.  
  84.                 Port.Write("BL1")
  85.  
  86.         End Sub
  87.  
  88.         ''' <summary>Disables the backlight</summary>
  89.         Public Sub BacklightOff()
  90.  
  91.                 Port.Write("BL0")
  92.  
  93.         End Sub
  94.  
  95.         ''' <summary>Sets the backlight (0..100%)</summary>
  96.         Public Sub SetBacklight(ByVal Percent As Byte)
  97.  
  98.                 If Percent > 100 Then Throw New ArgumentException("Value must be in range of 0..100.", "Percent")
  99.  
  100.                 Dim Data As Byte() = Enc.GetBytes("BL ")
  101.                 Data(2) = Percent
  102.  
  103.                 Port.Write(Data, 0, Data.Length)
  104.  
  105.         End Sub
  106.  
  107.         ''' <summary>Sets the screen on (True) or off (False)</summary>
  108.         ''' <param name="OnOff">True for turn on the screen, False for turn off</param>
  109.         Public Sub ScreenPower(ByVal OnOff As Boolean)
  110.  
  111.                 If OnOff Then
  112.                         Port.Write("SOO1")
  113.                 Else
  114.                         Port.Write("SOO0")
  115.                 End If
  116.  
  117.         End Sub
  118.  
  119.         ''' <summary>Sets if the configuration is displayed (True) or not (False)</summary>
  120.         ''' <param name="OnOff">True to display the information, False for not</param>
  121.         Public Sub DisplayConfig(ByVal OnOff As Boolean)
  122.  
  123.                 If OnOff Then
  124.                         Port.Write("DC1")
  125.                 Else
  126.                         Port.Write("DC0")
  127.                 End If
  128.  
  129.         End Sub
  130.  
  131.         ''' <summary>Sets the baud rate for the device.</summary>
  132.         ''' <param name="Rate">The new baud rate. Must be one of the following: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200</param>
  133.         ''' <remarks>Device always starts up with 9600 baud</remarks>
  134.         Public Sub SetBaudrate(ByVal Rate As Integer)
  135.  
  136.                 Select Case Rate
  137.                         Case 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200     ' anything ok
  138.                         Case Else : Throw New ArgumentException("Rate invalid.", "Rate")
  139.                 End Select
  140.  
  141.                 Port.Write("SB" & Rate.ToString)
  142.                 Port.Write(New Byte() {0}, 0, 1)
  143.  
  144.                 Do While Port.BytesToWrite > 0
  145.                         Threading.Thread.Sleep(100)
  146.                 Loop
  147.                 Port.Close()
  148.                 Port = Nothing
  149.                 GC.Collect()
  150.                 Port = New IO.Ports.SerialPort(PortName, Rate, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
  151.                 Port.Encoding = Enc
  152.                 Port.Open()
  153.  
  154.         End Sub
  155.  
  156.         ''' <summary>Sets the I2C address</summary>
  157.         Public Sub SetI2CAddress(ByVal Address As Byte)
  158.  
  159.                 Dim Data As Byte() = Enc.GetBytes("SI2CA ")
  160.                 Data(5) = Address
  161.  
  162.                 Port.Write(Data, 0, Data.Length)
  163.  
  164.         End Sub
  165.  
  166.         ''' <summary>Sets the displays columns and rows</summary>
  167.         Public Sub SetLCDColRow(ByVal Columns As Byte, ByVal Rows As Byte)
  168.  
  169.                 Dim Data As Byte() = Enc.GetBytes("STCR      ")
  170.                 Data(4) = Columns
  171.                 Data(5) = Rows
  172.                 Data(6) = &H80
  173.                 Data(7) = &HC0
  174.                 Data(8) = &H94
  175.                 Data(9) = &HD4
  176.  
  177.                 Port.Write(Data, 0, Data.Length)
  178.  
  179.         End Sub
  180.  
  181.         ''' <summary>Sets the position of the text cursor</summary>
  182.         ''' <param name="x">The vertical position</param>
  183.         ''' <param name="y">The horizontal position</param>
  184.         Public Sub SetPrintPos(ByVal x As Byte, ByVal y As Byte)
  185.  
  186.                 Dim Data As Byte() = Enc.GetBytes("TP  ")
  187.                 Data(2) = x
  188.                 Data(3) = y
  189.  
  190.                 Port.Write(Data, 0, Data.Length)
  191.  
  192.         End Sub
  193.  
  194.         ''' <summary>Writes a text on the display</summary>
  195.         ''' <param name="Text">The text to write</param>
  196.         Public Sub Print(ByVal Text As String)
  197.  
  198.                 Dim Data As Byte() = Enc.GetBytes("TT" & Text & " ")
  199.                 Data(Data.Length - 1) = 0
  200.  
  201.                 Port.Write(Data, 0, Data.Length)
  202.  
  203.         End Sub
  204.  
  205.         ''' <summary>Writes a number on the display</summary>
  206.         ''' <param name="Value">The number to write</param>
  207.         Public Sub Print(ByVal Value As Double)
  208.  
  209.                 Dim Data As Byte() = Enc.GetBytes("TT" & Value.ToString & " ")
  210.                 Data(Data.Length - 1) = 0
  211.  
  212.                 Port.Write(Data, 0, Data.Length)
  213.  
  214.         End Sub
  215.  
  216.         ''' <summary>Sends a raw command to the display, bypassing the controller</summary>
  217.         ''' <param name="Command">The command to write</param>
  218.         Public Sub DirectCommand(ByVal Command As Byte)
  219.  
  220.                 Dim Data As Byte() = Enc.GetBytes("MCD ")
  221.                 Data(3) = Command
  222.  
  223.                 Port.Write(Data, 0, Data.Length)
  224.  
  225.         End Sub
  226.  
  227.         ''' <summary>Sends a raw command to the display, bypassing the controller</summary>
  228.         ''' <param name="Command">The command to write</param>
  229.         Public Sub DirectData(ByVal Command As Byte)
  230.  
  231.                 Dim Data As Byte() = Enc.GetBytes("MDT ")
  232.                 Data(3) = Command
  233.  
  234.                 Port.Write(Data, 0, Data.Length)
  235.  
  236.         End Sub
  237.  
  238.         ''' <summary>Sets the graplic position</summary>
  239.         ''' <param name="x">The horizontal position</param>
  240.         ''' <param name="y">The vertical position</param>
  241.         Public Sub SetPointPos(ByVal x As Byte, ByVal y As Byte)
  242.  
  243.                 Dim Data As Byte() = Enc.GetBytes("GP  ")
  244.                 Data(2) = x
  245.                 Data(3) = y
  246.  
  247.                 Port.Write(Data, 0, Data.Length)
  248.  
  249.         End Sub
  250.  
  251.         ''' <summary>Sets the drawing mode</summary>
  252.         ''' <param name="Mode">C = Copy, ! or ~ = NOT, | = OR, ^ = XOR, &amp; = AND</param>
  253.         Public Sub SetMode(ByVal Mode As Char)
  254.  
  255.                 Select Case Mode
  256.                         Case "C"c, "!"c, "~"c, "|"c, "^"c, "&"c ' all ok
  257.                         Case Else : Throw New ArgumentException("Invalid mode.", "Mode")
  258.                 End Select
  259.  
  260.                 Port.Write("DM" & Mode)
  261.  
  262.         End Sub
  263.  
  264.         ''' <summary>Draws a monochrome image on the display</summary>
  265.         ''' <param name="x">The horizontal position</param>
  266.         ''' <param name="y">The vertical position</param>
  267.         ''' <param name="Width">The width of the image</param>
  268.         ''' <param name="Height">The height of the image</param>
  269.         ''' <param name="Image">The raw image data</param>
  270.         Public Sub DrawBitmap(ByVal x As Byte, ByVal y As Byte, ByVal Width As Byte, ByVal Height As Byte, ByVal Image As Byte())
  271.  
  272.                 Dim Data(Image.Length + 6) As Byte
  273.                 Array.Copy(Enc.GetBytes("DIM"), Data, 3)
  274.                 Data(3) = x
  275.                 Data(4) = y
  276.                 Data(5) = Width
  277.                 Data(6) = Height
  278.                 Array.Copy(Image, 0, Data, 7, Image.Length)
  279.  
  280.                 Port.Write(Data, 0, Data.Length)
  281.  
  282.         End Sub
  283.  
  284.         ''' <summary>Sets the graphic rotation</summary>
  285.         ''' <param name="Value">0 for 0°, 1 for 90°, 2 for 180°, 3 for 270°</param>
  286.         Public Sub SetRotation(ByVal Value As Byte)
  287.  
  288.                 If Value > 3 Then Throw New ArgumentException("Value must be in range of 0..3", "Value")
  289.  
  290.                 Port.Write("SD" & Value.ToString)
  291.  
  292.         End Sub
  293.  
  294.         ''' <summary>Same as SetRotation(0)</summary>
  295.         Public Sub UndoRotation()
  296.                 Call SetRotation(0)
  297.         End Sub
  298.  
  299.         ''' <summary>Same as SetRotation(1)</summary>
  300.         Public Sub SetRot90()
  301.                 Call SetRotation(1)
  302.         End Sub
  303.  
  304.         ''' <summary>Same as SetRotation(2)</summary>
  305.         Public Sub SetRot180()
  306.                 Call SetRotation(2)
  307.         End Sub
  308.  
  309.         ''' <summary>Same as SetRotation(3)</summary>
  310.         Public Sub SetRot270()
  311.                 Call SetRotation(3)
  312.         End Sub
  313.  
  314.         ''' <summary>Sets the display contrast</summary>
  315.         ''' <param name="Value">The contrast value</param>
  316.         Public Sub SetContrast(ByVal Value As Byte)
  317.  
  318.                 Dim Data As Byte() = Enc.GetBytes("CT ")
  319.                 Data(2) = Value
  320.  
  321.                 Port.Write(Data, 0, Data.Length)
  322.  
  323.         End Sub
  324.  
  325.         ''' <summary>Draws a filled rectangle</summary>
  326.         ''' <param name="x">Horizontal position</param>
  327.         ''' <param name="y">Vertical position</param>
  328.         ''' <param name="Width">The width</param>
  329.         ''' <param name="Height">The height</param>
  330.         Public Sub DrawBox(ByVal x As Byte, ByVal y As Byte, ByVal Width As Byte, ByVal Height As Byte)
  331.  
  332.                 Dim Data As Byte() = Enc.GetBytes("FR    ")
  333.                 Data(2) = x
  334.                 Data(3) = y
  335.                 Data(4) = x + Width
  336.                 Data(5) = y + Height
  337.  
  338.                 Port.Write(Data, 0, Data.Length)
  339.  
  340.         End Sub
  341.  
  342.         ''' <summary>Draws a rectangle</summary>
  343.         ''' <param name="x">Horizontal position</param>
  344.         ''' <param name="y">Vertical position</param>
  345.         ''' <param name="Width">The width</param>
  346.         ''' <param name="Height">The height</param>
  347.         Public Sub DrawFrame(ByVal x As Byte, ByVal y As Byte, ByVal Width As Byte, ByVal Height As Byte)
  348.  
  349.                 Dim Data As Byte() = Enc.GetBytes("DR    ")
  350.                 Data(2) = x
  351.                 Data(3) = y
  352.                 Data(4) = x + Width
  353.                 Data(5) = y + Height
  354.  
  355.                 Port.Write(Data, 0, Data.Length)
  356.  
  357.         End Sub
  358.  
  359.         ''' <summary>Draws a circle</summary>
  360.         ''' <param name="x">Horizontal position</param>
  361.         ''' <param name="y">Vertical position</param>
  362.         ''' <param name="Radius">The radius</param>
  363.         ''' <param name="Filled">True to fill it, False to not fill</param>
  364.         Public Sub DrawCircle(ByVal x As Byte, ByVal y As Byte, ByVal Radius As Byte, ByVal Filled As Boolean)
  365.  
  366.                 Dim Data As Byte() = Enc.GetBytes("CC    ")
  367.                 Data(2) = x
  368.                 Data(3) = y
  369.                 Data(4) = Radius
  370.                 Data(5) = CByte(If(Filled, Asc("1"c), Asc("0"c)))
  371.  
  372.                 Port.Write(Data, 0, Data.Length)
  373.  
  374.         End Sub
  375.  
  376.         ''' <summary>Draws a filled circle</summary>
  377.         ''' <param name="x">Horizontal position</param>
  378.         ''' <param name="y">Vertical position</param>
  379.         ''' <param name="Radius">The radius</param>
  380.         Public Sub DrawDisc(ByVal x As Byte, ByVal y As Byte, ByVal Radius As Byte)
  381.                 Call DrawCircle(x, y, Radius, True)
  382.         End Sub
  383.  
  384.         ''' <summary>Draws a single pixel</summary>
  385.         ''' <param name="x">Horizontal position</param>
  386.         ''' <param name="y">Vertical position</param>
  387.         Public Sub DrawPixel(ByVal x As Byte, ByVal y As Byte)
  388.  
  389.                 Dim Data As Byte() = Enc.GetBytes("DP  ")
  390.                 Data(2) = x
  391.                 Data(3) = y
  392.  
  393.                 Port.Write(Data, 0, Data.Length)
  394.  
  395.         End Sub
  396.  
  397.         ''' <summary>Draws a line on the screen</summary>
  398.         ''' <param name="x1">The horizontal start position</param>
  399.         ''' <param name="y1">The vertical start position</param>
  400.         ''' <param name="x2">The horizontal end position</param>
  401.         ''' <param name="y2">The vertical end position</param>
  402.         Public Sub DrawLine(ByVal x1 As Byte, ByVal y1 As Byte, ByVal x2 As Byte, ByVal y2 As Byte)
  403.  
  404.                 Dim Data As Byte() = Enc.GetBytes("LN    ")
  405.                 Data(2) = x1
  406.                 Data(3) = y1
  407.                 Data(4) = x2
  408.                 Data(5) = y2
  409.  
  410.                 Port.Write(Data, 0, Data.Length)
  411.  
  412.         End Sub
  413.  
  414.         ''' <summary>Draws a horizontal line on the screen</summary>
  415.         ''' <param name="x">The horizontal start position</param>
  416.         ''' <param name="y">The vertical start position</param>
  417.         ''' <param name="Width">The width for the line</param>
  418.         Public Sub DrawHLine(ByVal x As Byte, ByVal y As Byte, ByVal Width As Byte)
  419.                 Call DrawLine(x, y, x + Width, y)
  420.         End Sub
  421.  
  422.         ''' <summary>Draws a vertical line on the screen</summary>
  423.         ''' <param name="x">The horizontal start position</param>
  424.         ''' <param name="y">The vertical start position</param>
  425.         ''' <param name="Height">The height for the line</param>
  426.         Public Sub DrawVLine(ByVal x As Byte, ByVal y As Byte, ByVal Height As Byte)
  427.                 Call DrawLine(x, y, x, y + Height)
  428.         End Sub
  429.  
  430.         ''' <summary>Draws a line from the last position to the new position</summary>
  431.         ''' <param name="x">The new horizontal position</param>
  432.         ''' <param name="y">The new vertical position</param>
  433.         Public Sub DrawLineTo(ByVal x As Byte, ByVal y As Byte)
  434.  
  435.                 Dim Data As Byte() = Enc.GetBytes("LT  ")
  436.                 Data(2) = x
  437.                 Data(3) = y
  438.  
  439.                 Port.Write(Data, 0, Data.Length)
  440.  
  441.         End Sub
  442.  
  443.         ''' <summary>Moves the text cursor to the next line</summary>
  444.         Public Sub NextTextLine()
  445.  
  446.                 Port.Write("TRT")
  447.  
  448.         End Sub
  449.  
  450.         ''' <summary>Sets the font which will be used</summary>
  451.         ''' <param name="Font">The font to use. Valid: 0, 6, 10, 18, 51, 120, 123, 200, 201, 202, 203</param>
  452.         Public Sub SetFont(ByVal Font As Byte)
  453.  
  454.                 Select Case Font
  455.                         Case 0, 6, 10, 18, 51, 120, 123, 200, 201, 202, 203     ' Anything ok
  456.                         Case Else : Throw New ArgumentException("Invalid font.", "Font")
  457.                 End Select
  458.  
  459.                 Dim Data As Byte() = Enc.GetBytes("SF ")
  460.                 Data(2) = Font
  461.  
  462.                 Port.Write(Data, 0, Data.Length)
  463.  
  464.         End Sub
  465.  
  466.         ''' <summary>Sets the color which will be used</summary>
  467.         ''' <param name="Color">The color to use. Valid: 0..255 for color displays, 0..1 for monochrome</param>
  468.         Public Sub SetColor(ByVal Color As Byte)
  469.  
  470.                 Dim Data As Byte() = Enc.GetBytes("SC ")
  471.                 Data(2) = Color
  472.  
  473.                 Port.Write(Data, 0, Data.Length)
  474.  
  475.         End Sub
  476.  
  477.         ''' <summary>Moves an area to another location</summary>
  478.         ''' <param name="x">The horizontal position of the rectangle to move</param>
  479.         ''' <param name="y">The vertical position of the rectangle to move</param>
  480.         ''' <param name="Width">The width of the rectangle to move</param>
  481.         ''' <param name="Height">The height of the rectangle to move</param>
  482.         ''' <param name="XOffset">The horizontal offset to move to</param>
  483.         ''' <param name="YOffset">The vertical offset to move to</param>
  484.         Public Sub MoveArea(ByVal x As Byte, ByVal y As Byte, ByVal Width As Byte, ByVal Height As Byte, ByVal XOffset As Byte, ByVal YOffset As Byte)
  485.  
  486.                 Dim Data As Byte() = Enc.GetBytes("MA      ")
  487.                 Data(2) = x
  488.                 Data(3) = y
  489.                 Data(4) = Width
  490.                 Data(5) = Height
  491.                 Data(6) = XOffset
  492.                 Data(7) = YOffset
  493.  
  494.                 Port.Write(Data, 0, Data.Length)
  495.  
  496.         End Sub
  497.  
  498.         ''' <summary>Moves the text cursor back to the last position</summary>
  499.         Public Sub SetTextPosBack()
  500.  
  501.                 Port.Write("ETB")
  502.  
  503.         End Sub
  504.  
  505.         ''' <summary>Moves the text cursor to another relative position (in pixel)</summary>
  506.         ''' <param name="XOffset">The horizontal offset to move to</param>
  507.         ''' <param name="YOffset">The vertical offset to move to</param>
  508.         Public Sub SetTextPosOffset(ByVal XOffset As Byte, ByVal YOffset As Byte)
  509.  
  510.                 Dim Data As Byte() = Enc.GetBytes("ETO  ")
  511.                 Data(3) = XOffset
  512.                 Data(4) = YOffset
  513.  
  514.                 Port.Write(Data, 0, Data.Length)
  515.  
  516.         End Sub
  517.  
  518.         ''' <summary>Moves the text cursor to another absolute position (in pixel)</summary>
  519.         ''' <param name="x">The horizontal position to move to</param>
  520.         ''' <param name="y">The vertical position to move to</param>
  521.         Public Sub SetTextPosAbs(ByVal x As Byte, ByVal y As Byte)
  522.  
  523.                 Dim Data As Byte() = Enc.GetBytes("ETP  ")
  524.                 Data(3) = x
  525.                 Data(4) = y
  526.  
  527.                 Port.Write(Data, 0, Data.Length)
  528.  
  529.         End Sub
  530.  
  531.         ''' <summary>Uploads the splash screen data</summary>
  532.         ''' <param name="Image">The splash screen data</param>
  533.         Public Sub UploadStartScreen(ByVal Image As Byte())
  534.  
  535.                 Dim Data(4 + Image.Length) As Byte
  536.                 Array.Copy(Enc.GetBytes("SSS"), Data, 3)
  537.                 Data(3) = CByte(Image.Length And &HFF)
  538.                 Data(4) = CByte(Image.Length >> 8)
  539.                 Array.Copy(Image, 0, Data, 5, Data.Length)
  540.  
  541.                 Port.Write(Data, 0, Data.Length)
  542.  
  543.         End Sub
  544.  
  545.         ''' <summary>Uploads a user font data</summary>
  546.         ''' <param name="Index">The section for the data</param>
  547.         ''' <param name="Font">The font data</param>
  548.         Public Sub UploadUserFont(ByVal Index As Byte, ByVal Font As Byte())
  549.  
  550.                 Dim Data(5 + Font.Length) As Byte
  551.                 Array.Copy(Enc.GetBytes("SUF"), Data, 3)
  552.                 Data(3) = Index
  553.                 Data(4) = CByte(Font.Length And &HFF)
  554.                 Data(5) = CByte(Font.Length >> 8)
  555.                 Array.Copy(Font, 0, Data, 5, Data.Length)
  556.  
  557.                 Port.Write(Data, 0, Data.Length)
  558.  
  559.         End Sub
  560.  
  561.         ''' <summary>Sets if the start screen should be displayed or not</summary>
  562.         ''' <param name="Value">True will show the splash screen on startup, False disables it</param>
  563.         Public Sub DisplayStartScreen(ByVal Value As Boolean)
  564.  
  565.                 Port.Write("DSS" & If(Value, "1", "0"))
  566.  
  567.         End Sub
  568.  
  569.         ''' <summary>Sends a byte to the output head of the display</summary>
  570.         ''' <param name="Value">The byte to send</param>
  571.         Public Sub DigitalOutput(ByVal Value As Byte)
  572.  
  573.                 Dim Data As Byte() = Enc.GetBytes("DOUT ")
  574.                 Data(4) = Value
  575.  
  576.                 Port.Write(Data, 0, Data.Length)
  577.  
  578.         End Sub
  579.  
  580.         ''' <summary>Sets the line pattern when drawing a line</summary>
  581.         ''' <param name="Value">The pattern to use. eg.: 0xAA = dotted, 0xFA = dash</param>
  582.         Public Sub SetLinePattern(ByVal Value As Byte)
  583.  
  584.                 Dim Data As Byte() = Enc.GetBytes("SLP ")
  585.                 Data(3) = Value
  586.  
  587.                 Port.Write(Data, 0, Data.Length)
  588.  
  589.         End Sub
  590.  
  591.         ''' <summary>Draws an image on the device which has up to 256 colors.</summary>
  592.         ''' <param name="x">The horizontal position for the image</param>
  593.         ''' <param name="y">The vertical position of the image</param>
  594.         ''' <param name="Width">The width of the image</param>
  595.         ''' <param name="Height">The height of the image</param>
  596.         ''' <param name="Image">The raw image data</param>
  597.         ''' <remarks>Color format: RRRGGGBB</remarks>
  598.         Public Sub DrawBitmap256(ByVal x As Byte, ByVal y As Byte, ByVal Width As Byte, ByVal Height As Byte, ByVal Image As Byte())
  599.  
  600.                 Dim Data(9 + Image.Length) As Byte
  601.                 Array.Copy(Enc.GetBytes("EDIM1"), Data, 5)
  602.                 Data(5) = x
  603.                 Data(6) = y
  604.                 Data(7) = Width
  605.                 Data(8) = Height
  606.                 Array.Copy(Image, 0, Data, 9, Image.Length)
  607.  
  608.                 Port.Write(Data, 0, Data.Length)
  609.  
  610.         End Sub
  611.  
  612.         ''' <summary>Draws an image on the device which has up to 65k colors.</summary>
  613.         ''' <param name="x">The horizontal position for the image</param>
  614.         ''' <param name="y">The vertical position of the image</param>
  615.         ''' <param name="Width">The width of the image</param>
  616.         ''' <param name="Height">The height of the image</param>
  617.         ''' <param name="Image">The raw image data</param>
  618.         ''' <remarks>Color format: RRRRRGGG GGGBBBBB</remarks>
  619.         Public Sub DrawBitmap64K(ByVal x As Byte, ByVal y As Byte, ByVal Width As Byte, ByVal Height As Byte, ByVal Image As Byte())
  620.  
  621.                 Dim Data(9 + Image.Length) As Byte
  622.                 Array.Copy(Enc.GetBytes("EDIM2"), Data, 5)
  623.                 Data(5) = x
  624.                 Data(6) = y
  625.                 Data(7) = Width
  626.                 Data(8) = Height
  627.                 Array.Copy(Image, 0, Data, 9, Image.Length)
  628.  
  629.                 Port.Write(Data, 0, Data.Length)
  630.  
  631.         End Sub
  632.  
  633.         ''' <summary>Draws an image on the device which has up to 262k colors.</summary>
  634.         ''' <param name="x">The horizontal position for the image</param>
  635.         ''' <param name="y">The vertical position of the image</param>
  636.         ''' <param name="Width">The width of the image</param>
  637.         ''' <param name="Height">The height of the image</param>
  638.         ''' <param name="Image">The raw image data</param>
  639.         ''' <remarks>Color format: 00RRRRRR 00GGGGGG 00BBBBBB</remarks>
  640.         Public Sub DrawBitmap262K(ByVal x As Byte, ByVal y As Byte, ByVal Width As Byte, ByVal Height As Byte, ByVal Image As Byte())
  641.  
  642.                 Dim Data(9 + Image.Length) As Byte
  643.                 Array.Copy(Enc.GetBytes("EDIM3"), Data, 5)
  644.                 Data(5) = x
  645.                 Data(6) = y
  646.                 Data(7) = Width
  647.                 Data(8) = Height
  648.                 Array.Copy(Image, 0, Data, 9, Image.Length)
  649.  
  650.                 Port.Write(Data, 0, Data.Length)
  651.  
  652.         End Sub
  653.  
  654.         ''' <summary>Sets the color for ongoing graphic operations.</summary>
  655.         ''' <param name="Red">The intensity for red color</param>
  656.         ''' <param name="Green">The intensity for green color</param>
  657.         ''' <param name="Blue">The intensity for blue color</param>
  658.         Public Sub SetTrueColor(ByVal Red As Byte, ByVal Green As Byte, ByVal Blue As Byte)
  659.  
  660.                 Dim Data As Byte() = Enc.GetBytes("ESC   ")
  661.                 Data(3) = Red
  662.                 Data(4) = Green
  663.                 Data(5) = Blue
  664.  
  665.                 Port.Write(Data, 0, Data.Length)
  666.  
  667.         End Sub
  668.  
  669.         ''' <summary>Sets the color for ongoing graphic operations.</summary>
  670.         ''' <param name="Color">The .Net Framework color</param>
  671.         Public Sub SetTrueColor(ByVal Color As Drawing.Color)
  672.  
  673.                 Call SetTrueColor(Color.R >> 2, Color.G >> 2, Color.B >> 2)
  674.  
  675.         End Sub
  676.  
  677.         ''' <summary>Sets the LCD chip used. See user manual for details.</summary>
  678.         ''' <param name="Chip">The chip to use.</param>
  679.         Public Sub SetLCDChip(ByVal Chip As Byte)
  680.  
  681.                 Dim Data As Byte() = Enc.GetBytes("SLCD ")
  682.                 Data(4) = Chip
  683.  
  684.                 Port.Write(Data, 0, Data.Length)
  685.  
  686.         End Sub
  687.  
  688.         ''' <summary>Shuts down the MCU to save energy. Send a dummy byte (0x00) for wake up and wait a few msec.</summary>
  689.         Public Sub ShutdownMCU()
  690.  
  691.                 Port.Write("DNMCU")
  692.  
  693.         End Sub
  694.  
  695.         ''' <summary>Shuts down the MCU and the display to save energy. Send a dummy byte (0x00) for wake up and wait a few msec.</summary>
  696.         Public Sub ShutdownDevice()
  697.  
  698.                 Port.Write("DNALL")
  699.  
  700.         End Sub
  701.  
  702.         ''' <summary>Dummy function to wakeup the device after shutdown command</summary>
  703.         Public Sub WakeupDevice()
  704.  
  705.                 Dim Data(0) As Byte
  706.                 Data(0) = 0
  707.                 Port.Write(Data, 0, Data.Length)
  708.  
  709.         End Sub
  710.  
  711.  
  712.  
  713. End Class
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top