public override void OnInspectorGUI() { this.serializedObject.Update(); #if UNITY_STANDALONE CommSerial socket = (CommSerial)target; GUI.enabled = !socket.IsOpen; #if (UINTY_STANDALONE_WIN || UNITY_EDITOR_WIN) EditorGUILayout.LabelField(string.Format("Port Name: {0}", socket.device.name)); #elif (UINTY_STANDALONE_OSX || UNITY_EDITOR_OSX) EditorGUILayout.LabelField(string.Format("Port Name: {0}", socket.device.address)); #endif EditorGUILayout.BeginHorizontal(); int index = -1; string[] list = new string[socket.foundDevices.Count]; for (int i = 0; i < list.Length; i++) { list[i] = socket.foundDevices[i].name; if (socket.device.Equals(socket.foundDevices[i])) { index = i; } } index = EditorGUILayout.Popup(" ", index, list); if (index >= 0) { socket.device = new CommDevice(socket.foundDevices[index]); } if (GUILayout.Button("Search", GUILayout.Width(60f)) == true) { socket.StartSearch(); } EditorGUILayout.EndHorizontal(); GUI.enabled = true; #else EditorGUILayout.HelpBox("This component only can work on standalone platform(windows, osx, linux..)", MessageType.Error); #endif EditorGUILayout.PropertyField(baudrate, new GUIContent("Baudrate")); EditorGUILayout.PropertyField(dtrReset, new GUIContent("DTR Reset")); foldout = EditorGUILayout.Foldout(foldout, "Events"); if (foldout) { EditorGUILayout.PropertyField(OnOpen, new GUIContent("OnOpen")); EditorGUILayout.PropertyField(OnClose, new GUIContent("OnClose")); EditorGUILayout.PropertyField(OnOpenFailed, new GUIContent("OnOpenFailed")); EditorGUILayout.PropertyField(OnErrorClosed, new GUIContent("OnErrorClosed")); EditorGUILayout.PropertyField(OnStartSearch, new GUIContent("OnStartSearch")); EditorGUILayout.PropertyField(OnStopSearch, new GUIContent("OnStopSearch")); } this.serializedObject.ApplyModifiedProperties(); }
// Use this for initialization void Start() { _serial = FindObjectOfType <CommSerial>(); if (_serial == null) { Debug.LogError("Can not find CommSerial!"); } else { _serial.OnOpen.AddListener(OnSerialOpened); } }
public override void OnInspectorGUI() { this.serializedObject.Update(); GUI.enabled = false; EditorGUILayout.PropertyField(script, true, new GUILayoutOption[0]); GUI.enabled = true; #if UNITY_STANDALONE #if UNITY_5_6_OR_NEWER #if NET_2_0 CommSerial socket = (CommSerial)target; GUI.enabled = !socket.IsOpen; #if UNITY_EDITOR_WIN EditorGUILayout.LabelField(string.Format("Port Name: {0}", socket.device.name)); #elif UNITY_EDITOR_OSX EditorGUILayout.LabelField(string.Format("Port Name: {0}", socket.device.address)); #endif EditorGUILayout.BeginHorizontal(); int index = -1; string[] list = new string[socket.foundDevices.Count]; for (int i = 0; i < list.Length; i++) { list[i] = socket.foundDevices[i].name; if (deviceName.stringValue.Equals(socket.foundDevices[i].name)) { index = i; } } int newIndex = EditorGUILayout.Popup(" ", index, list); if (newIndex != index) { CommDevice newDevice = socket.foundDevices[newIndex]; deviceName.stringValue = newDevice.name; deviceAddress.stringValue = newDevice.address; deviceArgs.ClearArray(); deviceArgs.arraySize = newDevice.args.Count; for (int i = 0; i < newDevice.args.Count; i++) { SerializedProperty arg = deviceArgs.GetArrayElementAtIndex(i); arg.stringValue = newDevice.args[i]; } } if (GUILayout.Button("Search", GUILayout.Width(60f)) == true) { socket.StartSearch(); } EditorGUILayout.EndHorizontal(); GUI.enabled = true; #else EditorGUILayout.HelpBox("You must set as '.Net 2.0' for API Compatibility Level in PlayerSetting.", MessageType.Error); #endif #else CommSerial socket = (CommSerial)target; GUI.enabled = !socket.IsOpen; #if UNITY_EDITOR_WIN EditorGUILayout.LabelField(string.Format("Port Name: {0}", socket.device.name)); #elif UNITY_EDITOR_OSX EditorGUILayout.LabelField(string.Format("Port Name: {0}", socket.device.address)); #endif EditorGUILayout.BeginHorizontal(); int index = -1; string[] list = new string[socket.foundDevices.Count]; for (int i = 0; i < list.Length; i++) { list[i] = socket.foundDevices[i].name; if (deviceName.stringValue.Equals(socket.foundDevices[i].name)) { index = i; } } int newIndex = EditorGUILayout.Popup(" ", index, list); if (newIndex != index) { CommDevice newDevice = socket.foundDevices[newIndex]; deviceName.stringValue = newDevice.name; deviceAddress.stringValue = newDevice.address; deviceArgs.ClearArray(); deviceArgs.arraySize = newDevice.args.Count; for (int i = 0; i < newDevice.args.Count; i++) { SerializedProperty arg = deviceArgs.GetArrayElementAtIndex(i); arg.stringValue = newDevice.args[i]; } } if (GUILayout.Button("Search", GUILayout.Width(60f)) == true) { socket.StartSearch(); } EditorGUILayout.EndHorizontal(); GUI.enabled = true; #endif #else EditorGUILayout.HelpBox("This component only can work on standalone platform(windows, osx, linux..)", MessageType.Error); #endif EditorGUILayout.PropertyField(baudrate, new GUIContent("Baudrate")); EditorGUILayout.PropertyField(dtrReset, new GUIContent("DTR Reset")); foldout = EditorGUILayout.Foldout(foldout, "Events"); if (foldout) { EditorGUILayout.PropertyField(OnOpen, new GUIContent("OnOpen")); EditorGUILayout.PropertyField(OnClose, new GUIContent("OnClose")); EditorGUILayout.PropertyField(OnOpenFailed, new GUIContent("OnOpenFailed")); EditorGUILayout.PropertyField(OnErrorClosed, new GUIContent("OnErrorClosed")); EditorGUILayout.PropertyField(OnStartSearch, new GUIContent("OnStartSearch")); EditorGUILayout.PropertyField(OnStopSearch, new GUIContent("OnStopSearch")); } this.serializedObject.ApplyModifiedProperties(); }
/// <summary> /// Detailed Scan for all available devices in multimode (FTDI, libftdi, USB and Serial). Returns ScanAllResult with 4 /// specific ScanResult classes, each with Status and List of Devices - Bsl430NetDevice childs. /// </summary> /// <exception cref="Bsl430NetException"></exception> public ScanAllResult ScanAllEx(ScanOptions ScanOpt = ScanOptions.None) { Status status_ftdi; Status status_libftdi; Status status_usb; Status status_serial; List <FTDI_Device> ftdiDevices; List <Libftdi_Device> libftdiDevices; List <USB_HID_Device> usbDevices; List <Serial_Device> serialDevices; try { using (IDevice dev_ftdi = new CommFTD2XX()) { status_ftdi = dev_ftdi.Scan(out ftdiDevices, ScanOpt); } } catch (Exception ex) { ftdiDevices = new List <FTDI_Device>(); status_ftdi = Utils.StatusCreate(465, ex.Message); } try { using (IDevice dev_libftdi = new CommLibftdi()) { status_libftdi = dev_libftdi.Scan(out libftdiDevices, ScanOpt); } } catch (Exception ex) { libftdiDevices = new List <Libftdi_Device>(); status_libftdi = Utils.StatusCreate(465, ex.Message); } try { using (IDevice dev_usb = new CommUSB()) { status_usb = dev_usb.Scan(out usbDevices, ScanOpt); } } catch (Exception ex) { usbDevices = new List <USB_HID_Device>(); status_usb = Utils.StatusCreate(465, ex.Message); } try { using (IDevice dev_uart = new CommSerial()) { status_serial = dev_uart.Scan(out serialDevices, ScanOpt); } } catch (Exception ex) { serialDevices = new List <Serial_Device>(); status_serial = Utils.StatusCreate(465, ex.Message); } return(new ScanAllResult() { FtdiDevices = new ScanResult <FTDI_Device>() { Status = status_ftdi, Devices = ftdiDevices }, LibftdiDevices = new ScanResult <Libftdi_Device>() { Status = status_libftdi, Devices = libftdiDevices }, UsbDevices = new ScanResult <USB_HID_Device>() { Status = status_usb, Devices = usbDevices }, SerialDevices = new ScanResult <Serial_Device>() { Status = status_serial, Devices = serialDevices } }); }