{"id":21,"date":"2015-11-08T19:07:50","date_gmt":"2015-11-08T19:07:50","guid":{"rendered":"http:\/\/ftl-auerbach.lima-city.de\/Hubo\/?page_id=21"},"modified":"2017-12-30T10:02:58","modified_gmt":"2017-12-30T09:02:58","slug":"hubo-clibrary","status":"publish","type":"page","link":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/hubo-programmierung\/hubo-clibrary\/","title":{"rendered":"Hubo C++ Library"},"content":{"rendered":"<p>Die Hubo C++ Library bietet einen einfachen Weg zur Ansteuerung der Hubo Hardware. Dabei entbindet die Bibliothek den Programmierer von vielf\u00e4ltigen Problemen wie Buskollisionen beim parallelen Zugriff auf den I2C-Bus oder Stolpersteinen bei der Verwendung der Hardware unter verschiedenen Threads, bietet auf der anderen Seite jedoch soviel Echtzeitn\u00e4he, wie es der Kernel erlaubt.<\/p>\n<p>Der Bibliothek liegen mehr als zwei Duzend Beispiele bei, welche die Verwendung der Funktionen auf einfache Weise verdeutlichen. Einen Einblick erhalten Sie durch die Dokumentation, welche Sie hier einsehen k\u00f6nnen (Link zur <a href=\"http:\/\/ftl-auerbach.lima-city.de\/Hubo\/Hubo_C++_Library\/Documentation\/\" target=\"_blank\">Dokumentation der Hubo C++ Library)<\/a>.<\/p>\n<p>Anbei seien zwei kurze Code-Beispiele gegeben, die verdeutlichen, wie einfach sich der Zugriff auf die Hardware mittels der Hubo C++ Library realisieren l\u00e4\u00dft.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Einlesen der analogen Eing\u00e4nge des Hubo mittels der Hubo C++ Library<\/strong><\/p>\n<p>Das folgende Beispiel liest 10 mal im Abstand von 1s den analogen Kanal 0 des Hubo ein und gibt ihn auf der Konsole aus.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;stdio.h&gt;\r\n#include &quot;..\/hubolib.h&quot;\r\nusing namespace HuboLib;\r\n\r\nint main(void)\r\n{\r\n\u00a0\u00a0 \u00a0\/\/ Initialize the library once in your program.\r\n\u00a0\u00a0 \u00a0Initialize();\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\/\/ Define channel 0 to be sampled once all other channels are not read from the ADC.\r\n\u00a0\u00a0 \u00a0unsigned short overSampling[MAX_MCP3x08_CHANNELS] = { 1, 0, 0, 0, 0, 0, 0, 0 };\r\n\u00a0\u00a0 \u00a0Set_MCP3x08_Oversampling (overSampling);\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0unsigned long \u00a0\u00a0 \u00a0adcCount; \r\n\u00a0\u00a0 \u00a0double\u00a0\u00a0 \u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0volt;\r\n\u00a0\u00a0 \u00a0for (int i=0; i&lt;10; i++)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0Get_AI_Channel (0, adcCount, volt);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0printf (&quot;ADC count=0x%02lX\u00a0\u00a0 Volts=%lf\\n&quot;, adcCount, volt);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0sleep(1);\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\/\/ Free library resources.\r\n\u00a0\u00a0 \u00a0Uninitialize();\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0return 0;\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Einlesen und setzen der digitalen Ein- und Ausg\u00e4nge des Hubo mittels der Hubo C++ Library<\/strong><\/p>\n<p>Dieses Beispiel liest in einer Endlosschleife alle 8 digitalen Eing\u00e4nge des Hubo ein und gibt sie unmittelbar danach auf dessen 8 Digitalausg\u00e4ngen wieder aus.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;stdio.h&gt;\r\n#include &quot;..\/hubolib.h&quot;\r\nusing namespace HuboLib;\r\n\r\nint main(void)\r\n{\r\n\u00a0\u00a0 \u00a0\/\/ Initialize the library once in your program.\r\n\u00a0\u00a0 \u00a0Initialize();\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0unsigned char value = 0;\r\n\u00a0\u00a0 \u00a0while (1)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ Read all channels and set the value to the outputs.\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0Get_DO_Channels(value);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0Set_DO_Channels(value);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0printf (&quot;Value = 0x%02X\\n&quot;, value);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0sleep (1);\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\/\/ Free library resources (keep even if we never get here).\r\n\u00a0\u00a0 \u00a0Uninitialize();\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0return 0;\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Vorschau auf die n\u00e4chste Version der Hubo C++ Library<br \/>\n<\/strong><\/p>\n<p>Unsere Software wird st\u00e4ndig weiterentwickelt. Eine Vorschau auf die n\u00e4chste Version der Bibliothek und deren Funktionen kann hier eingesehen werden (<a href=\"http:\/\/ftl-auerbach.lima-city.de\/Hubo\/Hubo_C++_Library_Preview\/Documentation\/\" target=\"_blank\">Vorschau der n\u00e4chsten Version der Hubo C++ Library<\/a>).<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Lizenzrechtliche Informationen<\/strong><\/p>\n<p>Die Hubo C++ Library darf f\u00fcr Projekte, welche die Hubo Hardware einsetzen im Rechtsraum der Bundesrepublik Deuschland verwendet werden. Beachten Sie bitte, da\u00df die Verwendung auf eigenes Risiko erfolgt. Insbesondere darf die Bibliothek nicht in sicherheitskritischen Anwendungen eingesetzt werden. Das umfa\u00dft mindestens, jedoch nicht ausschlie\u00dflich Anwendungen durch die unmitttelbar bzw. mittelbar Gefahr f\u00fcr Gesundheit und Leben besteht, im medizinischen Bereich, Luft- und Raumfahrt. Die Bibliothek darf weiterhin nicht f\u00fcr Steuerungen und Reglungen eingesetzt werden, wenn bei einer Fehlfunktion der Steuerung oder Regelung mit Sch\u00e4den zu rechnen ist bzw. Sch\u00e4den im Vorhinein nicht auszuschlie\u00dfen sind. Die Bibliothek darf nicht modifiziert oder weitergegeben werden.<\/p>\n<p>Hubo C++ Library steht unter oben genannten Bedingungen kostenfrei zur Verf\u00fcgung. Insofern ist der Hersteller der Bibliothek nicht haftbar f\u00fcr jedwede Sch\u00e4den, welche unmittelbar oder mittelbar durch die Verwendung der Bibliothek oder der mitgelieferten Beispiele entstehen.<\/p>\n<p>Sollten Sie mit einer oder mehreren der vorgenannten Bedingungen nicht einverstanden sein, so ist eine Verwendung der Bibliothek nicht zul\u00e4ssig.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Hubo C++ Library bietet einen einfachen Weg zur Ansteuerung der Hubo Hardware. Dabei entbindet die Bibliothek den Programmierer von vielf\u00e4ltigen Problemen wie Buskollisionen beim parallelen Zugriff auf den I2C-Bus oder Stolpersteinen bei der Verwendung der Hardware unter verschiedenen Threads, bietet auf der anderen Seite jedoch soviel Echtzeitn\u00e4he, wie es\u2026<\/p>\n<p> <a class=\"continue-reading-link\" href=\"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/hubo-programmierung\/hubo-clibrary\/\"><span>Continue reading<\/span><i class=\"crycon-right-dir\"><\/i><\/a> <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":130,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/21"}],"collection":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/comments?post=21"}],"version-history":[{"count":23,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/21\/revisions"}],"predecessor-version":[{"id":1088,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/21\/revisions\/1088"}],"up":[{"embeddable":true,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/130"}],"wp:attachment":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/media?parent=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}