DrMarcel Posted February 9, 2020 Share Posted February 9, 2020 (edited) Inspired by the original KSPSerialIO by @zitronen I wanted to create my own physical display and input device for KSP. My plan was to add an external Navball but the limited hardware of the Arduino makes it nearly impossible to do the vector calculation and rendering on it. So I decided to use a RaspberryPi. In first step I have edit the original KSPSerialIO to create a similar Add-On using a TCP connection for data exchange so that it's possible to connect any client in the same network with the host computer. The second step was to create and test a client application. I decided to use Java for the client to create an Android client as well as a RaspberryPi client with (nearly) the same code. Currently I'm testing the KSPEthernetIO Plug-In with the Android client. If this works reliable I start working on the RaspberryPi client. KSPEthernetIO [0.1.2]: Description: Opens a TCP server and sends broadcasts through the network. Waits for incoming connection. When connected performs optional handshake to verify client. Continously exchanges control and vessel data between client and host. Tested on Windows 7 and Windows 10 Tested with KSP 1.8.1 and 1.9 Functionality: All functions of the original KSPSerialIO Slighly extended version of the original KSPSerialIO data packets Automatic client detection via UDP broadcasts Connection control and automatic reconnect Some new functions (control camera and ui mode, open main menu, toggle map) Download: Add-On (Windows): v0.1.2: https://perske.eu/KSPEthernetIO-0.1.2.zip Source: https://github.com/DrMarcel/KSPEthernetIO Old versions: v0.1.0: https://perske.eu/KSPEthernetIO-0.1.0.zip v0.1.1: https://perske.eu/KSPEthernetIO-0.1.1.zip KSPEthernetIO Android client [0.2 beta]: Description: Remote control App for KSPEthernetIO. Automatic connect to a KSPEthernetIO host and remote control your vessel. Currently I can only provide a download link for the APK. I have uploaded the current version to the Android PlayStore but the release may take a few days. If you struggle to install an APK from an external source just wait a few days until I can provide a download link for the PlayStore. Edit: App is now avaiable in Google Playstore. Functionality: Live render navball Show vector nodes on navball Control SAS, RCS, ActionGroups, etc. Show velocity, altitude and some orbit information Show fuel states Change UI and Camera Mode Toggle Map Open Main Menu (a little bit hidden - long press the "..."-button for that) Download: PlayStore: https://play.google.com/store/apps/details?id=com.kspethernetiodemo APK: https://perske.eu/KSPEthernetIO-AndroidClient.0.2.zip Source: https://github.com/DrMarcel/KSPEthernetIO-Android-Client Old versions: APK: https://perske.eu/KSPEthernetIO-AndroidClient.0.1.zip Screenshots: Demo: KSPEthernetIO RaspberryPi Client: Description: Planned for the next weeks, currently wip. Additional information: Original post: Settings: <int name="Port">2342</int> <int name="Refresh">50</int> <int name="BroadcastDisable">0</int> <int name="Broadcast">1000</int> <int name="WatchdogDisable">0</int> <int name="WatchdogTimeout">1500</int> <int name="HandshakeDisable">0</int> <int name="HandshakeTimeout">1500</int> <int name="ThrottleEnable">2</int> <int name="PitchEnable">2</int> <int name="RollEnable">2</int> <int name="YawEnable">2</int> <int name="TXEnable">2</int> <int name="TYEnable">2</int> <int name="TZEnable">2</int> <int name="WheelSteerEnable">2</int> <int name="WheelThrottleEnable">2</int> <double name="SASTol">0.2</double> Port: Communication TCP port Refresh: Data send delay in milliseconds BroadcastDisable: 1=Disable sending broadcast messages Broadcast: Broadcast send delay in milliseconds WatchdogDisable: 1=Disable watchdog timer WatchdogTimeout: If no data is received within this time the connection is reset HandshakeDisable: 1=Accept all incoming connections HandshakeTimeout: If no data is received within this time after connection the connection is reset ThrottleEnable: enable value of throttle axis PitchEnable: enable value of pitch axis RollEnable: enable value of roll axis YawEnable: enable value of yaw axis TXEnable: enable value of translation X axis TYEnable: enable value of translation Y axis TZEnable: enable value of translation Z axis SASTol: The SAS will override your controls when you turn it on, this value allows you to override SAS if you move the roll pitch yaw control over a certain limit (10% travel by default) Enable value settings for axes: 0: The internal value (supplied by KSP) is always used 1: The external value (read from serial packet) is always used 2: If the internal value is not zero use it, otherwise use the external value 3: If the external value is not zero use it, otherwise use the internal value See above for default config Issues / TODOs: Bring client application to the PlayStore [12.02.2020] Add more orbital infos [17.02.2020] Permanent save app settings [17.02.2020] Custom actiongroup names in settings [17.02.2020] Centralize all coloring in config files Tests on different screen sizes Reset data on active vessel change - Transmit vessel ID ? [17.02.2020] Code documentation [14.02.2020] Clean compiler warning Buffer incoming data with adaptive playout to get "smooth" data stream Navball rendering is very CPU intense - Implement OpenGL rendering Split fight info in smaller classes License: CC BY 4.0 https://creativecommons.org/licenses/by/4.0 Epilogue: I hope you like this project. I'm happy about any feedback, bug reports and ideas. Have a good flight DrMarcel Edit: [10.02.2020] Changed broken download links [10.02.2020] Changed download link http->https [12.02.2020] Added playstore link [14.02.2020] Updated TODO list [17.02.2020] Release KSPEthernetIO 0.1.1 and Client 0.2 beta [10.03.2020] Changed version numbers 1.x.0 was actually 0.1.x [10.03.2020] Release KSPEthernetIO 0.1.2 Edited March 10, 2020 by DrMarcel [10.03.2020] Release KSPEthernetIO 0.1.2 Quote Link to comment Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.