SPUPTestScriptSimple.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System;
  5. public class SPUPTestScriptSimple : MonoBehaviour
  6. {
  7. //var
  8. public SerialPortUtility.SerialPortUtilityPro serialPort = null;
  9. public KeyCode writeSimple = KeyCode.Alpha1;
  10. public KeyCode writeList = KeyCode.Alpha2;
  11. public KeyCode writeDictionary = KeyCode.Alpha3;
  12. public KeyCode writeBinary = KeyCode.Alpha4;
  13. System.Diagnostics.Stopwatch sw;
  14. System.IO.StreamWriter streams;
  15. // Use this for initialization
  16. void Start () {
  17. LogConnectedDeviceList();
  18. sw = new System.Diagnostics.Stopwatch();
  19. streams = new System.IO.StreamWriter("D:\\data.txt", false, System.Text.Encoding.UTF8);
  20. }
  21. private void OnDestroy()
  22. {
  23. streams.Close();
  24. }
  25. // Update is called once per frame
  26. void Update ()
  27. {
  28. if (serialPort != null)
  29. {
  30. if (Input.GetKeyDown(writeSimple))
  31. {
  32. //send
  33. serialPort.WriteCRLF("TestData");
  34. }
  35. if (Input.GetKeyDown(writeList))
  36. {
  37. List<string> dataArray = new List<string>();
  38. dataArray.Add("AAA");
  39. dataArray.Add("BBB");
  40. dataArray.Add("CCC");
  41. serialPort.Write(dataArray,",","<CR><LF>");
  42. //AAA,BBB,CCC<CR><LF>
  43. }
  44. if (Input.GetKeyDown(writeDictionary))
  45. {
  46. Dictionary<string, string> dataArray = new Dictionary<string, string>();
  47. dataArray.Add("AAA", "BBB");
  48. dataArray.Add("CCC", "DDD");
  49. serialPort.Write(dataArray, ",", "<CR><LF>");
  50. //AAA,BBB,CCC,DDD<CR><LF>
  51. }
  52. if (Input.GetKeyDown(writeBinary))
  53. {
  54. byte[] bin = new byte[6] { 0x00, 0x01, 0x02, 0x03, 0x04,0xFF };
  55. serialPort.Write(bin);
  56. }
  57. //for Arduino micro leonardo
  58. if (Input.GetKeyDown(KeyCode.R))
  59. {
  60. serialPort.Close();
  61. int saveBaudRate = serialPort.BaudRate;
  62. serialPort.BaudRate = 1200; //Reset Command
  63. serialPort.Open();
  64. //Reset
  65. serialPort.Close();
  66. serialPort.BaudRate = saveBaudRate;
  67. }
  68. }
  69. }
  70. //Example Read Data : AAA,BBB,CCC,DDD<CR><LF>
  71. //for List data
  72. public void ReadComplateList(object data)
  73. {
  74. var text = data as List<string>;
  75. for (int i = 0; i < text.Count; ++i)
  76. Debug.Log(text[i]);
  77. }
  78. //Sensor Example
  79. public void ReadComplateSensorAB(object data)
  80. {
  81. var text = data as List<string>;
  82. if(text.Count != 4)
  83. return; //discard
  84. string[] SensorA = text[1].Split(",".ToCharArray());
  85. string[] SensorB = text[3].Split(",".ToCharArray());
  86. Vector3 SensorAv = new Vector3(float.Parse(SensorA[0]), float.Parse(SensorA[1]), float.Parse(SensorA[2]));
  87. Vector3 SensorBv = new Vector3(float.Parse(SensorB[0]), float.Parse(SensorB[1]), float.Parse(SensorB[2]));
  88. Debug.Log(SensorAv);
  89. Debug.Log(SensorBv);
  90. }
  91. //for Dictonary data
  92. public void ReadComplateDictonary(object data)
  93. {
  94. var text = data as Dictionary<string, string>;
  95. foreach (KeyValuePair<string, string> kvp in text)
  96. {
  97. Debug.Log(string.Format("{0}={1}", kvp.Key, kvp.Value));
  98. }
  99. }
  100. //for String data
  101. public void ReadComplateString(object data)
  102. {
  103. var text = data as string;
  104. Debug.Log(text);
  105. }
  106. //for Streaming Binary Data
  107. public void ReadStreamingBinary(object data)
  108. {
  109. var bin = data as byte[];
  110. string byteArray = System.BitConverter.ToString(bin);
  111. //Debug.Log(byteArray);
  112. //Debug.Log(sw.Elapsed.Milliseconds);
  113. streams.WriteLine(sw.Elapsed.Milliseconds);
  114. sw.Restart();
  115. }
  116. //for System Binary data
  117. public void ReadComplateProcessing(object data)
  118. {
  119. var binData = data as byte[]; //total 14 byte
  120. string header = System.Text.Encoding.ASCII.GetString(binData, 0, 3); //Header
  121. byte[] mainData = new byte[9]; //9byte
  122. byte[] checkSum = new byte[2]; //2byte
  123. Array.Copy(binData, 3, mainData, 0, 9); //main data 3-12 : 9 byte
  124. Array.Copy(binData, 12, checkSum, 0, 2); //sum data 12-14 : 2byte
  125. //processing
  126. ushort checksumINT = BitConverter.ToUInt16(checkSum,0);
  127. // This is heavy!
  128. //Debug.Log(header);
  129. //mainData[]
  130. //Debug.Log(checksumINT);
  131. }
  132. //for String data
  133. public void ReadComplateModbus(object data)
  134. {
  135. var mudbus = data as SerialPortUtility.SPUPMudbusData;
  136. string byteArray = System.BitConverter.ToString(mudbus.Data);
  137. Debug.Log(string.Format("ADDRESS:{0}, FUNCTION:{1}, DATA:{2}", mudbus.Address, mudbus.Function, byteArray));
  138. bool isRtuMode = serialPort.ReadProtocol == SerialPortUtility.SerialPortUtilityPro.MethodSystem.ModbusRTU;
  139. serialPort.Write(mudbus, isRtuMode); //echo
  140. }
  141. //Deviceinfo
  142. public void LogConnectedDeviceList()
  143. {
  144. SerialPortUtility.SerialPortUtilityPro.DeviceInfo[] devicelist =
  145. SerialPortUtility.SerialPortUtilityPro.GetConnectedDeviceList(serialPort.OpenMethod);
  146. foreach (SerialPortUtility.SerialPortUtilityPro.DeviceInfo d in devicelist)
  147. {
  148. Debug.Log("VendorID:" + d.Vendor + " DeviceName:" + d.SerialNumber);
  149. }
  150. }
  151. }