修复投影仪控制
This commit is contained in:
@@ -32,11 +32,11 @@ func NewClient(host, port, password, id string) *Client {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Client) Connect() error {
|
||||
func (c *Client) connect() error {
|
||||
address := net.JoinHostPort(c.Host, c.Port)
|
||||
conn, err := net.DialTimeout("tcp", address, 5*time.Second)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("连接异常: %w", err)
|
||||
}
|
||||
c.conn = conn
|
||||
|
||||
@@ -44,14 +44,14 @@ func (c *Client) Connect() error {
|
||||
reader := bufio.NewReader(c.conn)
|
||||
response, err := reader.ReadString('\r')
|
||||
if err != nil {
|
||||
c.Close()
|
||||
return err
|
||||
c.close()
|
||||
return fmt.Errorf("读取异常: %w", err)
|
||||
}
|
||||
|
||||
// Handle authentication
|
||||
if strings.HasPrefix(response, "PJLINK 1") {
|
||||
if c.Password == "" {
|
||||
c.Close()
|
||||
c.close()
|
||||
return ErrAuthFailed
|
||||
}
|
||||
|
||||
@@ -62,13 +62,13 @@ func (c *Client) Connect() error {
|
||||
|
||||
_, err = fmt.Fprintf(c.conn, "%s\r", authHash)
|
||||
if err != nil {
|
||||
c.Close()
|
||||
return err
|
||||
c.close()
|
||||
return fmt.Errorf("写入异常: %w", err)
|
||||
}
|
||||
|
||||
authResponse, err := reader.ReadString('\r')
|
||||
if err != nil || !strings.Contains(authResponse, "OK") {
|
||||
c.Close()
|
||||
c.close()
|
||||
return ErrAuthFailed
|
||||
}
|
||||
}
|
||||
@@ -104,36 +104,54 @@ func (c *Client) sendCommand(command string) (string, error) {
|
||||
return "", ErrAuthFailed
|
||||
} else if result == "ERR2" {
|
||||
return "", ErrCommandError
|
||||
} else if result == "ERR3" {
|
||||
return "YES", nil
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (c *Client) PowerOn() error {
|
||||
func (c *Client) PowerOn() (string, error) {
|
||||
err := c.connect()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("连接异常: %w", err)
|
||||
}
|
||||
defer c.close()
|
||||
|
||||
response, err := c.sendCommand("POWR 1")
|
||||
if err != nil {
|
||||
return err
|
||||
return "", err
|
||||
}
|
||||
|
||||
if response != "OK" {
|
||||
return fmt.Errorf("unexpected response: %s", response)
|
||||
if response == "YES" {
|
||||
return response, nil
|
||||
} else if response != "OK" {
|
||||
return response, fmt.Errorf("unexpected response: %s", response)
|
||||
}
|
||||
return nil
|
||||
return response, nil
|
||||
}
|
||||
|
||||
func (c *Client) PowerOff() error {
|
||||
func (c *Client) PowerOff() (string, error) {
|
||||
err := c.connect()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("连接异常: %w", err)
|
||||
}
|
||||
defer c.close()
|
||||
|
||||
response, err := c.sendCommand("POWR 0")
|
||||
if err != nil {
|
||||
return err
|
||||
return "", err
|
||||
}
|
||||
|
||||
if response != "OK" {
|
||||
return fmt.Errorf("unexpected response: %s", response)
|
||||
if response == "YES" {
|
||||
return response, nil
|
||||
} else if response != "OK" {
|
||||
return response, fmt.Errorf("unexpected response: %s", response)
|
||||
}
|
||||
return nil
|
||||
return response, nil
|
||||
}
|
||||
|
||||
func (c *Client) Close() {
|
||||
func (c *Client) close() {
|
||||
if c.conn != nil {
|
||||
c.conn.Close()
|
||||
c.conn = nil
|
||||
|
||||
Reference in New Issue
Block a user