using System; using System.Collections.Generic; using System.Data; using TMPro; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; public class SerialPortTest : MonoBehaviour { public Button SendButton; public Button ArrowButton; public Button MagazinesOnButton; public Button MagazinesOffButton; public TMP_InputField InputField; private ArrowSerialPort targetPort; public TMP_InputField PortInputField; public SerialPortExample[] SerialPortExampleGroup; private void OnEnable() { PortInputField.text = "1"; InputField.text = string.Empty; SendButton.onClick.AddListener(OnSendPortData); DontDestroyOnLoad(this); targetPort = GameObject.FindObjectOfType(); ArrowButton.onClick.AddListener(OnShoot); MagazinesOnButton.onClick.AddListener(OnMagazinesOn); MagazinesOffButton.onClick.AddListener(OnMagazinesOff); } private void OnShoot() { List data = new List(); data.Add(0xaa); data.Add(0x81); data.Add(0x07); data.Add(0x1f); data.Add(0x24); data.Add(0xbd); data.Add(0x55); targetPort?.TestRead(data.ToArray()); } private void OnMagazinesOff() { List data = new List(); data.Add(0xaa); data.Add(0x84); data.Add(0x06); data.Add(0x00); data.Add(0x24); data.Add(0xbd); data.Add(0x55); targetPort?.TestRead(data.ToArray()); } private void OnMagazinesOn() { List data = new List(); data.Add(0xaa); data.Add(0x84); data.Add(0x06); data.Add(0x01); data.Add(0x24); data.Add(0xbd); data.Add(0x55); targetPort?.TestRead(data.ToArray()); } private void OnSendPortData() { SerialPortExampleGroup = FindObjectsOfType(); var portIndex = int.Parse(PortInputField.text); var msg = InputField.text; List data = new List(); var strs = msg.Split(' '); for (int i = 0; i < strs.Length; i++) { data.Add(Convert.ToByte(strs[i], 16)); } switch (portIndex) { case 0://弓箭串口 targetPort.TestRead(data.ToArray()); break; case 4://投币盒子 foreach (var item in SerialPortExampleGroup) { if (item.name.Contains("com4")) { item.PrintFrame(data.ToArray()); break; } } break; case 6://投币机 foreach (var item in SerialPortExampleGroup) { if (item.name.Contains("com6")) { break; } } break; } } private void Update() { if (Input.GetKeyDown(KeyCode.Space)) { AimHandler.ins.ExitIntoEvent(); } } }