Roni86 Posted January 14, 2017 Share Posted January 14, 2017 Hallo zusammen, ich hab da mal eine Frage bezüglich des RS 485 Masters. Muss das zwingend ein MEGA sein oder geht auch ein UNO? Besten Dank im Vorraus... Roni Link to comment Share on other sites More sharing options...
FSFIan Posted January 15, 2017 Author Share Posted January 15, 2017 Das muss zwingend ein Mega sein. Der Uno hat nur einen seriellen Port, der Bus-Master braucht aber mindestens zwei, da der ja sowohl mit dem RS-485-Bus als auch mit dem PC reden muss. Der Mega hat vier serielle Ports (UARTs), so dass der theoretisch bis zu drei RS-485-Busse ansteuern kann. Ich bin mir noch nicht sicher, dass drei in der Praxis auch in allen Situationen zuverlässig funktionieren, aber zwei gleichzeitig sollten kein Problem sein. DCS-BIOS | How to export CMSP, RWR, etc. through MonitorSetup.lua Link to comment Share on other sites More sharing options...
FSFIan Posted January 15, 2017 Author Share Posted January 15, 2017 Männer noch mal ne kurze Frage zum Servo. Ich muss Bauart bedingt bei einem die Drehrichtung ändern. Habe mal beim Code die "minPulseWidth" und "maxPulseWidth" vertauscht, der Servo hat auch die Drehrichtung geändert, nur fährt dieses jetzt in den unteren Anschlag und wird warm. Gibt es da ggf. eine andere Lösung, oder muss ich am Servo löten bzw. mir so ein elektronisches Servo - Umpolt - Teil in meine Leitung einbauen?! Hier mein Beispiel vom geänderten Code: DcsBios::ServoOutput engLEngPress(0x195a, PIN, 2400, 544); Danke und VG Tronix Seit v0.2.8 der Arduino-Library hat die ServoOutput-Klasse auch einen Konstruktor, dem man eine beliebige Funktion zum Umrechnen von DCS-BIOS-Werten auf Servo-Mikrosekunden mitgeben kann. Das ganze ist leider noch völlig undokumentiert, weil ich noch dabei bin, den gleichen Mechanismus überall einzubauen und die Doku sowieso mal komplett zu überarbeiten. Das ganze lässt sich so benutzen: unsigned int mapServoValue(unsigned int newValue) { return map(newValue, 0, 65535, 2400, 544); } DcsBios::ServoOutput engLEngPress(0x195a, PIN, 544, 2400, mapServoValue); Wichtig ist, dass die 2400 und 544 nur in mapServoValue() vertauscht werden, die 544 und 2400, die der ServoOutput-Konstruktor übergeben bekommt werden so an die Servo-Library weitergereicht und bestimmen den Bereich, auf den die Werte beschränkt werden (d.h. selbst wenn myServoValue der Meinung wäre, da sollten 2577 Mikrosekunden rauskommen, würde das auf 2400 begrenzt). Wenn man sich für die mapServoValue()-Funktion nicht für jede ServoOuput-Instanz einen Namen ausdenken will, kann man das auch alles als lambda-Funktion schreiben (neues Feature im C++11-Standard), das sieht dann so aus: DcsBios::ServoOutput engLEngPress(0x195a, PIN, 544, 2400, [](unsigned int newValue) -> unsigned int { return map(newValue, 0, 65535, 2400, 544); }); DCS-BIOS | How to export CMSP, RWR, etc. through MonitorSetup.lua Link to comment Share on other sites More sharing options...
Roni86 Posted January 15, 2017 Share Posted January 15, 2017 Ian;3017259']Das muss zwingend ein Mega sein. Der Uno hat nur einen seriellen Port, der Bus-Master braucht aber mindestens zwei, da der ja sowohl mit dem RS-485-Bus als auch mit dem PC reden muss. Der Mega hat vier serielle Ports (UARTs), so dass der theoretisch bis zu drei RS-485-Busse ansteuern kann. Ich bin mir noch nicht sicher, dass drei in der Praxis auch in allen Situationen zuverlässig funktionieren, aber zwei gleichzeitig sollten kein Problem sein. Dann werde ich wohl doch noch einen MEGA besorgen müssen. Danke für die schnelle Antwort. Gruß Roni Link to comment Share on other sites More sharing options...
Oldcooltronix Posted January 16, 2017 Share Posted January 16, 2017 Ian;3017278'] Das ganze lässt sich so benutzen: unsigned int mapServoValue(unsigned int newValue) { return map(newValue, 0, 65535, 2400, 544); } DcsBios::ServoOutput engLEngPress(0x195a, PIN, 544, 2400, mapServoValue); Hier bekomme ich folgenden Fehler: exit status 1 no matching function for call to 'DcsBios::ServoOutput::ServoOutput(int, int, int, int, unsigned int (&)(unsigned int))' Wenn man sich für die mapServoValue()-Funktion nicht für jede ServoOuput-Instanz einen Namen ausdenken will, kann man das auch alles als lambda-Funktion schreiben (neues Feature im C++11-Standard), das sieht dann so aus: DcsBios::ServoOutput engLEngPress(0x195a, PIN, 544, 2400, [](unsigned int newValue) -> unsigned int { return map(newValue, 0, 65535, 2400, 544); }); Und hier folgenden Fahler: exit status 1 no matching function for call to 'DcsBios::ServoOutput::ServoOutput(int, int, int, int, __lambda0)' [sIGPIC][/sIGPIC] my DCS World - Ka50 Pit Project: :pilotfly: http://www.ka50.de Link to comment Share on other sites More sharing options...
Bullet28 Posted January 16, 2017 Share Posted January 16, 2017 hab mir jetzt auch einen mega zugelegt mein problem was ich habe ist das ich seit dem keine komunikation zwischen mega und dcs bekomme bekomme im connect-serial keine fehler meldung der sagt mir auch welchen schalter ich um lege Link to comment Share on other sites More sharing options...
Bullet28 Posted January 19, 2017 Share Posted January 19, 2017 gelöst Link to comment Share on other sites More sharing options...
FSFIan Posted January 20, 2017 Author Share Posted January 20, 2017 Und hier folgenden Fahler: exit status 1 no matching function for call to 'DcsBios::ServoOutput::ServoOutput(int, int, int, int, __lambda0)' Du musst vor dem #include "DcsBios.h" noch ein #include "Servo.h" setzen, um die Servo-Library mit einzubauen. DCS-BIOS macht das nicht von sich aus, weil die einen der Timer vom Arduino belegt. Ich hab gerade nochmal in der Doku geguckt, da steht das gar nicht drin... ich glaube ich hatte das früher in den Template-Sketches drin und das ist dann bei der Einführung von IRQ_SERIAL rausgeflogen. Ich werd das in Zukunft wahrscheinlich so machen, dass alles was von anderen Libraries abhängt (Servos und demnächst mal auch Stepper) in ganz eigenen Header-Files liegt, dann muss ich nur noch einen Mechanismus in die Referenzdoku einbauen, so dass bei entsprechenden Code Snippets ein Hinweis eingeblendet wird oder so. DCS-BIOS | How to export CMSP, RWR, etc. through MonitorSetup.lua Link to comment Share on other sites More sharing options...
Oldcooltronix Posted January 20, 2017 Share Posted January 20, 2017 ja, dass hatte ich bereits gemacht, denn die Servo funktionieren ja, nur mit der Drehrichtung - das geht leider nicht... :cry: hier der Code: #include "Servo.h" #define DCSBIOS_IRQ_SERIAL #include "DcsBios.h" DcsBios::Switch2Pos r800EmerRcvr("R800_EMER_RCVR", 42); DcsBios::Switch2Pos r800Adf("R800_ADF", 44); DcsBios::Switch2Pos abrisPower("ABRIS_POWER", 35); DcsBios::Switch2Pos hsiDhDtaManualAuto("HSI_DH_DTA_MANUAL_AUTO", 37); DcsBios::Switch2Pos laserMode("LASER_MODE", 36); DcsBios::Switch2Pos opPitotPortHeat("OP_PITOT_PORT_HEAT", 38); DcsBios::Switch2Pos opPitotRamHeat("OP_PITOT_RAM_HEAT", 40); DcsBios::LED raltSafeAltLamp(0x184c, 0x1000, 34); const byte engSelectorPins[4] = {53, 51, 49, 47}; DcsBios::SwitchMultiPos engSelector("ENG_SELECTOR", engSelectorPins, 4); const byte opNavLightsPins[5] = {45, 43, 41, 39}; DcsBios::SwitchMultiPos opNavLights("OP_NAV_LIGHTS", opNavLightsPins, 4); DcsBios::Switch3Pos engStartupMode("ENG_STARTUP_MODE", 50, 52); DcsBios::Switch2Pos r800AmFm("R800_AM_FM", 48); DcsBios::ServoOutput apuTemp(0x191c, 2, 540, 2550); DcsBios::ServoOutput engLEngPress(0x195a, 5, 540, 1115); DcsBios::ServoOutput engREngPress(0x195c, 4, 540, 1115); DcsBios::ServoOutput engNominalModePress(0x1958, 3, 444, 810); #include "LedControl.h" //Pins sind beliebig auswählbar //Die erste Zahl (22) gibt den DATA_IN pin an, //die zweite (26) den CLOCK pin //und die dritte (24) ist der LOAD/CS pin. //Die vierte Zahl(1) ist die Anzahl der hintereinandergeschalteten MAX7219-Chips. [sIGPIC][/sIGPIC] my DCS World - Ka50 Pit Project: :pilotfly: http://www.ka50.de Link to comment Share on other sites More sharing options...
33rd_Elvis Posted January 21, 2017 Share Posted January 21, 2017 (edited) Hallo zusammen, ich habe folgendes Problem, wenn ich den sketch mit dem Master Caution lade und im spiel den auslöse passiert nichts. Taster und LED sind richtig angeschlossen und zu vor auf Funktion getestet. Der interactive control reference funktioniert aber komischer weise. Ich habe schon mal so ein Problem gehabt, da war eine Netwerküberwachungssoftware die die Komunikation geblockt hatte. Hab mein Firewall komplett aus geschaltet, troz dem geht nichts außer interactive control reference. Weiß einer einen guten rat? edit: Der Comport ist richtig eingestellt und der Datenfluss läuft. mfg Edited January 21, 2017 by 33rd_Elvis Aircrafts: F-16C | TF-51 | M2000C | F/A-18C | AV-8B | Viggen | KA-50 | A-10C | UH-1 | Mi-8 | Maps: Caucasus | Persian Gulf | NTTR | Normandy | Syria System: AMD Ryzen 3700X | 32GB Ram | AMD Radeon RX 5700 XT | Win10 64Bit | 1TB 970 EVO M.2 SSD Equipment: TrackIR 5_Trackclip Pro |TM Warthog HOTAS | Oculus Rift S Link to comment Share on other sites More sharing options...
FSFIan Posted January 21, 2017 Author Share Posted January 21, 2017 Hallo zusammen, ich habe folgendes Problem, wenn ich den sketch mit dem Master Caution lade und im spiel den auslöse passiert nichts. Taster und LED sind richtig angeschlossen und zu vor auf Funktion getestet. Der interactive control reference funktioniert aber komischer weise. Ich habe schon mal so ein Problem gehabt, da war eine Netwerküberwachungssoftware die die Komunikation geblockt hatte. Hab mein Firewall komplett aus geschaltet, troz dem geht nichts außer interactive control reference. Weiß einer einen guten rat? edit: Der Comport ist richtig eingestellt und der Datenfluss läuft. mfg Versuch mal das Script aus diesem Post, das benutzt TCP statt UDP. Da die interactive control reference geht (die benutzt auch TCP), sollte es damit dann laufen. DCS-BIOS | How to export CMSP, RWR, etc. through MonitorSetup.lua Link to comment Share on other sites More sharing options...
33rd_Elvis Posted January 21, 2017 Share Posted January 21, 2017 Das hab ich auch schon versucht jedoch ohne erfolg. Auch wenn ich die Firewall und Antivir aus schalte, keine Veränderung. Wie schon gesagt der Datenfluss ist da und die LED am Arduino uno ist am blinken. Aircrafts: F-16C | TF-51 | M2000C | F/A-18C | AV-8B | Viggen | KA-50 | A-10C | UH-1 | Mi-8 | Maps: Caucasus | Persian Gulf | NTTR | Normandy | Syria System: AMD Ryzen 3700X | 32GB Ram | AMD Radeon RX 5700 XT | Win10 64Bit | 1TB 970 EVO M.2 SSD Equipment: TrackIR 5_Trackclip Pro |TM Warthog HOTAS | Oculus Rift S Link to comment Share on other sites More sharing options...
33rd_Elvis Posted January 21, 2017 Share Posted January 21, 2017 Ian danke für dein Einsatz nochmal. Habe den Fehler gefunden. Die BAUT war nicht auf 250000 im serialport.cmd. Habs umgestellt und es funtzt wieder. MfG Aircrafts: F-16C | TF-51 | M2000C | F/A-18C | AV-8B | Viggen | KA-50 | A-10C | UH-1 | Mi-8 | Maps: Caucasus | Persian Gulf | NTTR | Normandy | Syria System: AMD Ryzen 3700X | 32GB Ram | AMD Radeon RX 5700 XT | Win10 64Bit | 1TB 970 EVO M.2 SSD Equipment: TrackIR 5_Trackclip Pro |TM Warthog HOTAS | Oculus Rift S Link to comment Share on other sites More sharing options...
Alburg Posted January 22, 2017 Share Posted January 22, 2017 Ich habe da mal eine Frage bzgl meines Sketch #define DCSBIOS_IRQ_SERIAL #include "DcsBios.h" /* paste code snippets from the reference documentation here */ //Fuel Switch Panel DcsBios::Switch2Pos fscpExtTanksFus("FSCP_EXT_TANKS_FUS", 53); DcsBios::Switch2Pos fscpExtTanksWing("FSCP_EXT_TANKS_WING", 52); DcsBios::Switch2Pos fscpTkGate("FSCP_TK_GATE", 50); DcsBios::Switch2Pos fscpCrossfeed("FSCP_CROSSFEED", 51); DcsBios::Switch2Pos fscpBoostWingL("FSCP_BOOST_WING_L", 48); DcsBios::Switch2Pos fscpBoostWingR("FSCP_BOOST_WING_R", 49); DcsBios::Switch2Pos fscpBoostMainL("FSCP_BOOST_MAIN_L", 46); DcsBios::Switch2Pos fscpBoostMainR("FSCP_BOOST_MAIN_R", 47); DcsBios::Switch2Pos fscpAmpl("FSCP_AMPL", 45); DcsBios::Switch2Pos fscpLineCheck("FSCP_LINE_CHECK", 44); DcsBios::Switch2Pos fscpFdWingL("FSCP_FD_WING_L", 43); DcsBios::Switch2Pos fscpFdWingR("FSCP_FD_WING_R", 42); DcsBios::Switch2Pos fscpFdMainL("FSCP_FD_MAIN_L", 41); DcsBios::Switch2Pos fscpFdMainR("FSCP_FD_MAIN_R", 40); DcsBios::Switch2Pos fscpRcvrLever("FSCP_RCVR_LEVER", 39); DcsBios::Potentiometer alcpRcvrLts("ALCP_RCVR_LTS", A0); void setup() { DcsBios::setup(); } void loop() { DcsBios::loop(); } Der Compiler läuft durch. Es gibt auch keine Zeile die er wirklich beanstandet aber trotzdem bekomme ich folgende Meldung. [color="Red"]F:\Arduino\a10\a10.ino:23:55: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] DcsBios::Potentiometer alcpRcvrLts("ALCP_RCVR_LTS", A0);[/color] Danke und Gruß Sven Link to comment Share on other sites More sharing options...
33rd_Elvis Posted January 22, 2017 Share Posted January 22, 2017 (edited) Wird der sketch auch auf den Arduinoboard hoch geladen? Wenn ja dürfte es keine Probleme bei der Funktion geben. Edited January 22, 2017 by 33rd_Elvis Aircrafts: F-16C | TF-51 | M2000C | F/A-18C | AV-8B | Viggen | KA-50 | A-10C | UH-1 | Mi-8 | Maps: Caucasus | Persian Gulf | NTTR | Normandy | Syria System: AMD Ryzen 3700X | 32GB Ram | AMD Radeon RX 5700 XT | Win10 64Bit | 1TB 970 EVO M.2 SSD Equipment: TrackIR 5_Trackclip Pro |TM Warthog HOTAS | Oculus Rift S Link to comment Share on other sites More sharing options...
FSFIan Posted January 22, 2017 Author Share Posted January 22, 2017 [color="Red"]F:\Arduino\a10\a10.ino:23:55: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] DcsBios::Potentiometer alcpRcvrLts("ALCP_RCVR_LTS", A0);[/color] Danke für den Hinweis, da hab ich beim Fix für v0.2.7 wohl ein paar Stellen übersehen. Sollte in der neuen v0.2.9 jetzt repariert sein. DCS-BIOS | How to export CMSP, RWR, etc. through MonitorSetup.lua Link to comment Share on other sites More sharing options...
Falki Posted June 5, 2017 Share Posted June 5, 2017 Hallo Ian, ich hab es jetzt mal geschafft, mich ein wenig mit DCS Bios auseinander zu setzen. Ich frag mich nur, wie der Sketch für das Rudder und die Bremsen aussehen muß! Wäre dir sehr dankbar, wenn du mir da Helfen könntest. LG Falki [sIGPIC][/sIGPIC]I´m not only perfect, I´m German! Let´s drink on it!!! System Spec.: i7 4771, GTX 770, Samsung SyncMaster S27B370 Hotas Warthog, MFD Cougar und eigenbau Pedale (Edelstahl mit Hallsensoren), Eigenbau Headtracker über Opentrack, Eigenbau UFC Link to comment Share on other sites More sharing options...
FSFIan Posted June 5, 2017 Author Share Posted June 5, 2017 Um die primären Steuerachsen kümmert sich DCS-BIOS nicht. Im Prinzip könnte ich das zwar einbauen, dann würde ich aber eine Grundannahme hinter dem Design von DCS-BIOS verletzen. Diese Annahme lautet: Der Pilot hat nur zwei Hände, und eine davon ist immer am HOTAS. Das bedeutet, dass es nie (bzw. äußerst selten) vorkommt, dass zwei Schalter, Potis etc. gleichzeitig Eingaben zum PC senden wollen. Dadurch können wir dann im Prinzip ein komplettes Cockpit über eine einzige serielle Schnittstelle ansteuern, die "nur" 25.000 Bytes pro Sekunde schafft. Wenn man jetzt die Steuerachsen für die Fluglage über DCS-BIOS laufen lassen würde, dann müssten die immer aufeinander warten, was die Latenz erhöhen würde, und das würde natürlich ausgerechnet bei diesen Achsen auch noch am meisten stören. Mit anderen Worten: DCS-BIOS funktioniert gut für Schalter und Regler, die nur ab und zu bewegt werden. Pitch, Roll und Yaw werden von über USB angebundenen Joysticks und Ruderpedalen besser bedient. Wenn du sowas selbst bauen willst, guck dir mal MMJoy an. Damit kann man sich soweit ich weiß Firmware für den Arduino Pro Micro (ca. $5) zusammenklicken, die ein paar Analog- und Digitaleingänge als Joystickachsen und -Buttons anbindet. IIRC können die auch Hall-Sensoren ansteuern, wenn man keine Potentiometer verbauen will. DCS-BIOS | How to export CMSP, RWR, etc. through MonitorSetup.lua Link to comment Share on other sites More sharing options...
Falki Posted June 5, 2017 Share Posted June 5, 2017 ich hab meine Pedale über USB verbunden! kanst du nicht probehalber die Arduino-Libary un die Achsen erweitern? Wei gesagt, ich würde es gerne probieren! [sIGPIC][/sIGPIC]I´m not only perfect, I´m German! Let´s drink on it!!! System Spec.: i7 4771, GTX 770, Samsung SyncMaster S27B370 Hotas Warthog, MFD Cougar und eigenbau Pedale (Edelstahl mit Hallsensoren), Eigenbau Headtracker über Opentrack, Eigenbau UFC Link to comment Share on other sites More sharing options...
Violett Posted March 29, 2018 Share Posted March 29, 2018 Fehler bei serial monitor Verbindung Hallo [FSF]Ian ich bin Anfänger was DCS BIOS angeht, ich komme an einer Stelle nicht weiter. Ich habe bereits einen einfachen Sketch aber bei der Verbindung mit dem serial port läuft was schief. Ich habe ein Arduino Mega 2560 auf Port3 . Ich habe einen Sketch aus der arduino library ("Master Caution")hochgeladen, die Anschlüsse stimmen auch. Wenn ich den serial port öffne werde ich nach dem Port gefragt und ich gebe 3 ein. Bei dem darauf erscheinen Infos im cmd.exe Fenster sind alle Signale auf Off, und ich habe unten die Meldung "Das System kann den angegeben Pfad nicht finden" . Von Youtube Videos weiß ich wie das cmd.exe Fenster richtiger aussehen sollte. Ich kommen hier nicht weiter. Wie kriege ich eine funktionierende Verbindung hin. (Mein Betriebssystem Win7) Screenshot füge ich bei Gruß und Danke Michael Link to comment Share on other sites More sharing options...
Violett Posted March 30, 2018 Share Posted March 30, 2018 ich habe jetzt einfach mal was ausprobiert, Ich habe die connect serial port.cmd (Batch-Datei ? richtig?) editiert wie in Post #7 beschrieben und dabei meine Portnummer (3) reingesetzt um es über TCP zu versuchen. Ich habe den alten Code durch diesen ersetzt. (die Original Datei aus dem dcs bios Ordner habe so gelassen ich habe die neue cmd in einem anderen Ordner geändert und ausgeführt) REM Specify the number of the COM port your Arduino is connected to: set COMPORT=3 set /A TTYNUM=%COMPORT%-1 mode COM%COMPORT% BAUD=500000 PARITY=N DATA=8 STOP=1 TO=off DTR=on socat\socat -v TCP4:127.0.0.1:7778 /dev/ttyS%TTYNUM% pause Das hat auch nicht funktioniert. dafür habe ich jetzt folgende Meldung. C:/Windows/system32/socat/socat/ -v TCP4:127.0.0.1:7778 /dev/ttyS2 Das System kann den angegebenen Pfad nicht finden.... Nur was heisst das jetzt?. Im DCS-BIOS Ordner ist eine socat .exe dabei die habe ich mal versucht auszuführen. Da öffnet sich nur kurz ein Fenster und verschwindet wieder. Ich brauche hier etwas Hilfe, Danke Link to comment Share on other sites More sharing options...
Roni86 Posted March 31, 2018 Share Posted March 31, 2018 Hallo Michael, liegt die socat.exe unter c:\windows\system32\socat\? Ich glaube nicht, daher kommt wahrscheinlich die Meldung "Pfad nicht gefunden". Nimm lieber die Batch-Datei die im DCS-Bios Ordner liegt. Kannst du den Mega über COM 3 mit der Arduino IDE ansprechen? Gruß Roni Link to comment Share on other sites More sharing options...
Violett Posted March 31, 2018 Share Posted March 31, 2018 Hallo Roni86, nein, die socat.exe liegt nicht vor, da sollte der Fehler vorliegen . Ich habe zunächst die socat.exe aus dem DCS-BIOS Master Packet ausgeführt. Das hat nichtgeholfen, dann habe ich socat von github runtergeladen und habe die dort vorhandene socat.exe ausgeführt. Auch ohne Erfolg. Meine Antivirfunktionen sind dabei alle deaktiviert. Sobald ich die socat.exe ausführe öffnet sich kurz ein Fenster und schließt sich wieder. Gruß Michael Link to comment Share on other sites More sharing options...
Violett Posted March 31, 2018 Share Posted March 31, 2018 Nachtrag zur letzten Frage Und ja ich habe bereits Sketches mit der Arduino IDE geschrieben und konnte diese auf das ArduinoBoard erfolgreich hochladen. Link to comment Share on other sites More sharing options...
Roni86 Posted March 31, 2018 Share Posted March 31, 2018 Die socat.exe einzeln auszuführen bringt nichts. Da fehlen die Parameter. Wo hast Du denn die DCS-Bios Dateien entzippt? Meine liegen im Download-Ordner. Von der Batch-Datei "connect-serial-port.cmd" habe ich eine Verknüpfung auf dem Desktop angelegt, um die bequem zu starten. Starte einfach mal die beiliegende Batch im entpackten DCS-Bios Ordner. Link to comment Share on other sites More sharing options...
Recommended Posts