Jump to content
The simFlight Network Forums

eiekland

Members
  • Posts

    1
  • Joined

  • Last visited

Posts posted by eiekland

  1. Hi,

    If you use VB.NET use the FSUIPC SDK and the .NET example.

    Then add the following lines.

    I'm sure it's cleaner way's to do it, but this was what I could come up with right now.

    /Richard

    '****Code *****
    '40 byte structure:
    
     _
        Structure TCAS_DATA
            Dim id As Integer 
            Dim lat As Single
            Dim lon As Single
            Dim alt As Single
            Dim hdg As Short
            Dim gs As Short
            Dim vs As Short
     _
            Dim idATC() As Byte
            Dim com1 As Short
        End Structure
    
        Sub Test_TCAS_DATA()
    
            Dim dwResult As Integer
            Dim Token As Integer
            Dim result As Integer
            Dim fsByte(4095) As Byte
            Dim TCA(0) As TCAS_DATA
            Dim T As System.Type
            T = TCA(0).GetType
    
            Try
                If Connected Then
                    If FSUIPC_Read(&HF000, 4096, Token, dwResult) Then
                        If FSUIPC_Process(dwResult) Then
                            If FSUIPC_Get(Token, 4096, fsByte) Then
                                Dim i As Integer
                                Dim j As Integer
                                Dim k As Integer
    
                                Dim StrByte(39) As Byte
                                For i = 128 To 4095
                                    StrByte(j) = fsByte(i)
                                    j += 1
                                    If j = 40 Then
                                        ReDim Preserve TCA(TCA.Length)
                                        TCA(TCA.Length - 1) = UnSafeByteArrayToStructure(StrByte, T)
                                        Erase StrByte
                                        ReDim StrByte(39)
                                        j = 0
                                        k += 1
                                        If k = 96 Then Exit For 'we are finish with the loop
    
                                    End If
                                Next
    
                                'To Test the name of the 5th record you can convert the byte to string like this
                                System.Text.Encoding.ASCII.GetString(TCA(5).idATC)
    
                            End If
                        End If
                    End If
                End If
            Catch ex As Exception
                Debug.WriteLine("Error: " & ex.Message)
            End Try
    
        End Sub
    
    
    '* help methodes for converting Byte to Structure:
    
        Public Function UnSafeByteArrayToStructure(ByVal b() As Byte, ByVal t As Type) As ValueType
            Dim p As IntPtr = Runtime.InteropServices.Marshal.AllocHGlobal(b.Length)
            Try
                Runtime.InteropServices.Marshal.Copy(b, 0, p, b.Length)
                Dim vt As ValueType = Runtime.InteropServices.Marshal.PtrToStructure(p, t)
                Return vt
            Finally
                Runtime.InteropServices.Marshal.FreeHGlobal(p)
            End Try
        End Function
    
        Public Function UnSafeStructureToByteArray(ByRef s As ValueType) As Byte()
            Dim bc As Integer = Runtime.InteropServices.Marshal.SizeOf(s)
            Dim p As IntPtr = Runtime.InteropServices.Marshal.AllocHGlobal(bc)
            Try
                Runtime.InteropServices.Marshal.StructureToPtr(s, p, False)
                Dim b(bc - 1) As Byte
                Dim i As Integer
                For i = 0 To bc - 1
                    b(i) = Runtime.InteropServices.Marshal.ReadByte(p, i)
                Next
                Return b
            Finally
                Runtime.InteropServices.Marshal.FreeHGlobal(p)
            End Try
        End Function
    
    

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.