Microbit basic serial port example

In this example we will create a VB.net program that will read data from the serial port, in this case a Microbit connected to the PC. We will then upload a program to our microbit that sends data via the serial port when a button is pressed.

This is a picture of the app will be creating, as you can see it has a combo box with available comms ports listed, connect and disconnect buttons and a textbox which will display serial data from the microbit. You can see the app running and the results of some key presses

Microbit Code

This was written in python using the Mu editor

[codesyntax lang=”python”]

from microbit import *

while True:
    if button_a.is_pressed():
        print("Button A was pressed")
        sleep(250)
    elif button_b.is_pressed():
        print("Button B was pressed")
        sleep(250)
    sleep(100)

[/codesyntax]

 

Application Code

[codesyntax lang=”vbnet”]

Imports System.IO.Ports


Public Class frmMicroBit
    Dim WithEvents serialPort As New SerialPort
    Delegate Sub myMethodDelegate(ByVal [text] As String)
    Dim myDelegate As New myMethodDelegate(AddressOf DisplaySerialText)

    Private Sub GetSerialPortNames()
        For Each sport As String In My.Computer.Ports.SerialPortNames
            cboPorts.Items.Add(sport)
        Next
    End Sub

    Private Sub frmMicroBit_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            GetSerialPortNames()
            cboPorts.SelectedIndex = 0
        Catch
            MsgBox("No ports connected.")
        End Try
    End Sub

    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
        Try
            serialPort.BaudRate = 115200
            serialPort.PortName = cboPorts.SelectedItem.ToString
            serialPort.Parity = Parity.None
            serialPort.DataBits = 8
            serialPort.StopBits = 1
            serialPort.Open()
            If serialPort.IsOpen Then
                btnConnect.Visible = False
                cboPorts.Enabled = False
                btnDisconnect.Visible = True
            End If
        Catch
            serialPort.Close()
        End Try
    End Sub

    Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
        Try
            serialPort.Close()
            btnConnect.Visible = True
            btnDisconnect.Visible = False
            cboPorts.Enabled = True
            Exit Sub
        Catch
            MessageBox.Show("Problem closing port")
        End Try
    End Sub

    Sub DisplaySerialText(ByVal myString As String)
        txtSerial.AppendText(myString)
    End Sub

    Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serialPort.DataReceived
        Dim str As String = serialPort.ReadExisting()
        Invoke(myDelegate, str)
    End Sub
End Class

[/codesyntax]

 

Links

I uploaded the example VB.net app to https://drive.google.com/file/d/0B7mkEkhIEzkNMVVMZEZHbW8wUzA/view?usp=sharing

Related posts

Program your micro:bit with the Arduino IDE

MicroBit Edge Connector Breakout Board

LED pattern using Microsoft Block Editor for Micro:Bit