ATCommandHelper.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Wit.SDK.Modular.Sensor.Device;
  7. namespace Wit.SDK.Modular.Sensor.Utils
  8. {
  9. /// <summary>
  10. /// AT指令帮助类
  11. /// </summary>
  12. public class ATCommandHelper
  13. {
  14. /// <summary>
  15. /// 发送读取的命令,并且查找返回结果
  16. /// </summary>
  17. /// <param name="sendData"></param>
  18. /// <param name="condition"></param>
  19. /// <returns></returns>
  20. public static string SendReadCommandAndFindLine(DeviceModel deviceModel, string sendData, string[] condition, int repeat = 3)
  21. {
  22. string result = null;
  23. int i = 0;
  24. // 如果没有结果就重复指定次数
  25. while (++i <= repeat)
  26. {
  27. string data = SendReadCommand(deviceModel, sendData);
  28. for (int j = 0; j < condition.Length; j++)
  29. {
  30. result = FindLine(data, condition[j]);
  31. if (!string.IsNullOrEmpty(result))
  32. {
  33. return result;
  34. }
  35. }
  36. }
  37. return null;
  38. }
  39. /// <summary>
  40. /// 发送读取的命令
  41. /// </summary>
  42. /// <param name="sendData"></param>
  43. /// <returns></returns>
  44. public static string SendReadCommand(DeviceModel deviceModel, string sendData)
  45. {
  46. byte[] returnData;
  47. deviceModel.SendData(Encoding.Default.GetBytes(sendData), out returnData, true, 900, 2);
  48. string result = Encoding.Default.GetString(returnData);
  49. return result;
  50. }
  51. /// <summary>
  52. /// 查找返回结果
  53. /// </summary>
  54. /// <param name="data"></param>
  55. /// <param name="condition"></param>
  56. /// <returns></returns>
  57. public static string FindLine(string data, string condition)
  58. {
  59. string[] rows = data.Split('\r', '\n');
  60. for (int i = 0; i < rows.Length; i++)
  61. {
  62. if (rows[i].Contains(condition))
  63. {
  64. return rows[i];
  65. }
  66. }
  67. return null;
  68. }
  69. }
  70. }