package QuectelAT import ( "fmt" "strconv" ) // SetEcho 设置是否开启回显 func (q *Quectel) SetEcho(Echo bool) (err error) { if Echo { err = q.SendCmd("ATE1") } else { err = q.SendCmd("ATE0") } for q.ioScanner.Scan() { var parse Sentence parse = Parse(q.ioScanner.Text()) if parse.DataType() == OK { return } else if parse.DataType() == ERROR { return parse.(SentenceERROR).err } } return } type CSQ struct { RSSI int `json:"RSSI"` BER int `json:"BER"` } func (q *Quectel) GetCSQ() (data CSQ, err error) { err = q.SendCmd("AT+CSQ") for q.ioScanner.Scan() { var parse Sentence parse = Parse(q.ioScanner.Text()) println(parse.DataType()) if parse.DataType() == CMD { println(parse.(SentenceCMD).CMD) } if (parse.DataType() == CMD) && (parse.(SentenceCMD).CMD == "CSQ") { RSSI, err := strconv.Atoi(parse.(SentenceCMD).Message[0]) if err != nil { return CSQ{}, err } BER, err := strconv.Atoi(parse.(SentenceCMD).Message[1]) if err != nil { return CSQ{}, err } return CSQ{ RSSI: RSSI, BER: BER, }, nil } else if parse.DataType() == ERROR { return CSQ{}, parse.(SentenceERROR).err } } return CSQ{}, fmt.Errorf("未知错误") }