Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Então pessoal este é um código de um programa que interage com o jogo Flight Simulator X! Gostaria que vocês me ajudassem a entede-lo para que eu possa edita-lo! O código é o seguinte:
PS.: Há alguns comentários no código mas porém o que eu queria entender era algumas coisas do tipo:
Dim com2bcd As Offset(Of Short) = New FSUIPC.Offset(Of Short)(&H3118) ' Example of reading a frequency coded in Binary Coded Decimal
No código acima como saber se irei colocar 'Of Integer', 'Of Byte', 'Of Double' etc! E como fazer para exibir estes valores por exemplo em uma textbox!
Imports FSUIPC
Imports System.Drawing.Drawing2D
Public Class CFP
' Constants
Private Const AppTitle As String = "FSUIPCClientExample_VB"
' Register the Offsets we're interesing in for this application
Dim horagame As Offset(Of Integer) = New FSUIPC.Offset(Of Integer)(&H238) 'HORA ATUAL DO JOGO
Dim airSpeed As Offset(Of Integer) = New FSUIPC.Offset(Of Integer)(&H2BC) ' Basic integer read example
Dim avionics As Offset(Of Integer) = New FSUIPC.Offset(Of Integer)(&H2E80) ' Basic integer read and write example
Dim fsLocalDateTime As Offset(Of Byte()) = New FSUIPC.Offset(Of Byte())(&H238, 10) ' Example of reading an arbitary set of bytes.
Dim aircraftType As Offset(Of String) = New FSUIPC.Offset(Of String)("AircraftInfo", &H3160, 24) ' Example of string and use of a group
Dim lights As Offset(Of BitArray) = New FSUIPC.Offset(Of BitArray)(&HD0C, 2) ' Example of BitArray used to manage a bit field type offset.
Dim compass As Offset(Of Double) = New FSUIPC.Offset(Of Double)(&H2CC) ' Example for disconnecting/reconnecting
Dim pause As Offset(Of Short) = New FSUIPC.Offset(Of Short)(&H262, True) ' Example of a write only offset.
Dim com2bcd As Offset(Of Short) = New FSUIPC.Offset(Of Short)(&H3118) ' Example of reading a frequency coded in Binary Coded Decimal
Dim playerLatitude As Offset(Of Long) = New Offset(Of Long)(&H560) ' Offset for Lat/Lon features
Dim playerLongitude As Offset(Of Long) = New Offset(Of Long)(&H568) ' Offset for Lat/Lon features
Dim onGround As Offset(Of Short) = New Offset(Of Short)(&H366) ' Offset for Lat/Lon features
Dim magVar As Offset(Of Short) = New Offset(Of Short)(&H2A0) ' Offset for Lat/Lon features
Dim playerHeadingTrue As Offset(Of UInteger) = New Offset(Of UInteger)(&H580) ' Offset for moving the plane
Dim playerAltitude As Offset(Of Long) = New Offset(Of Long)(&H570) ' Offset for moving the plane
Dim slewMode As Offset(Of Short) = New Offset(Of Short)(&H5DC, True) ' Offset for moving the plane
Dim sendControl As Offset(Of Integer) = New Offset(Of Integer)(&H3110, True) ' Offset for moving the plane
Dim visibilidade As Offset(Of Integer) = New Offset(Of Integer)(&HF8C, True) ' Visibilidade
Dim airspeedKnots As Double = (airSpeed.Value / 128D)
' Opens FSUIPC - if all goes well then starts the
' timer to drive start the main application cycle.
' If can't open display the error message.
Private Sub OpenFSUIPC()
Try
' Attempt to open a connection to FSUIPC (running on any version of Flight Sim)
FSUIPCConnection.Open()
' Opened OK so disable the Connect button
Me.btnStart.Enabled = False
Me.chkEnableAIRadar.Enabled = True
' and start the timer ticking to drive the rest of the application
Me.Timer1.Interval = 200
Me.Timer1.Enabled = True
TextBox1.BackColor = Color.Green
TextBox1.Text = "Connected"
' Set the AI object
AI = FSUIPCConnection.AITrafficServices
Catch ex As Exception
' Badness occurred - show the error message
' MessageBox.Show(ex.Message, AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
MsgBox("Please start FSX/FS2004 or make sure you have FSUIPC installed!")
End Try
End Sub
' The timer handles the real-time updating of the Form.
' The default group (ie, no group specified) is
' Processed and every Offset in the default group is updated.
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try
' Process the default group
FSUIPCConnection.Process()
' IAS - Simple integer returned so just divide as per the
' FSUIPC documentation for this offset and display the result.
Dim airpeedKnots As Double = (airSpeed.Value / 128D)
Me.txtIAS.Text = airpeedKnots.ToString("f1")
' Avionics Master Switch
Me.chkAvionics.Checked = (avionics.Value > 0) ' 0 = Off, 1 = On.
' Advanced Concept: Reading Raw Blocks of Data.
' FS Local Date and Time
' This demonstrates getting back an arbitrary number of bytes from an offset.
' Here we're getting 10 back from Offset 0x0328 which contain info about the
' local date and time in FS.
' Because it's returned as a byte array we need to handle everything ourselves...
' 1. Year (starts at Byte 8) for 2 bytes. (Int16)
' Use the BitConverter class to get it into a native Int16 variable
Dim year As Short = BitConverter.ToInt16(fsLocalDateTime.Value, 8)
' You could also do it manually if you know about such things...
' Dim year As Short = (fsLocalDateTime.Value(8) + (fsLocalDateTime.Value(9) * &H100))
' 2. Make new datetime with the the time value at 01/01 of the year...
' Time - in bytes 0,1 and 2. (Hour, Minute, Second):
Dim fsTime As DateTime = New DateTime(year, 1, 1, fsLocalDateTime.Value(0), fsLocalDateTime.Value(1), fsLocalDateTime.Value(2))
' 3. Get the Day of the Year back (not given as Day and Month)
' and add this on to the Jan 1 date we created above
' to give the final date:
Dim dayNo As Short = BitConverter.ToInt16(fsLocalDateTime.Value, 6)
fsTime = fsTime.Add(New TimeSpan(dayNo - 1, 0, 0, 0))
' Now print it out
Me.txtFSDateTime.Text = fsTime.ToString("dddd, MMMM dd yyyy hh:mm:ss")
' Lights
' This demonstrates using the BitArray type to handle
' a bit field type offset. The lights are a 2 byte (16bit) bit field
' starting in offset 0D0C.
' To make the code clearer and easier to write in the first
' place - I created a LightType Enum (bottom of this file).
' You could of course just use the literal values 0-9 if you prefer.
' For the first three, I've put alternative lines in comments
' that use a literal indexer instead of the enum.
' Update each checkbox according to the relevent bit in the BitArray...
Me.chkBeacon.Checked = lights.Value(LightType.Beacon)
'Me.chkBeacon.Checked = lights.Value(1)
Me.chkCabin.Checked = lights.Value(LightType.Cabin)
'Me.chkCabin.Checked = lights.Value(9)
Me.chkInstuments.Checked = lights.Value(LightType.Instruments)
'Me.chkInstuments.Checked = lights.Value(5)
Me.chkLanding.Checked = lights.Value(LightType.Landing)
Me.chkLogo.Checked = lights.Value(LightType.Logo)
Me.chkNavigation.Checked = lights.Value(LightType.Navigation)
Me.chkRecognition.Checked = lights.Value(LightType.Recognition)
Me.chkStrobes.Checked = lights.Value(LightType.Strobes)
Me.chkTaxi.Checked = lights.Value(LightType.Taxi)
Me.chkWing.Checked = lights.Value(LightType.Wing)
' Compass heading
' Used to demonstrate disconnecting and reconnecting an Offset.
' We display the data in the field regardless of whether
' it's been updated or not.
Me.txtCompass.Text = compass.Value.ToString("F2")
' COM2 frequency
' Shows decoding a DCD frequency to a string
' a. Convert to a string in Hexadecimal format
Dim com2String As String = com2bcd.Value.ToString("X")
' b. Add the assumed '1' and insert the decimal point
com2String = "1" & com2String.Substring(0, 2) & "." & com2String.Substring(2, 2)
Me.txtCOM2.Text = com2String
' VISIBILIDADE
Dim visibilitySring As String = visibilidade.Value.ToString("X")
visibilitySring = "1" & visibilitySring.Substring(0, 2) & "." & visibilitySring.Substring(2, 2)
' Me.VisibilitText.Text = visibilitySring
' Latitude and Longitude
' Shows using the FsLongitude and FsLatitude classes to easily work with Lat/Lon
' Create new instances of FsLongitude and FsLatitude using the raw 8-Byte data from the FSUIPC Offsets
Dim lon As FsLongitude = New FsLongitude(playerLongitude.Value)
Dim lat As FsLatitude = New FsLatitude(playerLatitude.Value)
' Use the ToString() method to output in human readable form:
' (note that many other properties are avilable to get the Lat/Lon in different numerical formats)
Me.txtLatitude.Text = lat.ToString()
Me.txtLongitude.Text = lon.ToString()
' Using fsLonLatPoint to calculate distance and bearing between two points
' First get the point for the current plane position
Dim currentPosition As FsLatLonPoint = New FsLatLonPoint(lat, lon)
' Get the distance between here and EGLL
Dim distance As Double = 0
Select Case (Me.cbxDistanceUnits.Text)
Case "Nautical Miles"
distance = currentPosition.DistanceFromInNauticalMiles(EGLL)
Case "Statute Miles"
distance = currentPosition.DistanceFromInFeet(EGLL) / 5280D
Case "Kilometres"
distance = currentPosition.DistanceFromInMetres(EGLL) / 1000D
End Select
' Write the distance to the text box formatting to 2 decimal places
Me.txtDistance.Text = distance.ToString("N2")
' Get the bearing (True)
Dim bearing As Double = currentPosition.BearingTo(EGLL)
' Get the magnetic variation
Dim variation As Double = magVar.Value * 360D / 65536D
' convert bearing to magnetic bearing by subtracting the magnetic variation
bearing = bearing - variation
' Display the bearing in whole numbers and tag on a degree symbol
Me.txtBearing.Text = bearing.ToString("F0") & Chr(&HB0)
' Now check if the player is on the runway:
' Test is the plane is on the ground and if the current position is in the bounds of
' the runway Quadrangle we calculated in the constructor above.
Me.chkPlaneOnRunway.Checked = (Me.onGround.Value = 1 And runwayQuad.ContainsPoint(currentPosition))
Catch exFSUIPC As FSUIPCException
If exFSUIPC.FSUIPCErrorCode = FSUIPCError.FSUIPC_ERR_SENDMSG Then
' Send message error - connection to FSUIPC lost.
' Show message, disable the main timer loop and relight the
' connection button:
' Also Close the broken connection.
Me.Timer1.Enabled = False
Me.AIRadarTimer.Enabled = False
Me.btnStart.Enabled = True
Me.chkEnableAIRadar.Enabled = False
Me.chkEnableAIRadar.Checked = False
FSUIPCConnection.Close()
MessageBox.Show("The connection to Flight Sim has been lost.", AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
' not the disonnect error so some other baddness occured.
' just rethrow to halt the application
Throw exFSUIPC
End If
Catch ex As Exception
' Sometime when the connection is lost, bad data gets returned
' and causes problems with some of the other lines.
' This catch block just makes sure the user doesn't see any
' other Exceptions apart from FSUIPCExceptions.
End Try
End Sub
' Demonstrates the Grouping facility and also returning a string.
' The AircraftType Offset is in a Group called "AircraftInfo".
' With the Group system you can gain control over which
' Offsets are processed.
Private Sub btnGetAircraftType_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetAircraftType.Click
' Aircraft type is in the "AircraftInfo" data group so we only want to proccess that here.
Try
FSUIPCConnection.Process("AircraftInfo")
' OK so display the string
' With strings the DLL automatically handles the
' ASCII/Unicode conversion and deals with the
' zero terminators.
Me.txtAircraftType.Text = aircraftType.Value
Catch ex As Exception
MessageBox.Show(ex.Message, AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Desculpe-me mais sou leigo no assunto VB.NET, estou migrando para essa área agora minha área mesmo é desenvolvimento web
!
Mais esse código é para o vb desktop ou web
Opa amigo desculpe-me é para desktop!
É um complemento para game, utiliza o sistema de drawing2D, eu não estou entendendo porque uma pessoa que está começando agora já pega algo tão complicado deste tipo, mas tudo bem, qual é a alteração que você quer fazer?
É um complemento para game, utiliza o sistema de drawing2D, eu não estou entendendo porque uma pessoa que está começando agora já pega algo tão complicado deste tipo, mas tudo bem, qual é a alteração que você quer fazer?
Olá KhaosDoctor! Bom primeiramente sei que não estou certo de estar querendo pegar algo tão complicado como esse! Porém eu achei muito interessante este sistema! Estou querendo desenvolver um software que administra o site (empresa) e acima de tudo trabalhe juntamente com o Game FSX! Com a sua ajuda aqui no fórum consegui resolver a parte de administração e login! Porém nesta parte ai já não consegui mais entender o sistema (e vi que realmente ainda tenho que aprender muito.)! E a alteração que eu gostaria de fazer é a seguinte:
Por exemplo tenho a seguinte linha de comando:
Dim com2bcd As Offset(Of Short) = New FSUIPC.Offset(Of Short)(&H3118) ' Exemplo de leitura de uma freqüência codificado em Binary Coded Decimal
Então gostaria de fazer o seguinte em uma textbox1 iria exibir a frequência atual do com2 e na textbox2 iria ser para colocar a nova frequência com2 e button que seria pra atualizar a frequência no game!
Essa seria uma atualização que eu gostaria de fazer!
Para exibir você pega a caixa de texto e exibe o valor, sem segredos:
Texbox1.Text = com2bcd.ToString
Para setar o valor:
com2bcd = New FSUIPC.Offset(Of Short)(Valor)
>
Para exibir você pega a caixa de texto e exibe o valor, sem segredos:
Texbox1.Text = com2bcd.ToString
Para setar o valor:
com2bcd = New FSUIPC.Offset(Of Short)(Valor)
Entendindo mano! Vlww!
Mais esse código é para o vb desktop ou web