github.com/simpleiot/simpleiot@v0.18.3/cmd/tof10120/main.go (about)

     1  // TOF10120 test application
     2  package main
     3  
     4  import (
     5  	"flag"
     6  	"fmt"
     7  	"log"
     8  	"os"
     9  	"time"
    10  
    11  	"github.com/simpleiot/simpleiot/respreader"
    12  	"github.com/simpleiot/simpleiot/sensors"
    13  	"go.bug.st/serial"
    14  )
    15  
    16  func usage() {
    17  	fmt.Println("Usage: ")
    18  	flag.PrintDefaults()
    19  	os.Exit(-1)
    20  }
    21  
    22  func main() {
    23  	log.Println("modbus simulator")
    24  
    25  	flagPort := flag.String("port", "", "serial port")
    26  	flagSend := flag.Int("send", 200, "interval at which sensor should send data")
    27  
    28  	flag.Parse()
    29  
    30  	if *flagPort == "" {
    31  		usage()
    32  	}
    33  
    34  	mode := &serial.Mode{
    35  		BaudRate: 9600,
    36  	}
    37  	port, err := serial.Open(*flagPort, mode)
    38  	if err != nil {
    39  		log.Fatal(err)
    40  	}
    41  
    42  	portRR := respreader.NewReadWriteCloser(port, time.Second, time.Millisecond*20)
    43  
    44  	tof := sensors.NewTOF10120(portRR)
    45  
    46  	err = tof.SetSendInterval(*flagSend)
    47  
    48  	if err != nil {
    49  		log.Println("Error setting send interval:", err)
    50  	}
    51  
    52  	err = tof.Read(func(v int) {
    53  		log.Printf("TOF data: %vmm\n", v)
    54  	}, func(err error) {
    55  		log.Println("Error reading TOF:", err)
    56  	})
    57  
    58  	if err != nil {
    59  		log.Println("Error reading TOF:", err)
    60  	}
    61  }