【发布时间】:2019-07-04 06:47:08
【问题描述】:
我有一个板载 GPRS 的设备。 GPRS 与第三方应用程序连接并且可以正常工作。我需要知道连接的信号强度,所以,我使用 ATZ,然后使用 AT+CSQ 命令。当我使用某些终端软件工作时,它可以工作。然后,我尝试使用https://github.com/ishuah/bifrostsoft 作为终端。它也有效。但是我怎样才能简单地与设备通信,不使用终端,不重新连接或连接中止等?
我只是简单地尝试了echo ATZ > /dev/ttyX - 没有答案
// This writes, but reads only zeros (((
package main
import (
"github.com/jacobsa/go-serial/serial"
"io"
"log"
"time"
"fmt"
)
func Sleep(duration int) {
time.Sleep(time.Second * time.Duration(duration))
}
func printBuf(b []byte){
for _, val:=range b {
fmt.Printf("%x ", val)
}
}
func main(){
options := serial.OpenOptions{
PortName: "/dev/ttyX",
BaudRate: 115200,
DataBits: 8,
StopBits: 1,
MinimumReadSize: 0,
InterCharacterTimeout: 50,
}
port, err := serial.Open(options)
if err != nil {
log.Printf("port.Read: %v", err)
return
}
// Make sure to close it later.
defer port.Close()
var s string = `AT+CSQ`
b:=[]byte(s)
n, err := port.Write(b)
if err != nil {
log.Printf("port.Write: %v", err)
}
log.Println("Written bytes: ", n)
//Sleep(1)
res := make([]byte, 64)
n, err = port.Read(res)
if err != nil && err != io.EOF {
log.Printf("port.Read: %v", err)
}
log.Println("READ bytes: ", n)
printBuf(res)
}
/*
I expect (for example):
---------
ATZ
OK
AT+CSQ
+CSQ 22.4
*/
【问题讨论】:
-
你可以试试我的atinout 程序,它是专门为这样的用例编写的,例如
echo AT+CSQ | atinout - /dev/ttyX -.
标签: linux go at-command modem