Я делаю функцию регистрации для регистрации данных, поступающих с 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
}
Я хочу видеть карту данных, зарегистрированную в созданном файле, и добавлять к ней каждую итерацию.