{"id":3606,"date":"2019-07-04T11:34:24","date_gmt":"2019-07-04T02:34:24","guid":{"rendered":"https:\/\/nantoka.filmm.info\/blog\/?p=3606"},"modified":"2019-07-04T11:41:34","modified_gmt":"2019-07-04T02:41:34","slug":"unity-arduino-unity%e9%96%8b%e7%99%ba%e3%83%a1%e3%83%a22019","status":"publish","type":"post","link":"https:\/\/nantoka.filmm.info\/blog\/?p=3606","title":{"rendered":"unity->Arduino->Unity\u958b\u767a\u30e1\u30e22019"},"content":{"rendered":"<p>UnitySerianHandloer\u306eUnity2018\u3067\u4f7f\u3048\u305f\u3084\u3064<\/p>\n<p>&nbsp;<\/p>\n<p>SerialHandler.cs<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">using UnityEngine;\r\nusing System.Collections;\r\nusing System.IO.Ports;\r\nusing System.Threading;\r\n\r\npublic class SerialHandler : MonoBehaviour\r\n{\r\n    public delegate void SerialDataReceivedEventHandler(string message);\r\n    public event SerialDataReceivedEventHandler OnDataReceived = delegate { };\r\n\r\n    \/\/\u30dd\u30fc\u30c8\u540d\r\n    \/\/\u4f8b\r\n    \/\/Linux\u3067\u306f\/dev\/ttyUSB0\r\n    \/\/windows\u3067\u306fCOM1\r\n    \/\/Mac\u3067\u306f\/dev\/tty.usbmodem1421\u306a\u3069\r\n    public string portName = \"\/dev\/cu.usbmodem2101\";\/\/mac\r\n    public int baudRate = 9600;\r\n\r\n    private SerialPort serialPort_;\r\n    private Thread thread_;\r\n    private bool isRunning_ = false;\r\n\r\n    private string message_;\r\n    private bool isNewMessageReceived_ = false;\r\n\r\n    void Awake()\r\n    {\r\n        Open();\r\n    }\r\n\r\n    void Update()\r\n    {\r\n        if (isNewMessageReceived_)\r\n        {\r\n            OnDataReceived(message_);\r\n        }\r\n        isNewMessageReceived_ = false;\r\n    }\r\n\r\n    void OnDestroy()\r\n    {\r\n        Close();\r\n    }\r\n\r\n    private void Open()\r\n    {\r\n        serialPort_ = new SerialPort(portName, baudRate, Parity.None, 8, StopBits.One);\r\n        \/\/\u307e\u305f\u306f\r\n        \/\/serialPort_ = new SerialPort(portName, baudRate);\r\n        serialPort_.ReadTimeout = 20;\/\/Add this 2019\r\n        serialPort_.Open();\r\n        serialPort_.NewLine = \"\\n\";\/\/Add this 2019\r\n\r\n        isRunning_ = true;\r\n\r\n        thread_ = new Thread(Read);\r\n        thread_.Start();\r\n    }\r\n\r\n    private void Close()\r\n    {\r\n        \/\/isNewMessageReceived_ = false;\r\n        isRunning_ = false;\r\n\r\n        if (thread_ != null &amp;&amp; thread_.IsAlive)\r\n        {\r\n            thread_.Join();\r\n        }\r\n\r\n        if (serialPort_ != null &amp;&amp; serialPort_.IsOpen)\r\n        {\r\n            serialPort_.Close();\r\n            serialPort_.Dispose();\r\n        }\r\n    }\r\n\r\n    private void Read()\r\n    {\r\n        while (isRunning_ &amp;&amp; serialPort_ != null &amp;&amp; serialPort_.IsOpen)\r\n        {\r\n            try\r\n            {\r\n                message_ = serialPort_.ReadLine();\r\n                isNewMessageReceived_ = true;\r\n            }\r\n            catch (System.Exception e)\r\n            {\r\n            \/\/    Debug.LogWarning(e.Message);\r\n            }\r\n        }\r\n    }\r\n\r\n    public void Write(string message)\r\n    {\r\n        try\r\n        {\r\n            serialPort_.Write(message);\r\n        }\r\n        catch (System.Exception e)\r\n        {\r\n            Debug.LogWarning(e.Message);\r\n        }\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Unity\u30dc\u30bf\u30f3\u5074\u30b9\u30af\u30ea\u30d7\u30c8<\/p>\n<p>Btn.cs<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"wpcustom\">using System.Collections;\r\nusing System.Collections.Generic;\r\nusing UnityEngine;\r\nusing UnityEngine.UI;\r\n\r\npublic class Btn : MonoBehaviour\r\n{\r\n    \/\/\u5148\u307b\u3069\u4f5c\u6210\u3057\u305f\u30af\u30e9\u30b9\r\n    public SerialHandler serialHandler;\r\n\r\n\r\n  void Start()\r\n    {\r\n        \/\/\u4fe1\u53f7\u3092\u53d7\u4fe1\u3057\u305f\u3068\u304d\u306b\u3001\u305d\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u51e6\u7406\u3092\u884c\u3046\r\n        serialHandler.OnDataReceived += OnDataReceived;\r\n    }\r\n\r\n    void Updata()\r\n    {\r\n        \/\/\u6587\u5b57\u5217\u3092\u9001\u4fe1\r\n       \/\/ serialHandler.Write(\"hogehoge\");\r\n    }\r\n\r\n    \/\/\u53d7\u4fe1\u3057\u305f\u4fe1\u53f7(message)\u306b\u5bfe\u3059\u308b\u51e6\u7406\r\n    void OnDataReceived(string message)\r\n    {\r\n        var data = message.Split(\r\n                new string[] { \"\\t\" }, System.StringSplitOptions.None);\r\n        if (data.Length &lt; 2) return;\r\n\r\n        try\r\n        {\r\n         \r\n        }\r\n        catch (System.Exception e)\r\n        {\r\n            Debug.LogWarning(e.Message);\r\n        }\r\n    }\r\n\r\n\r\n\r\n    \/\/\/\/\/\u3053\u3053\u304b\u3089\u8ffd\u52a0\u3057\u307e\u3059\r\n    \/\/\/ \r\n    \/\/\/ \r\n    \/\/\/ \r\n    \/\/\/\r\n    public void sendOn()\r\n    {\r\n        \/\/Arduino\u306b\u6587\u5b57\u5217on\u3092\u9001\u308b\r\n        serialHandler.Write(\"4\");\r\n    }\r\n\r\n    public void sendOff()\r\n    {\r\n        \/\/\r\n        serialHandler.Write(\"5\");\r\n    }\r\n    public void ledOn()\r\n    {\r\n        \/\/\r\n        serialHandler.Write(\"6\");\r\n    }\r\n\r\n    public void ledOff()\r\n    {\r\n        \/\/\r\n        serialHandler.Write(\"7\");\r\n    }\r\n\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Arduino\u5074\u30b3\u30fc\u30c9<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">#include &lt;Servo.h&gt;\r\nconst int LED_PIN = 13;\r\nint SERVO_SOCKET = 9;\r\nServo servo;\r\nString InByte_strings;\r\nint InByte;\r\n\r\nvoid setup() {\r\n Serial.begin(9600);\r\n pinMode( LED_PIN, OUTPUT );\r\nservo.attach( SERVO_SOCKET );\r\n}\r\n\r\nvoid loop() {\r\n  \r\n  if(Serial.available()&gt;0){\r\n    InByte_strings=Serial.readStringUntil(';');\r\n    InByte=InByte_strings.toInt();\r\n    Serial.println(InByte);\r\n\r\n     switch (InByte){\r\n    case 4:\r\n      servo.write( 90 );\r\n      break;\r\n    case 5:\r\n      servo.write( 180 );\r\n      break;\r\n      case 6:\r\n      digitalWrite(LED_PIN,HIGH);\r\n      break;\r\n      case 7:\r\n      digitalWrite(LED_PIN,LOW);\r\n      break;\r\n  }\r\n}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UnitySerianHandloer\u306eUnity2018\u3067\u4f7f\u3048\u305f\u3084\u3064 &nbsp; SerialHandler.cs using UnityEngine; using System.Collections; using &hellip; <a href=\"https:\/\/nantoka.filmm.info\/blog\/?p=3606\" class=\"more-link\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"screen-reader-text\">unity->Arduino->Unity\u958b\u767a\u30e1\u30e22019<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,13,2],"tags":[],"class_list":["post-3606","post","type-post","status-publish","format-standard","hentry","category-arduino","category-c","category-unity"],"_links":{"self":[{"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3606"}],"version-history":[{"count":4,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3606\/revisions"}],"predecessor-version":[{"id":3610,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3606\/revisions\/3610"}],"wp:attachment":[{"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}