using System; using UnityEngine; using System.Collections; using System.IO.Ports; using Random = System.Random; public class Serial { private static Serial instance; private int rnd = 0; private Serial() { } ~Serial() { serialPort.Close(); serialPort.Dispose(); } public static Serial Instance { get { if (instance == null) { instance = new Serial(); } return instance; } } public bool enabled = false; public SerialPort serialPort; public int[] values = new int[18]; public static string ByteArrayToString(byte[] ba) { return BitConverter.ToString(ba).Replace("-", " "); } public void send(int start, int a, int b, int c) { if (serialPort == null) { serialPort = new SerialPort(@"\\.\" + "COM4", 250000); try { serialPort.Parity = Parity.Even; serialPort.StopBits = StopBits.One; serialPort.DataBits = 8; serialPort.Open(); serialPort.DiscardOutBuffer(); serialPort.DiscardInBuffer(); System.Threading.Thread.Sleep(1000); enabled = true; } catch { enabled = false; } } if (enabled) { values[start] = a; values[++start] = b; values[++start] = c; if (serialPort is SerialPort && start == 17) { // string send = "s"; byte[] send = new byte[18+1+2]; send[18] = 0x00; send[19] = 0xfe; send[20] = 0xff; // send[21] = 0xff; // if (rnd == 0) // { //rnd = 1; for (int i = 0; i < 18; i++) { //string crc = ((i) * (values[i])) + ""; //send = send + (i).ToString() + "_" + (values[i]).ToString() + "," + crc + "="; byte[] intBytes = BitConverter.GetBytes(values[i]); if (BitConverter.IsLittleEndian) Array.Reverse(intBytes); send[i] = intBytes[3]; send[18] += send[i]; } // Debug.Log(ByteArrayToString(send)); serialPort.Write(send, 0, 18+1+2); serialPort.BaseStream.Flush(); // } // else // { // rnd = 0; // for (int i = 10; i < 18; i++) // { // string crc = ((i + 3) * (values[i])) + ""; // // send = send + (i + 2).ToString() + "_" + (values[i]).ToString() + "," + crc + "="; // } // // Debug.Log(send); // serialPort.Write(send); // } } } } }