예제 #1
0
파일: main.go 프로젝트: datawolf/go-study
func setupSerial(device string, baud int) {
	// open the serial
	log.Println("open", device, "at", baud)
	port, err := serial.Open(device, baud)
	if err != nil {
		fmt.Println("open failed:", err)
	}
	defer port.Close()
	log.Println("ready")

	// open the databases
	db, err := sql.Open("mysql", dbconn)
	if err != nil {
		log.Println("can not open databases: ", err)
	}
	defer db.Close()

	err = db.Ping()
	if err != nil {
		log.Println("can not connect databbases: ", err)
	}

	// Prepare statement for inserting data
	stmtIns, err := db.Prepare("INSERT INTO tbl_id set id=?")
	if err != nil {
		log.Println("db prepare error:", err)
	}

	stmtUpdate, err := db.Prepare("UPDATE tbl_serial set id=?")
	if err != nil {
		log.Println("db prepare error:", err)
	}

	buf := make([]byte, 512)

	for {
		n, err := port.Read(buf)
		if err != nil {
			log.Println("serial read error:", err)
		}
		// n = the read length
		if n > 0 {
			log.Println(n, ">", string(buf[:n]))
			_, err = stmtIns.Exec(string(buf[:n]))
			if err != nil {
				log.Println("stmtIns exec error:", err)
			}
			_, err = stmtUpdate.Exec(string(buf[:n]))
			if err != nil {
				log.Println("stmtUpdate exec error:", err)
			}
			log.Println("update the db")
		}
	}
}
예제 #2
0
func main() {
	device := "COM9"
	baud := 9600

	fmt.Println("open", device, "at", baud)

	port, err := serial.Open(device, baud)

	if err != nil {
		fmt.Println("open failed:", err)
		return
	}

	defer port.Close()

	fmt.Println("ready")

	// display data from serial
	//
	go func() {
		buf := make([]byte, 32)

		for {
			n, err := port.Read(buf)

			if err != nil {
				fmt.Println("serial read error:", err)
				return
			}

			if n > 0 {
				fmt.Println(n, ">", string(buf[:n]))
			}
		}
	}()

	// send user input (by line) to serial
	//
	scanner := bufio.NewScanner(os.Stdin)

	for scanner.Scan() {
		_, err := port.Write([]byte(scanner.Text() + "\n"))

		if err != nil {
			fmt.Println("serial write error:", err)
		}
	}

}
예제 #3
0
파일: main.go 프로젝트: datawolf/go-study
func setupSerial(device string, baud int) {
	// open the serial
	log.Println("open", device, "at", baud)
	port, err := serial.Open(device, baud)
	if err != nil {
		fmt.Println("open failed:", err)
	}
	defer port.Close()
	log.Println("ready")

	buf := make([]byte, 512)
	var buffer bytes.Buffer
	i := 0

	for {
		i = 0
		buffer.Truncate(0)
		for i != 10 && i < 10 {
			// n = the read length
			n, err := port.Read(buf)
			if err != nil {
				log.Println("serial read error:", err)
			}
			time.Sleep(time.Second)
			log.Println(n, "接收到刷卡信息--> ", string(buf[:n]))
			buffer.Write(buf[:n])
			i += n
		}
		if i != 10 {
			continue
		}
		buffer.Truncate(8)
		buffer.Write([]byte("  "))
		num = buffer.String()
	}
}