我正在创建一个记录功能,用于记录来自CANBUS的数据。
我已经使用打印来查看是否可以输入所有条件,并且可以收到消息,但是无法追加并登录到我创建的文件中。所有未声明的变量都是全局变量。
package main
import (
Filter "go/src/Filter/FiltreLib"
"flag"
"fmt"
"github.com/go-daq/canbus"
"log"
"os"
"strconv"
"sync"
"time"
)
func main(){
sck, err := canbus.New()
if err != nil {
log.Fatal(err)
}
defer sck.Close()
addr := "can 0"
err = sck.Bind(addr)
if err != nil {
log.Fatalf("error binding to [%s]: %v\n", addr, err)
}
state = "s" //Silent as default
go func() {
for {
fmt.Scanln(&newstate)
switch true {
case state == "s" && "v" == newstate: // if silence -> verbose
state = "v"
fmt.Println(state)
break
case state == "v" && "s" == newstate: // if Verbose -> Silence
state = "s"
fmt.Println(state)
break
}
}
}()
for {
CANtoDATA(sck, 4)
}
}
func CANtoDATA(sck *canbus.Socket, IDDS int)() { //Takes Frames from can and logs them in xlsx
id,msg,err = sck.Recv() //gets new frame
FileCreatorWriter(IDDS,msg)
framestoString(IDDS)
}
func FileCreatorWriter(DS int, data []byte)(err error){
if datecheck != time.Now().Format("01-02-2006") {
token = false
}
if token == false {
datecheck = time.Now().Format("01-02-2006")
date = time.Now().Format(" 01-02-2006 - 15:04:05")
f, err = os.OpenFile("IDDS: "+strconv.Itoa(DS)+" - "+date+".txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening file: %v", err)
}
defer f.Close()
if err != nil {
fmt.Printf(err.Error())
}
token = true
}
_,frameID = CityFilter.FrameIden(id)
IDds := CityFilter.ReadIDDS(Converter(data))
if DS == IDds && 1 == frameID {
fmt.Printf("I am in!!!!!!")
log.SetOutput(f)
log.Println(datamap)
}
return
}
我想查看记录在创建文件中的数据映射,并在每次迭代后追加。