Golang:转向窗帘

时间:2016-10-27 13:54:49

标签: go

我想用智能手机操作窗帘。现在,每次我在手机上更改位置

func main() {
OnUpdate(func(tPos int) {
     wc(tPos,cPos)
     cPos = tPos
  }
}
调用

,其中tPos是0到100之间的整数,它是目标位置。当前位置cPos还有一个变量。 OnUpdate应调用一个函数,该函数根据cPos和tPos之间的顺序关系打开或关闭窗口覆盖。这个函数看起来像这样。

func wc(tPos int, cPos int){
    switch{
        case tPos == 0:
            log.Println("close")
        case tPos == 100:
            log.Println("open")
        case tPos > cPos:
            t := time.Duration( (tPos - cPos)*10*openTime)
            log.Println("open")
            time.Sleep( t  * time.Millisecond)
            log.Println("stop")
        case tPos < cPos:
            t := time.Duration( (cPos - tPos)*10*closeTime)
            log.Println("close")
            time.Sleep( t  * time.Millisecond)
            log.Println("stop")
    }
}

我现在的问题是应该有一些延迟。我希望在调用OnUpdate之后有一个类似3秒的计时器,然后调用wc,除非在3秒内再次调用OnUpdate。

但我不知道该怎么做。有人能告诉我这是一个好方法吗?

1 个答案:

答案 0 :(得分:0)

不完全确定你的意思,但无论如何我都会试一试。什么叫OnUpdate?那是你的手机吗?您是否只想在在wc提供的回调中调用OnUpdate之前睡觉?

请注意:https://play.golang.org/p/4vVpEEUcqg

我的理解是你要确保wc不经常被调用。 for中的select / run语句确保wc最多只能每3秒调用一次。