{"id":303077,"date":"2020-05-05T21:00:30","date_gmt":"2020-05-05T21:00:30","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=303077"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=303077","title":{"rendered":"\u00ab\u041a\u0430\u043a\u0438\u0445 \u041c\u0430\u0440\u0438\u043d?\u00bb \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0447\u0435\u0440\u0435\u0437 bluetooth \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Xamarin (Android)"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/500454\/\">\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/post\/497324\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u044f \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c CANNY 3 tiny \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e UART \u043a bluetooth. \u0418 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430 \u044d\u0442\u0438\u0445 \u043c\u0430\u0439\u0441\u043a\u0438\u0445 \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u0440\u0430\u0437\u0433\u0443\u043b\u044f\u0435\u0448\u044c\u0441\u044f, \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432\u0440\u0435\u043c\u044f \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0439 \u0438 \u0442\u0430\u043a\u0438 \u0441\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435. \u041d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043a Bluetooth \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0443 HC-06, \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0425\u0430\u0431\u0440\u0430. <\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0451 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c, \u043d\u043e \u0435\u0449\u0435 \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0441\u0445\u0435\u043c\u044b \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Android \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f C# \u0438 Xamarin.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u00ab\u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a\u0438\u00bb \u0438 \u0433\u0435\u0440\u043a\u043e\u043d\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043b\u044e\u0431\u043b\u044e \u044f, \u043c\u0438\u043b\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/a6\/2t\/ai\/a62taim0dwnonrmzzjhicax8q-g.png\"><br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412\u043e\u0442 \u043e \u0447\u0435\u043c \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u0441\u0435\u0433\u043e\u0434\u043d\u044f:<\/p>\n<p>  <a href=\"#I\"> \u0427\u0430\u0441\u0442\u044c I: \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/a><br \/>  <a href=\"#II\"> \u0427\u0430\u0441\u0442\u044c II: \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f CANNY 3 tiny <\/a><br \/>  <a href=\"#III\"> \u0427\u0430\u0441\u0442\u044c III: \u041f\u0438\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Xamarin \u0434\u043b\u044f Android<\/a><br \/>  <a href=\"#IV\"> \u0427\u0430\u0441\u0442\u044c IV: \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><br \/>  <a name=\"I\"><\/a>  <\/p>\n<h2> \u0427\u0430\u0441\u0442\u044c I: \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041d\u0430\u0447\u043d\u0443 \u0441 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 C#, \u0442\u043e \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u0435\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437, \u0432\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u0451\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c CANNY:<\/p>\n<ol>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/482948\/\">\u00ab\u0420\u0430\u0437, \u0434\u0432\u0430, \u0442\u0440\u0438 \u2013 \u0451\u043b\u043e\u0447\u043a\u0430 \u0433\u043e\u0440\u0438!\u00bb \u0438\u043b\u0438 \u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 CANNY 3 tiny<\/a> \u2014 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0447\u0442\u043e \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u0437\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0441\u0440\u0435\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 CannyLab.  <\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/489764\/\">\u00ab\u0423 \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0430 \u043e\u0431\u043b\u0438\u0447\u0438\u0439&#8230;\u00bb \u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043b\u0430\u043c\u043f\u043e\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CANNY 3 tiny \u0438 \u0444\u043e\u0442\u043e\u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430<\/a> \u2014 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 USB Virtual COM-port, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u043a \u0410\u0426\u041f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0439 \u0428\u0418\u041c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.  <\/li>\n<li> <a href=\"https:\/\/habr.com\/ru\/post\/497324\/\">\u00ab\u041a\u0430\u043a \u0437\u0435\u043d\u0438\u0446\u0443 \u043e\u043a\u0430&#8230;\u00bb \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u043e\u0445\u0440\u0430\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 (CANNY \u0438\u043b\u0438 Arduino) \u0438 Raspberry PI<\/a> \u2014 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 UART, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u043e\u0435.  <\/li>\n<\/ol>\n<p>  \u041f\u0440\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0436\u0435\u043b\u0435\u0437\u043e: \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 CANNY 3 tiny, bluetooth \u0430\u0434\u0430\u043f\u0442\u0435\u0440 HC-06, \u043a\u043e\u043d\u0446\u0435\u0432\u043e\u0439 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c (\u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a Trema-\u043c\u043e\u0434\u0443\u043b\u044c), \u0433\u0435\u0440\u043a\u043e\u043d, \u0441\u0442\u0430\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0435 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0438, \u043c\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443, \u043f\u0440\u043e\u0432\u043e\u0434\u0430, \u00ab\u043a\u0440\u043e\u043a\u043e\u0434\u0438\u043b\u044b\u00bb.<\/p>\n<p>  \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<p>  \u0412\u0441\u0435 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0432\u044b\u0434\u0443\u043c\u0430\u043d\u043e \u0447\u0438\u0441\u0442\u043e \u0432 \u0443\u0447\u0435\u0431\u043d\u043e-\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0435\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u043a\u0443\u043f\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0436\u0435\u043b\u0435\u0437\u043a\u0438 \u0445\u043e\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u0432\u043e\u044e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c. <\/p>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0434\u0430\u043b\u0435\u043a\u0438\u0439 \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0440\u0435\u0448\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0437\u0430 \u0440\u0430\u0437\u0434\u0432\u0438\u0436\u043d\u043e\u0439 \u0434\u0432\u0435\u0440\u044c\u044e \u043a\u0443\u043f\u0435. \u041a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u043d\u0430\u0447\u043d\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435, \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0433\u0435\u0440\u043a\u043e\u043d, \u0430 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u0443\u0442\u0438 \u0434\u0430\u0441\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a. \u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0435\u0440\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u043b\u0438, \u043c\u044b \u043f\u043e\u0434\u0430\u0434\u0438\u043c \u00ab\u043f\u0438\u0441\u043a\u043b\u044f\u0432\u044b\u0439\u00bb \u0441\u0438\u0433\u043d\u0430\u043b \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u043d\u0430\u043c\u0438\u043a. \u041f\u0440\u0430\u0432\u0434\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442, \u043d\u043e \u0437\u0430\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0438. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jq\/wn\/cn\/jqwncnwbb_hvquu7qyfhlvhw10q.png\"><\/p>\n<p>  <i>\u041d\u0443 \u0438, \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u043a\u0430\u043a \u0438\u0441\u0442\u0438\u043d\u0443 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0438. \u041c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438 \u044f \u0441\u0430\u043c \u0434\u0435\u043b\u0430\u043b \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437, \u0438\u0445 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435.<br \/>  <\/i><br \/>  <a name=\"II\"><\/a>  <\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c II: \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f CANNY 3 tiny<\/h2>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0438\u043a\u043e\u0433\u043e \u0432 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u043f\u0440\u0430\u0432\u0430\u0445 \u043d\u0435 \u043e\u0431\u0438\u0434\u0435\u0442\u044c \u0443\u0442\u043e\u0447\u043d\u044e, \u0447\u0442\u043e \u0438\u0434\u0435\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043a HC-06, \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u00abSerial bluetooth terminal\u00bb \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0435\u043c\u044b \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b, \u044f \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0441 <a href=\"https:\/\/forum.canny.ru\/viewtopic.php?pid=8533\" rel=\"nofollow\">\u0444\u043e\u0440\u0443\u043c\u0430<\/a>, \u043d\u043e \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439 \u044f \u0438\u0445 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0434 \u0441\u0432\u043e\u044e \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>  \u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kt\/lj\/7c\/ktlj7chkvqtuk-omahss0xxyxx4.png\"><\/p>\n<p>  \u041a\u043e\u043d\u0446\u0435\u0432\u0438\u043a \u0438 \u0433\u0435\u0440\u043a\u043e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u0432\u044b\u0432\u043e\u0434\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u21166 \u0438 \u21165, \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0438 \u043a \u0432\u044b\u0432\u043e\u0434\u0443 \u21164 (\u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0412\u0427 \u0428\u0418\u041c), UART RX \u2013 \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434 \u2116 1, UART TX \u2013 \u0432\u044b\u0432\u043e\u0434 \u2116 2, \u0432\u044b\u0432\u043e\u0434 \u2116 3 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0430\u0447\u0438 \u00ab+5\u0412\u00bb, \u0432\u044b\u0432\u043e\u0434 \u00ab-\u00bb \u2014 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0441 \u00ab\u0437\u0435\u043c\u043b\u0435\u0439\u00bb.<\/p>\n<p>  \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0441\u0431\u043e\u0440\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/57\/hy\/du\/57hydukatcvw7-mihshfkaykr20.png\"><\/p>\n<p>  \u0414\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443 (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443) \u0434\u043b\u044f \u0421ANNY 3 tiny \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0432 CannyLab \u0432\u0435\u0440\u0441\u0438\u0438 1.42, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438, \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443.<\/p>\n<p>  \u0412\u043e\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/l8\/mb\/yr\/l8mbyr6rzisiqurje5vrboprrio.png\"><\/p>\n<p>  \u0411\u043b\u043e\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e UART, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/497324\/#II\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<p>  \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439 \u0434\u0432\u0430 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f.<\/p>\n<p>  \u0411\u043b\u043e\u043a \u00ab<b>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e UART\u00bb<\/b>, \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0440\u0435\u043d\u044b(\u043d\u0430\u0443\u0448\u043d\u0438\u043a\u043e\u0432). \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043e\u043d \u043d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e UART. <\/p>\n<p>  \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0441\u0442\u044c \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 UART, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c, \u0442\u043e \u043f\u043e\u0434\u0430\u0435\u043c \u043d\u0430 \u0432\u0445\u043e\u0434 \u00ab\u0415\u00bb D-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443, \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e \u0432\u0445\u043e\u0434\u0430 \u201cD\u201d \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438\u0437 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u043f\u043e UART. \u042f \u043d\u0435 \u0445\u043e\u0442\u0435\u043b \u0432\u0441\u0451 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0445\u0435\u043c\u0443. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u043e UART \u043a \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442 \u043b\u044e\u0431\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043e\u0442 00 \u0434\u043e 99, \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0432 \u0447\u0438\u0441\u043b\u043e\u0432\u0443\u044e (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u043a <a href=\"https:\/\/wiki.canny.ru\/index.php\/%D0%9A%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B5%D1%80_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2_%D0%B2_%D1%87%D0%B8%D1%81%D0%BB%D0%BE\" rel=\"nofollow\">\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u043b\u043e\u043a \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440\u0430<\/a> \u0443 \u043c\u0435\u043d\u044f \u0441 \u043d\u0438\u043c \u0431\u044b\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u00ab\u0437\u0430\u0442\u044b\u043a\u00bb). \u0414\u0430\u043b\u044c\u0448\u0435 \u043b\u044e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &quot;&gt;0&quot; \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u043d\u0430 5 \u0441\u0435\u043a\u0443\u043d\u0434 \u0432\u044b\u0445\u043e\u0434 \u21164, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0412\u0427 \u0428\u0418\u041c. <\/p>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0412\u0427 \u0428\u0418\u041c, \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c, \u0437\u0432\u0443\u043a \u0432 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0430\u0445.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0431\u043b\u043e\u043a\u0443 <b>\u00ab\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u00bb<\/b>. \u0415\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439. \u041e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u044f \u0442\u043e\u043b\u043a\u043e\u043c \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 Serial bluetooth terminal \u0438 \u0441 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c bluetooth \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0432 Xamarin.<\/p>\n<p>  \u0417\u0430\u0431\u0435\u0433\u0443 \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u0432\u043f\u0435\u0440\u0451\u0434 \u0438 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0441 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u043c UART \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0442\u043e \u0441 Bluetooth \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c \u0438 \u0441\u043c\u044b\u0441\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u042f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0434\u043e\u0439\u0434\u0435\u0442 \u0434\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u0430 \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u044c. <\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0433\u0435\u0440\u043a\u043e\u043d\u0430 \u0438 \u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u043e 4 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438: \u0433\u0435\u0440\u043a\u043e\u043d \u0438 \u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u044b, \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0442\u043e-\u0442\u043e \u043e\u0434\u0438\u043d, \u043e\u0431\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0433\u0435\u0440\u043a\u043e\u043d \u0438 \u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a \u0434\u0430\u044e\u0442 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b (0\/1) \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0438\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u043c\u043d\u043e\u0436\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0433\u0435\u0440\u043a\u043e\u043d\u0430 \u043d\u0430 2. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0443\u043c\u043c\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 0 \u0434\u043e 3. <\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043a \u044d\u0442\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043f\u044f\u0442\u0438\u0434\u0435\u0441\u044f\u0442\u0438. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e CannyLab \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0432 UART \u043f\u0430\u0440\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e 3 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c 03, \u043d\u043e \u043a\u0430\u043a \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0435\u0441\u0442\u044c \u0440\u0438\u0441\u043a \u043f\u043e\u0442\u0435\u0440\u0438 \u0447\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 01, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u00ab0\u00bb, \u0430 \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430. <\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0437\u0430\u043c\u0435\u043d\u0438\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0438\u043c\u0432\u043e\u043b \u00abD1\u00bb \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0443\u043a\u0432\u043e\u0439 \u0438\u043b\u0438 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c, \u043d\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0449\u0435. \u042f \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 01 \u0432 51 (02 \u0432 52 \u0438 \u0442.\u0434.). \u041f\u044f\u0442\u0435\u0440\u043a\u0430 \u043d\u0435 \u043d\u0435\u0441\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0438 \u044f \u0435\u0435 \u0432\u044b\u0440\u0435\u0437\u0430\u044e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u0434\u0430 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00ab\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u00bb, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e, \u0442\u043e HC-06 \u043d\u0430\u0447\u043d\u0435\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0438\u0433\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u043f\u0440\u044f\u0433\u0430\u0435\u043c \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d \u0441 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u00abSerial Bluetooth terminal\u00bb \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c \u0441 \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c.<\/p>\n<p>  \u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 Bluetooth \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u043e\u043d \u043d\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/7q\/9_\/cj\/7q9_cjavutr8evwh-bzcjo7lu_o.png\"><\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432, \u0430 \u0435\u0441\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u00ab11\u00bb, \u0442\u043e \u0432 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0430\u0445 \u043f\u043e\u0441\u043b\u044b\u0448\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0438\u0441\u043a. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0430 \u044d\u0442\u043e\u043c \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u0435\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441 <a href=\"https:\/\/github.com\/bosonbeard\/Funny-models-and-scripts\/tree\/master\/6.Canny-Xanarin_Bluetooth_Android\" rel=\"nofollow\">GitHub<\/a> <\/p>\n<p>  \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0432 \u0436\u0435\u043b\u0435\u0437\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 CANNY, \u0432\u044b \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f Arduino \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e \u0432\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u0438 \u0441\u0430\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0449\u0435 \u0438 \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u043a\u0435\u0442\u0447\u0430 \u0434\u043b\u044f Arduino, \u043d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443\u0431\u0438\u043b \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043c\u0430\u0439\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a\u0438, \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 CANNY \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0438\u043b. <br \/>  <a name=\"III\"><\/a>  <\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c III: \u041f\u0438\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Xamarin \u0434\u043b\u044f Android <\/h2>\n<p>  \u042f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e Xamarin \u0441\u043a\u0430\u0436\u0435\u043c \u043c\u044f\u0433\u043a\u043e \u2013 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0418 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0432\u043e\u0437\u043d\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441: <b>\u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0435\u0433\u043e \u0432\u044b\u0431\u0440\u0430\u043b?\u00bb<\/b>. \u041e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u043c\u043d\u0435 \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0441\u043d\u0438 \u041f\u0441\u043e\u044f \u041a\u043e\u0440\u043e\u043b\u0435\u043d\u043a\u043e:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ky\/lq\/bd\/kylqbdcllbxokagsfxfjtasavrg.png\"><\/p>\n<p>  \u0427\u0435\u0441\u0442\u043d\u043e, \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u0440\u0443 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u044f \u0443\u0447\u0438\u043b \u0430\u0437\u044b C# \u0438 \u0432\u0441\u0435 \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Xamarin. \u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0437-\u0437\u0430 \u00ab\u0441\u0430\u043c\u043e\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438\u00bb \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0434\u043e\u0448\u043b\u0438 \u0440\u0443\u043a\u0438.<\/p>\n<p>  \u041d\u0443 \u0438 \u0435\u0449\u0435 \u0440\u0430\u0437 \u043d\u0430\u043f\u043e\u043c\u043d\u044e. \u042f \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0441\u044c \u0441 Xamarin \u0438 \u044d\u0442\u043e \u043c\u043e\u0435 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Android. \u041d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0441\u043b\u0435\u043f\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439 \u043a\u043e\u0434, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0438\u043c.<\/p>\n<p>  \u041f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u044f \u043e\u043f\u0438\u0440\u0430\u043b\u0441\u044f \u043d\u0430 <a href=\"http:\/\/alejandroruizvarela.blogspot.com\/2014\/01\/bluetooth-arduino-xamarinandroid.html\" rel=\"nofollow\">\u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b<\/a>. \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0440\u0430\u0437\u0436\u0435\u0432\u0430\u043d\u0430, \u0434\u0430 \u0435\u0449\u0435 \u0438 \u043d\u0430 \u0438\u0441\u043f\u0430\u043d\u0441\u043a\u043e\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0441\u0447\u0435\u043b \u0443\u043c\u0435\u0441\u0442\u043d\u044b\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0439 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0435\u0439 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443.<\/p>\n<p>  \u042f \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 Visual studio 2019 community edition.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f Android (Xamarin), \u043a\u0430\u043a \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gw\/ic\/hz\/gwichz5ldmq0k8wgpoedzpnt41u.png\"><\/p>\n<p>  \u042f \u0432\u043d\u043e\u0441\u0438\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430, \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 <a href=\"https:\/\/github.com\/bosonbeard\/Funny-models-and-scripts\/tree\/master\/6.Canny-Xanarin_Bluetooth_Android\" rel=\"nofollow\">GitHub<\/a>, \u0430 \u0442\u0443\u0442 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438:<\/p>\n<p>  <b> AndroidManifest.xml <\/b><\/p>\n<p>  \u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b 2 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cs\">  &lt;uses-permission android:name=&quot;android.permission.BLUETOOTH&quot;\/&gt;   &lt;uses-permission android:name=&quot;android.permission.BLUETOOTH_ADMIN&quot;\/&gt; <\/code><\/pre>\n<p>  <b>activity_main.xml<\/b><br \/>  \u0411\u044b\u043b \u0443\u0431\u0440\u0430\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (RelativeLayout). \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 LinearLayout \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u043e\u0449\u0435. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438, \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0432\u0441\u044e \u0448\u0438\u0440\u0438\u043d\u0443 \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<pre><code class=\"cs\">&lt;LinearLayout     xmlns:android=&quot;http:\/\/schemas.android.com\/apk\/res\/android&quot;     android:orientation=&quot;vertical&quot;     android:minWidth=&quot;25px&quot;     android:minHeight=&quot;25px&quot;     android:layout_width=&quot;match_parent&quot;     android:layout_height=&quot;match_parent&quot;     android:id=&quot;@+id\/linearLayout1&quot;&gt;     &lt;TextView         android:text=&quot;Reed switch status - undefined&quot;         android:layout_width=&quot;match_parent&quot;         android:layout_height=&quot;wrap_content&quot;         android:id=&quot;@+id\/rSwitch&quot;         android:textSize=&quot;12pt&quot; \/&gt;     &lt;TextView         android:text=&quot;End sensor status - undefined&quot;         android:layout_width=&quot;match_parent&quot;         android:layout_height=&quot;wrap_content&quot;         android:id=&quot;@+id\/EndSensor&quot;         android:textSize=&quot;12pt&quot; \/&gt;     &lt;Button         android:layout_width=&quot;match_parent&quot;         android:layout_height=&quot;wrap_content&quot;         android:id=&quot;@+id\/startSiren&quot;         android:text=&quot;Send signal to siren&quot; \/&gt;     &lt;Switch         android:layout_width=&quot;match_parent&quot;         android:layout_height=&quot;wrap_content&quot;         android:id=&quot;@+id\/bltSwitch&quot;         android:checked=&quot;false&quot;         android:showText=&quot;true&quot;         android:text=&quot;Connect bluetooth&quot; \/&gt;     &lt;TextView         android:text=&quot;status&quot;         android:textAppearance=&quot;?android:attr\/textAppearanceSmall&quot;         android:layout_width=&quot;match_parent&quot;         android:layout_height=&quot;wrap_content&quot;         android:id=&quot;@+id\/status&quot; \/&gt; &lt;\/LinearLayout&gt;<\/code><\/pre>\n<p>  \u041b\u044e\u0431\u043e\u043c\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u043c\u0443 \u0441 HTML \u0432\u0451\u0440\u0441\u0442\u043a\u043e\u0439 \u0438\u043b\u0438 XML \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044f (TextView), \u043e\u0434\u0438\u043d \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c(Switch), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0441\u0443\u0442\u0438 \u043a\u0430\u043a \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u0438 \u043e\u0434\u043d\u0430 \u0441\u0430\u043c\u0430\u044f \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430(Button). \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u043f\u0443\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u0430 \u0432 \u043e\u043a\u043d\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0438\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 Id, \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  <b>MainActivity.cs<\/b><\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u043a\u043e\u0434 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 MainActivity.cs<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">\/\/ based on http:\/\/alejandroruizvarela.blogspot.com\/2014\/01\/bluetooth-arduino-xamarinandroid.html \/\/ for this article https:\/\/habr.com\/ru\/post\/500454\/   \/\/ based on http:\/\/alejandroruizvarela.blogspot.com\/2014\/01\/bluetooth-arduino-xamarinandroid.html \/\/ for this article https:\/\/habr.com\/ru\/post\/500454\/   using Android.App; using Android.OS; using Android.Support.V7.App; using Android.Runtime; using Android.Widget; using System.Linq; using System; using System.IO; using Java.Util; using Android.Bluetooth; using System.Threading.Tasks;  namespace _6.Canny_Xanarin_Bluetooth_Android {     [Activity(Label = &quot;Control Canny 3 tiny via bluetooth&quot;, Theme = &quot;@style\/AppTheme&quot;, MainLauncher = true)]     public class MainActivity : AppCompatActivity     {          Button startSiren;         TextView rSwitch;         TextView EndSensor;         Switch bltSwitch;         TextView status;         private Java.Lang.String dataToSend;         private BluetoothAdapter mBluetoothAdapter = null;         private BluetoothSocket btSocket = null;         private Stream outStream = null;         \/\/ don't forget change addres to your device:         private static string address = &quot;98:D3:91:F9:6C:F6&quot;;         \/\/ MY_UUID can be saved as is         private static UUID MY_UUID = UUID.FromString(&quot;00001101-0000-1000-8000-00805F9B34FB&quot;);         private Stream inStream = null;           protected override void OnCreate(Bundle savedInstanceState)         {              base.OnCreate(savedInstanceState);             Xamarin.Essentials.Platform.Init(this, savedInstanceState);             \/\/ Set our view from the &quot;main&quot; layout resource             SetContentView(Resource.Layout.activity_main);              startSiren = FindViewById&lt;Button&gt;(Resource.Id.startSiren);             rSwitch = FindViewById&lt;TextView&gt;(Resource.Id.rSwitch);             EndSensor = FindViewById&lt;TextView&gt;(Resource.Id.EndSensor);             status = FindViewById&lt;TextView&gt;(Resource.Id.status);             bltSwitch = FindViewById&lt;Switch&gt;(Resource.Id.bltSwitch);               startSiren.Click += startSiren_ClickOnButtonClicked;             bltSwitch.CheckedChange += bltSwitch_HandleCheckedChange;             CheckBt();         }          private void CheckBt()         {             mBluetoothAdapter = BluetoothAdapter.DefaultAdapter;              if (!mBluetoothAdapter.Enable())             {                 Toast.MakeText(this, &quot;Bluetooth Off&quot;,                     ToastLength.Short).Show();             }              if (mBluetoothAdapter == null)             {                 Toast.MakeText(this,                     &quot;Bluetooth does not exist or is busy&quot;, ToastLength.Short)                     .Show();             }         }          void startSiren_ClickOnButtonClicked(object sender, EventArgs e)         {             if (bltSwitch.Checked)             {                 try                 {                     dataToSend = new Java.Lang.String(&quot;11&quot;);                     writeData(dataToSend);                     System.Console.WriteLine(&quot;Send signal to siren&quot;);                 }                 catch (System.Exception execept)                 {                     System.Console.WriteLine(&quot;Error when send data&quot; + execept.Message);                 }              }             else status.Text = &quot;bluetooth not connected&quot;;         }         void bltSwitch_HandleCheckedChange(object sender, CompoundButton.CheckedChangeEventArgs e)         {             if (e.IsChecked)             {                 Connect();             }             else             {                 status.Text = &quot;bluetooth not connected&quot;;                 if (btSocket.IsConnected)                 {                     try                     {                         btSocket.Close();                         System.Console.WriteLine(&quot;Connection closed&quot;);                     }                     catch (System.Exception ex)                     {                         Console.WriteLine(ex.Message);                     }                 }             }         }          public void Connect()         {             BluetoothDevice device = mBluetoothAdapter.GetRemoteDevice(address);             System.Console.WriteLine(&quot;Connection in progress&quot; + device);             mBluetoothAdapter.CancelDiscovery();             try             {                 btSocket = device.CreateRfcommSocketToServiceRecord(MY_UUID);                 btSocket.Connect();                 System.Console.WriteLine(&quot;Correct Connection&quot;);                 status.Text = &quot;Correct Connection to bluetooth&quot;;             }             catch (System.Exception e)             {                 Console.WriteLine(e.Message);                 try                 {                     btSocket.Close();                     System.Console.WriteLine(&quot;Connection closed&quot;);                 }                 catch (System.Exception)                 {                     System.Console.WriteLine(&quot;Impossible to connect&quot;);                     status.Text = &quot;Impossible to connect&quot;;                 }                 System.Console.WriteLine(&quot;Socket Created&quot;);                }             beginListenForData();          }          public void beginListenForData()         {             try             {                 inStream = btSocket.InputStream;             }             catch (System.IO.IOException ex)             {                 Console.WriteLine(ex.Message);             }             Task.Factory.StartNew(() =&gt; {                 byte[] buffer = new byte[1024];                 int bytes;                                  while (true)                 {                      try                     {                         bytes = inStream.Read(buffer, 0, 1024);                         System.Console.WriteLine(&quot;bytes &quot; + bytes.ToString());                         if (bytes &gt; 0)                         {                                                          RunOnUiThread(() =&gt; {                                 string valor = System.Text.Encoding.ASCII.GetString(buffer).Replace(&quot;5&quot;,String.Empty);                                 \/\/ transform string for deleate all symbols except 1-4(command from canny).                                 string command = new string(valor.Where(char.IsDigit).ToArray());                                  if (command.Length &gt; 0)                                 {                                      status.Text=&quot;data successfully readed&quot;;                                     System.Console.WriteLine(&quot;command  &quot; + command);                                     switch (Int32.Parse(command))                                     {                                         case 0:                                             rSwitch.Text = &quot;reed switch - disconnected &quot;;                                             EndSensor.Text = &quot;end sensor - not pressed &quot;;                                             break;                                         case 1:                                             rSwitch.Text = &quot;reed switch - disconnected &quot;;                                             EndSensor.Text = &quot;end sensor - pressed &quot;;                                             break;                                         case 2:                                             rSwitch.Text = &quot;reed switch - connected &quot;;                                             EndSensor.Text = &quot;end sensor - not pressed &quot;;                                             break;                                         case 3:                                             rSwitch.Text = &quot;reed switch - connected &quot;;                                             EndSensor.Text = &quot;end sensor - pressed &quot;;                                         break;                                     }                                 }                             });                         }                     }                     catch (Java.IO.IOException)                     {                         RunOnUiThread(() =&gt; {                             EndSensor.Text = &quot;End sensor status - undefined&quot;;                             rSwitch.Text = &quot;Reed switch status - undefined &quot;;                         });                         break;                     }                 }             });         }          private void writeData(Java.Lang.String data)         {             try             {                 outStream = btSocket.OutputStream;             }             catch (System.Exception e)             {                 System.Console.WriteLine(&quot;Error with OutputStream when write to Serial port&quot; + e.Message);             }              Java.Lang.String message = data;              byte[] msgBuffer = message.GetBytes();              try             {                 outStream.Write(msgBuffer, 0, msgBuffer.Length);                 System.Console.WriteLine(&quot;Message sent&quot;);             }             catch (System.Exception e)             {                 System.Console.WriteLine(&quot;Error with  when write message to Serial port&quot; + e.Message);                 status.Text = &quot;Error with  when write message to Serial port&quot;;             }         }       public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)         {             Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);              base.OnRequestPermissionsResult(requestCode, permissions, grantResults);         }     }  } <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c.<\/p>\n<p>  \u0411\u043b\u043e\u043a\u0438 \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432 \u0438\u043c\u0435\u043d, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0442.\u043f. \u044f \u043f\u0440\u043e\u043f\u0443\u0449\u0443.<br \/>  \u2003<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u043e\u0437\u0436\u0435 \u0441\u0432\u044f\u0436\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430:<\/p>\n<pre><code class=\"cs\">   Button startSiren;    TextView rSwitch;    TextView EndSensor;    Switch bltSwitch;    TextView status; <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0435\u0442, \u043a\u043e\u0434 \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043e\u043f\u0438\u0440\u0430\u043b\u0441\u044f. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 (\u043f\u043e\u043b\u044f) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0435\u0445 \u0438\u043b\u0438 \u0438\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. <\/p>\n<pre><code class=\"cs\">  private Java.Lang.String dataToSend;         private BluetoothAdapter mBluetoothAdapter = null;         private BluetoothSocket btSocket = null;         private Stream outStream = null;         \/\/ don't forget change addres to your device:         private static string address = &quot;98:D3:91:F9:6C:F6&quot;;         \/\/ MY_UUID can be saved as is         private static UUID MY_UUID = UUID.FromString(&quot;00001101-0000-1000-8000-00805F9B34FB&quot;);         private Stream inStream = null; <\/code><\/pre>\n<p>  \u041d\u0430\u043c \u0437\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u0432\u0431\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f HC-06 \u0432 \u043f\u043e\u043b\u0435 address.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u0432 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Xamarin, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u0430\u043a \u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/acaliaro.wordpress.com\/2017\/02\/07\/connect-a-barcode-reader-to-a-xamarin-forms-app-via-bluetooth\/\" rel=\"nofollow\">\u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e<\/a>, \u0442\u0430\u043c \u043f\u043e\u0445\u043e\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 Bluetooth \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432.<\/p>\n<p>  \u0418\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<pre><code class=\"cs\">         protected override void OnCreate(Bundle savedInstanceState)         {              base.OnCreate(savedInstanceState);             Xamarin.Essentials.Platform.Init(this, savedInstanceState);             \/\/ Set our view from the &quot;main&quot; layout resource             SetContentView(Resource.Layout.activity_main);              startSiren = FindViewById&lt;Button&gt;(Resource.Id.startSiren);             rSwitch = FindViewById&lt;TextView&gt;(Resource.Id.rSwitch);             EndSensor = FindViewById&lt;TextView&gt;(Resource.Id.EndSensor);             status = FindViewById&lt;TextView&gt;(Resource.Id.status);             bltSwitch = FindViewById&lt;Switch&gt;(Resource.Id.bltSwitch);               startSiren.Click += startSiren_ClickOnButtonClicked;             bltSwitch.CheckedChange += bltSwitch_HandleCheckedChange;             CheckBt();         } <\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0432 \u043d\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b UI \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u043b\u044f \u0440\u0435\u0430\u043a\u0446\u0438\u0439 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f (<code>startSiren.Click \u0438 bltSwitch.CheckedChange<\/code>).<\/p>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e Bluetooth:<\/p>\n<pre><code class=\"cs\">         private void CheckBt()         {             mBluetoothAdapter = BluetoothAdapter.DefaultAdapter;              if (!mBluetoothAdapter.Enable())             {                 Toast.MakeText(this, &quot;Bluetooth Off&quot;,                     ToastLength.Short).Show();             }              if (mBluetoothAdapter == null)             {                 Toast.MakeText(this,                     &quot;Bluetooth does not exist or is busy&quot;, ToastLength.Short)                     .Show();             }         } <\/code><\/pre>\n<p>  \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0440\u0435\u043d\u044b. \u041f\u043e \u0441\u0443\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u00ab11\u00bb \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440:<\/p>\n<pre><code class=\"cs\">    void startSiren_ClickOnButtonClicked(object sender, EventArgs e)         {             if (bltSwitch.Checked)             {                 try                 {                     dataToSend = new Java.Lang.String(&quot;11&quot;);                     writeData(dataToSend);                     System.Console.WriteLine(&quot;Send signal to siren&quot;);                 }                 catch (System.Exception execept)                 {                     System.Console.WriteLine(&quot;Error when send data&quot; + execept.Message);                 }              }             else status.Text = &quot;bluetooth not connected&quot;;         } <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f (\u0435\u0441\u043b\u0438 \u0441\u043c\u0435\u0449\u0435\u043d \u0432 \u043f\u0440\u0430\u0432\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u043a\u043b\u044e\u0447\u0451\u043d): <\/p>\n<pre><code class=\"cs\">   void bltSwitch_HandleCheckedChange(object sender, CompoundButton.CheckedChangeEventArgs e)         {             if (e.IsChecked)             {                 Connect();             }             else             {                 if (btSocket.IsConnected)                 {                     try                     {                         btSocket.Close();                         System.Console.WriteLine(&quot;Connection closed&quot;);                     }                     catch (System.Exception ex)                     {                         Console.WriteLine(ex.Message);                     }                 }             }         } <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 Bluetooth.<\/p>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cs\">   public void Connect()         {             BluetoothDevice device = mBluetoothAdapter.GetRemoteDevice(address);             System.Console.WriteLine(&quot;Connection in progress&quot; + device);             mBluetoothAdapter.CancelDiscovery();             try             {                 btSocket = device.CreateRfcommSocketToServiceRecord(MY_UUID);                 btSocket.Connect();                 System.Console.WriteLine(&quot;Correct Connection&quot;);                 status.Text = &quot;Correct Connection to bluetooth&quot;;             }             catch (System.Exception e)             {                 Console.WriteLine(e.Message);                 try                 {                     btSocket.Close();                     System.Console.WriteLine(&quot;Connection closed&quot;);                 }                 catch (System.Exception)                 {                     System.Console.WriteLine(&quot;Impossible to connect&quot;);                     status.Text = &quot;Impossible to connect&quot;;                 }                 System.Console.WriteLine(&quot;Socket Created&quot;);                }             beginListenForData();          } <\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u2014 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"cs\">     public void beginListenForData()         {             try             {                 inStream = btSocket.InputStream;             }             catch (System.IO.IOException ex)             {                 Console.WriteLine(ex.Message);             }             Task.Factory.StartNew(() =&gt; {                 byte[] buffer = new byte[1024];                 int bytes;                                  while (true)                 {                      try                     {                         bytes = inStream.Read(buffer, 0, 1024);                         System.Console.WriteLine(&quot;bytes &quot; + bytes.ToString());                         if (bytes &gt; 0)                         {                                                          RunOnUiThread(() =&gt; {                                 string valor = System.Text.Encoding.ASCII.GetString(buffer).Replace(&quot;5&quot;,String.Empty);                                 \/\/ transform string for deleate all symbols except 1-4(command from canny).                                 string command = new string(valor.Where(char.IsDigit).ToArray());                                  if (command.Length &gt; 0)                                 {                                      status.Text=&quot;data successfully readed&quot;;                                     System.Console.WriteLine(&quot;command  &quot; + command);                                     switch (Int32.Parse(command))                                     {                                         case 0:                                             rSwitch.Text = &quot;reed switch - disconnected &quot;;                                             EndSensor.Text = &quot;end sensor - not pressed &quot;;                                             break;                                         case 1:                                             rSwitch.Text = &quot;reed switch - disconnected &quot;;                                             EndSensor.Text = &quot;end sensor - pressed &quot;;                                             break;                                         case 2:                                             rSwitch.Text = &quot;reed switch - connected &quot;;                                             EndSensor.Text = &quot;end sensor - not pressed &quot;;                                             break;                                         case 3:                                             rSwitch.Text = &quot;reed switch - connected &quot;;                                             EndSensor.Text = &quot;end sensor - pressed &quot;;                                         break;                                     }                                 }                             });                         }                     }                     catch (Java.IO.IOException)                     {                         RunOnUiThread(() =&gt; {                             EndSensor.Text = &quot;End sensor status - undefined&quot;;                             rSwitch.Text = &quot;Reed switch status - undefined &quot;;                         });                         break;                     }                 }             });         } <\/code><\/pre>\n<p>  \u041c\u043d\u043e\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u0442\u043e\u0434\u0430 \u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043a\u0430\u043a \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u0435\u0441\u043b\u0438 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0441 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0447\u0442\u043e-\u0442\u043e \u0435\u0441\u0442\u044c \u0442\u043e \u043e\u043d\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>valor<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u043a \u044f \u0438 \u043e\u0431\u0435\u0449\u0430\u043b, \u0446\u0438\u0444\u0440\u0443 \u00ab5\u00bb \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u043c.<\/p>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0437 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u0440\u043e\u043c\u0435 \u0446\u0438\u0444\u0440 <code>string command = new string(valor.Where(char.IsDigit).ToArray());<\/code><\/p>\n<p>  \u041d\u0443 \u0430 \u043f\u043e\u0441\u043b\u0435 \u0443\u0436\u0435 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e \u043a\u0430\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e, \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u0432 UI. <\/p>\n<p>  \u042d\u0442\u0438 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u044f \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u043b:<\/p>\n<pre><code class=\"cs\">  private void writeData(Java.Lang.String data)         {             try             {                 outStream = btSocket.OutputStream;             }             catch (System.Exception e)             {                 System.Console.WriteLine(&quot;Error with OutputStream when write to Serial port&quot; + e.Message);             }              Java.Lang.String message = data;              byte[] msgBuffer = message.GetBytes();              try             {                 outStream.Write(msgBuffer, 0, msgBuffer.Length);                 System.Console.WriteLine(&quot;Message sent&quot;);             }             catch (System.Exception e)             {                 System.Console.WriteLine(&quot;Error with  when write message to Serial port&quot; + e.Message);                 status.Text = &quot;Error with  when write message to Serial port&quot;;             }         }       public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)         {             Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);              base.OnRequestPermissionsResult(requestCode, permissions, grantResults);         }     }  } <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u043a\u043e\u0434\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0430 \u0437\u0430\u0440\u043e\u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a Bluetooth.<\/p>\n<p>  \u041d\u0443 \u0432\u043e\u0442 \u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c <a href=\"https:\/\/docs.microsoft.com\/ru-ru\/xamarin\/android\/get-started\/installation\/set-up-device-for-development\" rel=\"nofollow\">\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430<\/a> \u0434\u043b\u044f <a href=\"https:\/\/docs.microsoft.com\/ru-ru\/xamarin\/android\/deploy-test\/debugging\/debug-on-device?tabs=windows\" rel=\"nofollow\">\u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/a>.<\/p>\n<p>  \u041a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043d\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jm\/vs\/5z\/jmvs5zdesg9lvfprcdbp5-cebes.png\"><br \/>  <a name=\"IV\"><\/a>  <\/p>\n<h2> \u0427\u0430\u0441\u0442\u044c IV: \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0412\u043e\u0442 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u043d\u0430\u0442\u0443\u0440\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8b\/4r\/kv\/8b4rkvzlvtcl-nnqh-fb1dm8cey.png\"><\/p>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a\u0438\u043c \u0431\u044b\u043b \u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 \u043d\u0430 Android. <\/p>\n<p>  \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e VS 2019 \u0438 Xamarin \u043d\u0430 \u043c\u043e\u0435\u043c \u0441\u0442\u0430\u0440\u0435\u043d\u044c\u043a\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. <\/p>\n<p>  \u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u043f\u0435\u043b \u0441\u044a\u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u044d\u0442\u0438\u0445 \u043c\u044f\u0433\u043a\u0438\u0445 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0445 \u0431\u0443\u043b\u043e\u043a \u0434\u0430 \u0432\u044b\u043f\u0438\u0442\u044c \u0447\u0430\u044e. \u0422\u0430\u043a\u0436\u0435 \u0441\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0443\u0431\u043e\u0433\u043e\u0435, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u00ab\u0432\u043a\u043b\/\u0432\u044b\u043a\u043b\u00bb \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u044f \u043b\u0438\u0448\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u0438\u0451\u043c\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f .NET, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u043e, \u0447\u0442\u043e \u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442, \u044f \u0441\u043c\u043e\u0433 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u043a\u0430, \u0437\u0430 \u0434\u0435\u043d\u044c \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0438\u0437\u043a\u0438\u0439.<\/p>\n<p>  \u042f \u0442\u0430\u043a \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b CANNY \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0442\u044e\u043d\u0438\u043d\u0433\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0442\u0430\u043a, \u0447\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u00ab\u0444\u0438\u0447\u0443\u00bb \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a \u043d\u0435\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u0438 \u043e\u0442 \u0431\u043e\u0440\u0442\u043e\u0432\u043e\u0439 \u0441\u0435\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0436\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0447\u0442\u043e \u0438 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 12 \u0412 \u0432\u043c\u0435\u0441\u0442\u043e 5 \u0412). \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c Bluetooth \u0430\u0434\u0430\u043f\u0442\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043d\u0435\u043d\u0430\u0440\u043e\u043a\u043e\u043c \u043d\u0435 \u0432\u044b\u0448\u0435\u043b \u0438\u0437 \u0441\u0442\u0440\u043e\u044f.<\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u043e\u0439, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u043d\u0435 \u0437\u0440\u044f \u0438 \u043e\u043d\u0430 \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f.<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/500454\/\"> https:\/\/habr.com\/ru\/post\/500454\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/500454\/\">\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/post\/497324\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u044f \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c CANNY 3 tiny \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e UART \u043a bluetooth. \u0418 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430 \u044d\u0442\u0438\u0445 \u043c\u0430\u0439\u0441\u043a\u0438\u0445 \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u0440\u0430\u0437\u0433\u0443\u043b\u044f\u0435\u0448\u044c\u0441\u044f, \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432\u0440\u0435\u043c\u044f \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0439 \u0438 \u0442\u0430\u043a\u0438 \u0441\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435. \u041d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043a Bluetooth \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0443 HC-06, \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0425\u0430\u0431\u0440\u0430. <\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0451 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c, \u043d\u043e \u0435\u0449\u0435 \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0441\u0445\u0435\u043c\u044b \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Android \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f C# \u0438 Xamarin.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u00ab\u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a\u0438\u00bb \u0438 \u0433\u0435\u0440\u043a\u043e\u043d\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043b\u044e\u0431\u043b\u044e \u044f, \u043c\u0438\u043b\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/a6\/2t\/ai\/a62taim0dwnonrmzzjhicax8q-g.png\">  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-303077","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/303077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=303077"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/303077\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=303077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=303077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=303077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}