Как исправить функцию журнала, которая не выполняется в функции? - PullRequest
0 голосов
/ 09 апреля 2019

Я делаю функцию регистрации для регистрации данных, поступающих с 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
}


Я хочу видеть карту данных, зарегистрированную в созданном файле, и добавлять к ней каждую итерацию.

...