+ termios.Ttyfd(file.Fd())
+ termios.SetRaw()
+ return file
+}
+func usage() {
+ fmt.Fprintf(os.Stderr, "usage: myprog [inputfile]\n")
+ flag.PrintDefaults()
+ os.Exit(2)
+}
+
+func SerialWriter(c chan string, serial * os.File ) {
+ for {
+ serial.WriteString(<-c)
+ serial.Sync()
+ }
+}
+
+func SerialReader(c chan string , serial * bufio.Reader) {
+ for {
+ s,err := readLineSafe(serial)
+ if (s=="") {
+ continue
+ }
+ if (err!=nil) {
+ fmt.Printf("Error in read from serial: %v\n",err.Error())
+ os.Exit(1)
+ }
+ fmt.Printf("Serial: Read %v\n",s);
+ c<-s
+ }
+}
+
+func openSerial(filename string) (chan string,chan string) {
+ serial:=openTTY(filename)
+ in:=make(chan string)
+ out:=make(chan string)
+ //go SerialWriter(out,serial)
+ go SerialReader(in,bufio.NewReaderSize(serial,128))
+ return in,out