Unpack the SimVimCockpit_v##.zip file as-is into X-Plane ../plugins folder (as any other plugins for X-Plane).
Start X-Plane. The new menu item "SimVimCockpit" will appear in the X-Plane plugins menu.
First start and Input/Output test
If you have no previously uploaded SimVim firmware, follow the steps below. If you plan to use LAN version, attach an Ethernet module to you controller board before and connect it to your router.
Open the "Firmware Upload" window from SimVim plugin menu.
Make sure you have the master board (Mega2560) disconnected from USB!
Click "Master Board" button (to select master fimware to upload).
Plug the master board (Mega2560) USB cable to the X-Plane computer USB port.
Note: If you have the Mega2560 board with "original" Mega16U2 Serial UART/USB controller (the chip located near to the USB socket),
wait until it completes its initialization and Rx LED stops flashing (about 20 sec.) before proceeding to the next step #5.
Click "Detect Port" button (plugin detects new connected device)
When USB port is detected you will see the "Controller Type" - Mega2560 box checked. If you need to upload the Ethernet firmware version
set the "Ethernet" checkbox.
Click "UPLOAD". Wait until firmware upload is completed (about 5 s).
After upload the plugin will connect to this controller automatically.
The connected board will appear in SimVim Status window.
Load some default aircraft (e.g. Cessna) in X-Plane
Connect a toggle switch to pin #5, GND and throw it on/off
The Pitot switch state will changing accordingly with your switch position
The on-board LED on the controller board will change its state (Pitot Heat is on/off).
When you update the SimVimCockpit to a next version, the plugin will inform you about need to update firmware (if there is new firmware) and present you the Upload window with the options already filled in.
For USB connection, just be sure that all options are correct and click "Upload".
For LAN connection, connect your master board to USB (or disconnect and connect it again) and click "Connect". After that, check the options and click "Upload".
Note for Linux users: Some Linux distributions not granting the user access to serial ports by default. In this case you need to add your user name to the "dialout" group (in Linux Mint, for example, this can be done via the Administration -> "Users and Groups" menu.)
SimVim Connection, notes
- You never need to upload the firmware to change I/O configuration, all you need to do is create new configuration file.
- If you have changed the data.cfg file while X-Plane is running, just click the "Reload Configuration" button in the Status window.
- With firmware uploaded you no longer need to unplug your controller board USB cable before X-Plane launch. If you use Ethernet firmware you don't need USB cable to be connected until you will need to upload new version of firmware.
After successfull first test you can be sure that SimVim plugin communicates with your controller, and you can start wiring all nput control and output devices to the controller and use SimVim Configuration tool to assign all of them.
Plugin should always establish connection automatically every time X-Plane is started, no matter how many times you did this and how many changes you made in the data config file.
SimVim Plugin Reconnection options:
1. [Reload Configuration] button in the "Status" window reloads all SimVim configuration, it should be used when you saved new data configuration file
2. [Hardware Reconnect] menu item resets everything inside the plugin and reopens all ports and reloads all SimVim configuration. Use it only if you have reconnected your board USB cable while X-Plane is running.
NOTE: The "Hardware Reconnect" functions also is added to SimVim as command, which you can use if you need quickly reconnect your system, either from another plugin, or script, or assigning the command "simvim/reconnect" to some keyboard key in X-Plane "Keyboard" menu.
- Data exchange sequence - Additional tech information is for those who are interested.
Data exchange sequence
SimVimCockpit can use either Ethernet (LAN) or USB connection (wich actually used as asynchronous virtual serial interface when USB ports are just used for serial emulation). Communication protocol in SimVim is synchronized with X-Plane frames and FPS timing is used to send "strobes" in the end of each frame (you can see blinking RX LED when USB is used) to more effectively synchronize I/O data and avoid loosing any bit of data packet.
You should know that any plugin that works with external programs / devices can send or receive data no more frequently than the X-Plane frame rate allows. So, if your X-Plane frame rate is 20 FPS for example, it can provide next changed data values for the plugin only in time 50 ms after the previous change.
The plugin and controller firmware “find” each other at start, and the plugin establishes connection with the controller.
Plugin - reads all data configuration files, creates all needed variable structures for data, different I/O types and output devices.
Firmware - sends series of configuration requests to the plugin.
Plugin - sends configuration data on every request.
Firmware - configures controller ports for inputs/outputs, saves received parameter options for input/output environment.
Data sending is blocked for plugin in this time.
Firmware - sends current states of all inputs (switches, analog axis). Allows the plugin to send data and waits.
Plugin - sends all current output values in one packet (or several, in the following X-Plane frames).
Firmware - sends all received data to output functions ( LEDs, displays, gauges).
Firmware tracks and stores all configured inputs, and waits for a strobe signal or data packet from the plugin. When the strobe/data is received, the firmware sends only the changed input states (switch/button positions, analog axis positions, encoders step count), to the plugin.
In every X-Plane frame, the plugin processes received data, checks all assigned conditions to disable, enable or change inputs parameters and sends all changes to X-Plane - executes commands , changes datarefs or calls some custom SimVim functions.
Then plugin reads data from the X-Plane variables accordingly with configuration, checks all assigned for outputs conditions (to disable, enable or change the source for some outputs) and sends output data packet to the controller. Only data that changed since the last frame are sent. If there were no changes in output data, only the strobe signal is sent.
SimVim firmware can potentially send data with the speed of 1000 times per second but sends them in every X-Plane frame (it's X-Plane's limitation - the plugin can send and receive data only with the frequency of X-Plane frame rate). In our earlier interfaces the firmware always sent data as soon as there were changes, and it could result in much redundand data when dealing with fast encoder rotation or analog input noise, especially if X-Plane had low framerate. Now, this data is only sent when requested by the plugin.