panlei
2019-12-16 e583c3d63a64553efb95d46850fc6ee910805bc0
main 中初始化人员追踪
2个文件已修改
33 ■■■■ 已修改文件
algorithm/personTrack/personTrack.go 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
algorithm/personTrack/personTrack.go
@@ -28,10 +28,7 @@
// 人体跟踪算法
func Entrance(rule *protomsg.Rule, am *structure.AreaMap, lable *structure.Others, args *structure.SdkDatas, message *protomsg.SdkMessage) structure.LittleRuleResult {
    logger.Info("置位符号为:",structure.InitFlag)
    if !structure.InitFlag {
        Init()
    }
    if rule.PolygonId == am.AreaId { // 首先这条规则得是这个算法的规则,其次规则所对应的区域id要跟区域数据的id对的上
        //logger.Debug("---------走了人员异常算法", rule.Id, rule.SdkArgAlias, rule.Operator, rule.SdkArgValue, am.AreaId)
        if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" || rule.SdkArgAlias == "" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加
@@ -152,15 +149,23 @@
    if errSize != nil {
        logger.Error("Failed set MaxRecvSize: %v", err)
    }
    errTimeOut := sock.SetOption(mangos.OptionRecvDeadline,time.Millisecond * 1500)
    if errTimeOut != nil {
        logger.Error("接收响应超时")
        return
    }
    errTimeOut1 := sock.SetOption(mangos.OptionSendDeadline,time.Millisecond * 1500)
    if errTimeOut1 != nil {
        logger.Error("发送超时")
        return
    }
    //sock.AddTransport(ipc.NewTransport())
    sock.AddTransport(tcp.NewTransport())
    serverIP, _ := GetLocalIP()
    if err = sock.Dial("tcp://"+serverIP+":4012"); err != nil {
        logger.Error("请求socket拨号失败: %s", err.Error())
    }
    //logger.Info("序列化数据")
    structure.InitFlag = true
    logger.Info("置位initFlag:",structure.InitFlag)
    for {
        select {
        case data := <- sender:
main.go
@@ -66,7 +66,7 @@
    go ruleserver.TimeTicker()
    go ruleserver.StartServer()
    personTrackPush()
    nReciever("ipc:///tmp/sdk-2-rules-process.ipc", deliver.PushPull, 1)
    wg.Wait()
@@ -126,4 +126,16 @@
    mess := f.(func(msg []byte, args *structure.SdkDatas)(protomsg.SdkMessage))(msg,args)
    return mess
}
// 启动追踪的请求
func personTrackPush(){
    p,err :=  plugin.Open("./algorithm/personTrack.so")
    if err != nil {
        panic(err)
    }
    f,err1 := p.Lookup("Push")
    if err1 != nil {
        panic("初始化人员追踪的推送函数")
    }
    go f.(func()())()
}