Was VB angeht hab ich mich entweder ziemlich dämlich angestellt oder es ist echt nicht einfach ein Image zu drehen (Kompassscheibe).
Habe mir einfach aus diesesm Programm ( http://vb-fun.de/cgi-bin/loadframe.p.../tip0154.shtml ) alles Rausgesucht was ich brauchte.

Hier mal der Code wenn es dich interessiert :
Code:
Imports System.Drawing.Imaging

Public Class Form1

    'Deklarationen
    Dim Buffer As Bitmap
    Dim graph As Graphics
    Dim Winkel As String = 0

    Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        SerialPort1.Open()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Buffer = New Bitmap(PictureBox1.Width, PictureBox1.Height, PixelFormat.Format32bppPArgb) 'Dem "Buffer"-Bild das richtige Format zuordnen
        graph = Graphics.FromImage(Buffer) 'Die Graphics-Klasse "graph" mit dem Bild Buffer verbinden
        Call DreheBild() 'Bild aktualisieren
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If SerialPort1.BytesToRead > 0 Then
            Winkel = 0
            Do
                Winkel = Winkel & Chr(SerialPort1.ReadByte)
                If SerialPort1.BytesToRead = 0 Then
                    lblWinkel.Text = CInt(Winkel / 10) & "°"
                    Call DreheBild()
                    Exit Do
                End If
            Loop
        End If
    End Sub

    Private Sub DreheBild()
        graph.Clear(Color.Transparent) 'Das Bild löschen
        graph.ResetTransform() 'Den Mittelpunkt und die Rotation löschen
        graph.TranslateTransform(PictureBox1.Width / 2, PictureBox1.Height / 2, Drawing2D.MatrixOrder.Append) 'Setzen des Rotiermittelpunktes
        graph.RotateTransform(CInt(Winkel) / 10 * (-1)) 'Rotation auf die Matrix ausführen
        graph.DrawImage(PictureBox1.Image, New Rectangle(-PictureBox1.Width / 2, -PictureBox1.Height / 2, PictureBox1.Width, PictureBox1.Height)) 'Bild mit angegebenem Drehwinkel in das Buffer-Bild kopieren
        Vorschau.Image = Buffer 'Das Buffer-Image auf die PictureBox übertragen
    End Sub

 
End Class


Was die Himmelsrichtung angeht so sende ich einfach die Abweichung zu Norden als Winkel.
Zb 45,2° als 452 und teile später durch 10.

Werde erst mal jedes Sensorprogramm einezeln schreiben und später dann zusammen setzen.
Dann werde ich mit "Headern" arbeiten, also zb HR452.
Werde dann in VB erst mal die ersten beiden Zeichen Auswerten HR = Himmelsrichtung und dann dem entsprechend die folgenden Zeichen auswerten.[/quote]