{"id":468,"date":"2017-11-24T23:47:15","date_gmt":"2017-11-24T22:47:15","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=468"},"modified":"2017-12-30T19:38:36","modified_gmt":"2017-12-30T18:38:36","slug":"68-rn42-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=468","title":{"rendered":"68-RN42-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=466\" title=\"67-LCD_ILI9341_SPI-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 67-LCD_ILI9341_SPI-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=470\" title=\"69-L298-Schrittmotor-Library (STM32F4)\">69-L298-Schrittmotor-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>mit dieser Library kann ein Bluetooth-Modul mit RN42-Chip an die CPU angeschlossen werden.<\/p>\n<p>Nach aufbauen einer Verbindung (von einem PC, Smartphone oder zweitem RN42-Modul) k\u00f6nnen dann Daten \u00fcber Funk (Bluetooth) \u00fcbertragen werden.<\/p>\n<p>Das Modul wird an eine normale UART der CPU angeschlossen und verh\u00e4lt sich nach dem Verbindungsaufbau auch wie eine normale serielle Schnittstelle mit 115kBaud.<\/p>\n<p>Es gibt mehrere Funktionen die benutzt werden k\u00f6nnen, aber es gen\u00fcgt eigentlich<br \/>\ndiese Reihenfolge einzuhalten :<br \/>\n1. Init vom Modul (es wird gepr\u00fcft ob das Modul an der UART angeschlossen ist)<br \/>\n2. Umschalten des Moduls in den Data-Mode (WICHTIG !!)<br \/>\n3. Am PC (oder Smartphone) das Bluetooth-Modul per \u201cScan\u201d suchen und verbinden<br \/>\n4a. Daten vom PC\/Smartphone per Bluetooth an das Modul senden und per<br \/>\n\u201cUB_RN42_ReceiveString\u201d auf der CPU empfangen<br \/>\n4b. Daten von der CPU per \u201cUB_RN42_SendString\u201d \u00fcber Bluetooth an den PC\/Smartphone senden.<\/p>\n<p>Es gibt noch Funktionen um die 12-Stellige Adresse vom RN42-Modul auszulesen und um eine Pin-Nr und den Namen vom RN42-Modul einzustellen. (geht nur im CMD-Mode)<\/p>\n<p>Falls eine Verbindung zu einem anderen RN42-Modul hergestellt werden soll, muss dessen Adresse per \u201cUB_RN42_Set_BT_Adr\u201d gesetzt werden und danach muss die Funktion\u00a0\u201dUB_RN42_Connect\u201d aufgerufen werden.<br \/>\nHinweis : Diese Funktionalit\u00e4t habe ich nicht getestet !!<\/p>\n<p>Hinweis zu Smartphones : der \u00dcbertragungsmode ist \u201cSPP = SerialPortProfile\u201d und muss vom Smartphone unterst\u00fctzt werden. Als Anwendung gibt es dann z.B. f\u00fcr Android kostenlose APPs wie \u201cBTerm oder Bluetooth Terminal\u201d.<\/p>\n<p><strong>Schaltung und Modul :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/rn42.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3119\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/rn42-300x179.jpg\" alt=\"rn42\" width=\"300\" height=\"179\" \/><\/a><\/p>\n<p>im Beispiel wurde das RN42-Modul an die UART-3 angeschlossen :<\/p>\n<pre lang=\"c\" line=\"1\">PC10 = CPU_TX &gt; RN42_RX\r\nPC11 = CPU_RX &lt; RN42_TX<\/pre>\n<p><strong>Voraussetzungen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : GPIO, USART, MISC\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  RN42_NONE = 0,  \/\/ keine Endekennung\r\n  RN42_LFCR,      \/\/ LineFeed + CarriageReturn (0x0A,0x0D)\r\n  RN42_CRLF,      \/\/ CarriageReturn + LineFeed (0x0D,0x0A)\r\n  RN42_LF,        \/\/ nur LineFeed (0x0A)\r\n  RN42_CR         \/\/ nur CarriageReturn (0x0D)\r\n}RN42_LASTBYTE_t;<\/pre>\n<p><strong>:<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  RN42_RX_EMPTY = 0,  \/\/ nichts empfangen\r\n  RN42_RX_READY,      \/\/ es steht was im Empfangspuffer\r\n  RN42_RX_FULL        \/\/ RX-Puffer ist voll\r\n}RN42_RXSTATUS_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">ErrorStatus UB_RN42_Init(void);                                       \/\/ init vom RN42\r\nErrorStatus UB_RN42_DATA_Mode(void);                                  \/\/ schaltet RN42 in DATA-Mode\r\nErrorStatus UB_RN42_CMD_Mode(void);                                   \/\/ schaltet RN42 in CMD-Mode\r\nRN42_RXSTATUS_t UB_RN42_ReceiveString(char *ptr);                     \/\/ empf\u00e4ngt String per Bluetooth\r\nErrorStatus UB_RN42_SendString(char *ptr, RN42_LASTBYTE_t last_byte); \/\/ sendet String per Bluetooth\r\nErrorStatus UB_RN42_Get_BT_Adr(void);                                 \/\/ auslesen der eigenen Adresse\r\nErrorStatus UB_RN42_Set_BT_Adr(char *ptr);                            \/\/ setzen der Partner Adresse\r\nErrorStatus UB_RN42_Set_BT_Pin(char *ptr);                            \/\/ setzen vom Pin\r\nErrorStatus UB_RN42_Set_BT_Name(char *ptr);                           \/\/ setzen vom Name\r\nErrorStatus UB_RN42_Connect(void);                                    \/\/ verbinden mit Partner\r\nErrorStatus UB_RN42_Disconnect(void);                                 \/\/ trennen vom Partner<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 01.12.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F4\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der RN42-Library\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_led.h\"\r\n#include \"stm32_ub_rn42.h\"\r\n\r\nint main(void)\r\n{\r\n  ErrorStatus check;\r\n  char buf[30];\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init der LEDs\r\n  UB_Led_Init();\r\n\r\n  \/\/ init vom RN42-Modul (an PC10,PC11)\r\n  check=UB_RN42_Init();\r\n  if(check==SUCCESS) {\r\n    UB_Led_On(LED_GREEN);\r\n    \/\/ default Werte setzen\r\n    UB_RN42_Set_BT_Adr(\"A1B2C3D4E5F6\"); \/\/ nicht notwendig\r\n    UB_RN42_Set_BT_Pin(\"1234\");\r\n    UB_RN42_Set_BT_Name(\"RN42-Modul STM32F4\");\r\n    \/\/ in Data-Mode umschalten\r\n    UB_RN42_DATA_Mode();\r\n  }\r\n  else {\r\n    UB_Led_On(LED_RED);\r\n  }\r\n\r\n  while(1)\r\n  {\r\n    if(check==SUCCESS) {\r\n      \/\/ check ob Daten per Bluetooth empfangen wurden\r\n      if(UB_RN42_ReceiveString(buf)==RN42_RX_READY) {\r\n        UB_Led_Toggle(LED_BLUE);\r\n        \/\/ wenn ja, als Echo zur\u00fccksenden\r\n        UB_RN42_SendString(buf,RN42_LFCR);\r\n      }\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/ub_stm32f4_rn42_v100.zip\">ub_stm32f4_rn42_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/Demo_68_RN42.zip\">Demo_68_RN42<\/a><\/p>\n<hr \/>\n<h3 id=\"comments-title\">8 Antworten auf <em>68-RN42-Library (STM32F4)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-1695\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1695\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/0625d6b2cc293e847d6f4e4c7e922b45?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Peter<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">12. Mai 2014 um 12:53<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<br \/>\nbez\u00fcglich des Bluetooth Projektes mit dem RN42 habe ich eine Frage. Ich habe alles soweit hinbekommen und kann mein Handy mit dem Modul koppeln. Allerdings kann ich mich in der App (Bluetooth Terminal) nicht verbinden. Also auch keine Nachrichten schicken. Haben Sie eine Idee woran das liegen k\u00f6nnte?<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1704\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1704\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">13. Mai 2014 um 19:26<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>event. unterst\u00fctzt dein Handy den SPP-Mode nicht. (geht bei meinem HCT Handy auch nicht)<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-3357\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-3357\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/113d44b2b327b3b63cbc0facdc200623?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Kris<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">24. Juni 2015 um 13:12<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Erstmal danke f\u00fcr die Lib, funktioniert soweit ganz gut, bis auf ein Problem:<br \/>\nIch m\u00f6chte gerne CAN-Nachrichten \u00fcber Bluetooth weiterleiten, aber bei einem Byte mit Inhalt \u201900\u2032 schneidet er die Nachricht ab, weil das innerhalb eines Strings als Null-Termination interpretiert wird.<\/p>\n<p>Von CAN zu BT konnte ich das Problem schon umgehen, indem ich mehrere einzelne Bytes sende und zum Schluss ein CR sende, aber andersherum (BT zu CAN) scheint das nicht so einfach zu sein\u2026<\/p>\n<p>Gibt es einen einfachen Weg, statt der String-Funktionen mit byte-Arrays zu arbeiten? Hast du einen Tipp, an welchen Stellen ich die Lib anpassen muss?<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3358\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-3358\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">24. Juni 2015 um 18:53<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>im H-File steht die Einschr\u00e4nkung der Zeichen die empfangen werden<br \/>\nRN42_RX_FIRST_CHR und RN42_RX_LAST_CHR<br \/>\nstell die mal auf 0 und 255 (damit sollten alle Zeichen im Puffer landen)<br \/>\nbeim auslesen per \u201cUB_RN42_ReceiveString\u201d musst du dann aber aufpassen,<br \/>\ndie \u00fcbergebenen Daten sind KEIN String mehr\u2026es k\u00f6nnen 0\u00d700 mitten<br \/>\nim Array auftauchen. Du musst also die Endekennung von 0\u00d700 ab\u00e4ndern<br \/>\num das Ende vom Array erkennen zu k\u00f6nnen.<br \/>\nAm einfachsten \u00c4nderst du die eine Zeile in \u201cUB_RN42_ReceiveString\u201d :<br \/>\n<code><br \/>\n\/\/ Stringendekennung<br \/>\nptr[n]=0x00;<br \/>\n<\/code><br \/>\nin<br \/>\n<code><br \/>\n\/\/ Stringendekennung<br \/>\nptr[n]=RN42_RX_END_CHR;<br \/>\n<\/code><br \/>\ndamit ist die Endekennung eindeutig<br \/>\n(solannge RN42_RX_END_CHR nicht in deinen Daten vorkommt <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":-)\" \/><\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3362\" class=\"comment even depth-3\">\n<div id=\"comment-3362\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/113d44b2b327b3b63cbc0facdc200623?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Kris<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">26. Juni 2015 um 15:58<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Danke, das funktioniert tats\u00e4chlich! SendString kann ich zwar immer noch nicht verwenden, aber zumindest funktioniert meine \u00dcbertragung jetzt in beide Richtungen, das reicht mir erstmal <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_wink.gif\" alt=\";)\" \/><\/p>\n<p>Das mit dem END_CHR k\u00f6nnte allerdings ein Problem werden, da ich nicht garantieren kann, dass der Wert nicht vorkommt. Ich glaube da werd ich nochmal ein wenig dr\u00fcber gr\u00fcbeln. Vielleicht kann ich da mithilfe des DLCs was machen, dadurch wei\u00df ich ja wieviele Daten kommen, bevor die Nachricht zu Ende sein kann.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-3369\" class=\"comment odd alt depth-3\">\n<div id=\"comment-3369\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/113d44b2b327b3b63cbc0facdc200623?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Kris<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">29. Juni 2015 um 17:02<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Ich nochmal\u2026<br \/>\nKannst du bitte mal \u00fcberpr\u00fcfen, ob die Funktion RN42_DATA_Mode wirklich dazu f\u00fchrt, dass er in den DATA-Mode wechselt? Ich bin mir gerade nicht sicher ob das eventuell an einer \u00c4nderung liegt, die ich vorgenommen habe, aber mit einem Breakpoint auf der letzten Zeile der Funktion (\u201creturn(ret_wert);\u201d) steht im Debugger noch ERROR in ret_wert und der RN42.mode noch auf CMD.<br \/>\nBei mir schl\u00e4gt anscheinend das strncmp fehl, da der Puffer mit \u201c\\nEND\u201d beginnt. Ich bin aber dennoch in der Lage, manche Nachrichten zu verschicken (obwohl er im CMD-Mode ist!), deswegen kann es sein, dass dir das nie aufgefallen ist.<\/p>\n<p>W\u00e4re interessant das mit Sicherheit zu wissen, unter Umst\u00e4nden muss ich meine \u00c4nderungen nochmal zur\u00fcckverfolgen oder sauber von vorne beginnen. Wenn der Fehler aber bei dir auch auftritt, dann ist das m\u00f6glicherweise ein Bug in der Lib.<br \/>\nDanke schonmal im Voraus f\u00fcr deine M\u00fche!<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-3370\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-3370\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/113d44b2b327b3b63cbc0facdc200623?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Kris<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">29. Juni 2015 um 17:21<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Okay, ich habe das gerade selber mal Anhand deiner Demo \u00fcberpr\u00fcft, da klappt es, und der Buffer beginnt auch mit \u201cEND\u201d. Ich nehme an das liegt an der \u00c4nderung von RN42_RX_FIRST_CHR und RN42_RX_LAST_CHR, die ich vorgenommen habe. Unter diesen Umst\u00e4nden m\u00fcsste es aber funktionieren, wenn ich das strncmp entsprechend anpasse, oder? Also in dieser Form:<br \/>\nif(strncmp(RN42.buffer,\u201d\\nEND\u201d,5)==0)<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3371\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-3371\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">29. Juni 2015 um 18:37<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>der Puffer ist KEIN String mehr !! (hab ich schon geschrieben)\u2026<br \/>\nalso funktioniert auch strncmp nicht !!<br \/>\ndu musst mit einer For-n alle Zeichen bis zur Endekennung selbst pr\u00fcfen<br \/>\nsonst ist das u.U. buggy.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>mit dieser Library kann ein Bluetooth-Modul mit RN42-Chip an die CPU angeschlossen werden. Nach aufbauen einer Verbindung (von einem PC, Smartphone oder zweitem RN42-Modul) k\u00f6nnen dann Daten \u00fcber Funk (Bluetooth) \u00fcbertragen werden. Das Modul wird an eine normale UART der &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=468\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":68,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[218,9,217,7],"class_list":["post-468","page","type-page","status-publish","hentry","category-stm32f4","tag-bluetooth","tag-library","tag-rn42","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=468"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/468\/revisions"}],"predecessor-version":[{"id":1607,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/468\/revisions\/1607"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}