| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | package modbus// type Register struct {// 	ID    uint8// 	Name  string// 	Value uint16// }//// type Slaver struct {// 	ID       uint16 // ID for PLC// 	Function uint16 // Function Code// 	Address  uint16 // Address the PLC address, e.g. 30001 will be set if Code4 in Function// 	Quantity uint16 // Quantity of Registered// 	Register []Register// }//// func (s *Slaver) handlerCode4(b []byte) ([]byte, error) {// 	req, err := ParseADU(b)// 	if err != nil {// 		return nil, err// 	}// 	if req.ProtocolID != Protocol {// 		return nil, fmt.Errorf("protocol not supported: %d", req.ProtocolID)// 	}//// }//// func (s *Slaver) handleConn(conn net.Conn) {// 	defer func() {// 		_ = conn.Close()// 	}()// 	buf := make([]byte, 1024)// 	for {// 		n, err := conn.Read(buf)// 		if err != nil {// 			log.Println("handleConn:", err)// 			return// 		}//// 	}// }//// func (s *Slaver) ListenAndServe(ctx context.Context, addr string) error {// 	ln, err := net.Listen("tcp", addr)// 	if err != nil {// 		return err// 	}// 	defer func() {// 		_ = ln.Close()// 	}()// 	for {// 		if err = ctx.Err(); err != nil {// 			return err// 		}// 		conn, err := ln.Accept()// 		if err != nil {// 			return err// 		}// 		go s.handleConn(conn)// 	}// }
 |