SerialPortUtilityProConfiger.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System;
  5. using System.IO;
  6. using System.Text;
  7. using Newtonsoft.Json;
  8. /// <summary>
  9. /// 通常来说设置产品的VID/PID就足以识别硬件了
  10. /// 填入序列号将导致识别唯一
  11. /// 仅读取配置
  12. /// </summary>
  13. public class SerialPortUtilityProConfiger : MonoBehaviour
  14. {
  15. public static SerialPortUtilityProConfiger Instance;
  16. #region Path
  17. private string spupConfigPath = $"{Application.streamingAssetsPath}/configs/serialportutilityproconfig.json";
  18. #endregion
  19. #region Value
  20. [SerializeField] private List<DeviceInfoData> deviceInfoDatas;
  21. #endregion
  22. // ==================================================
  23. private void Awake() => Init();
  24. // ==================================================
  25. private void Init()
  26. {
  27. Instance = this;
  28. ReadConfig();
  29. return;
  30. }
  31. private void ReadConfig()
  32. {
  33. string ssupSettingJson = File.ReadAllText(spupConfigPath, Encoding.UTF8);
  34. Dictionary<string, List<string>> dic = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(ssupSettingJson);
  35. List<string> DeviceInfos = dic["device_info"];
  36. for (int i = 0; i < DeviceInfos.Count; i++)
  37. {
  38. DeviceInfoData tempDID = new DeviceInfoData();
  39. string[] infoSlice = DeviceInfos[i].Split('_');
  40. if (infoSlice.Length == 3)
  41. {
  42. tempDID.VendorID = infoSlice[0];
  43. tempDID.ProductID = infoSlice[1];
  44. tempDID.SerialNumber = infoSlice[2];
  45. }
  46. else
  47. {
  48. tempDID.VendorID = infoSlice[0];
  49. tempDID.ProductID = infoSlice[1];
  50. tempDID.SerialNumber = null;
  51. }
  52. deviceInfoDatas.Add(tempDID);
  53. }
  54. return;
  55. }
  56. // ==================================================
  57. public string GetDeviceVendorID(int index)
  58. {
  59. return deviceInfoDatas[index].VendorID;
  60. }
  61. public string GetDeviceProductID(int index)
  62. {
  63. return deviceInfoDatas[index].ProductID;
  64. }
  65. public string GetDeviceSerialNumber(int index)
  66. {
  67. return deviceInfoDatas[index].SerialNumber;
  68. }
  69. // ==================================================
  70. #region Value
  71. [Serializable]
  72. public class DeviceInfoData
  73. {
  74. public string VendorID;
  75. public string ProductID;
  76. public string SerialNumber;
  77. }
  78. #endregion
  79. }