AT命令与/ dev / tty *交换

I have a device with a GPRS onboard. GPRS connects with the third-party application and it works. I need to know the signal strength of the connection, so, I use ATZ, then AT+CSQ commands. When I work using some terminal software it works. Then, I had tried to use https://github.com/ishuah/bifrost soft as a terminal. It works as well. But how can I simply communicate with a device, not using terminal, without re-connection or connection abortion, etc?

I tried simply echo ATZ > /dev/ttyX - no answer

    // 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
*/

Most serial devices need a termination character to react to the commands they receive.

If you add it, your code should work:

var s string  = `AT+CSQ`

I don't see any other differences from your code and sending a command using a serial terminal. The same should apply when you echo the command directly onto the port file descriptor.