GeneralAT.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package QuectelAT
  2. import (
  3. "fmt"
  4. "strconv"
  5. )
  6. // SetEcho 设置是否开启回显
  7. func (q *Quectel) SetEcho(Echo bool) (err error) {
  8. if Echo {
  9. err = q.SendCmd("ATE1")
  10. } else {
  11. err = q.SendCmd("ATE0")
  12. }
  13. for q.ioScanner.Scan() {
  14. var parse Sentence
  15. parse = Parse(q.ioScanner.Text())
  16. if parse.DataType() == OK {
  17. return
  18. } else if parse.DataType() == ERROR {
  19. return parse.(SentenceERROR).err
  20. }
  21. }
  22. return
  23. }
  24. type CSQ struct {
  25. RSSI int `json:"RSSI"`
  26. BER int `json:"BER"`
  27. }
  28. func (q *Quectel) GetCSQ() (data CSQ, err error) {
  29. err = q.SendCmd("AT+CSQ")
  30. for q.ioScanner.Scan() {
  31. var parse Sentence
  32. parse = Parse(q.ioScanner.Text())
  33. println(parse.DataType())
  34. if parse.DataType() == CMD {
  35. println(parse.(SentenceCMD).CMD)
  36. }
  37. if (parse.DataType() == CMD) && (parse.(SentenceCMD).CMD == "CSQ") {
  38. RSSI, err := strconv.Atoi(parse.(SentenceCMD).Message[0])
  39. if err != nil {
  40. return CSQ{}, err
  41. }
  42. BER, err := strconv.Atoi(parse.(SentenceCMD).Message[1])
  43. if err != nil {
  44. return CSQ{}, err
  45. }
  46. return CSQ{
  47. RSSI: RSSI,
  48. BER: BER,
  49. }, nil
  50. } else if parse.DataType() == ERROR {
  51. return CSQ{}, parse.(SentenceERROR).err
  52. }
  53. }
  54. return CSQ{}, fmt.Errorf("未知错误")
  55. }