// 可用串口
func (d *Dial) SerialOK(dev []string) string {
// 遍历设备
for _, v := range dev {
// 通过调用程序来判断可用串口
cmd := exec.Command("/danoo/bin/danoo_3g_signal", v)
// 运行程序
if err := cmd.Start(); err != nil {
continue
}
// 线程
chTime := make(chan int)
// 飞一会干掉他
go (func(ch chan int, cmd *exec.Cmd) {
// 让程序飞一会
time.Sleep(time.Second * 5)
// 然后干掉它
cmd.Process.Kill()
// 返回
ch <- 0
})(chTime, cmd)
// 等待程序结束
if err := cmd.Wait(); err != nil {
if exiterr, ok := err.(*exec.ExitError); ok {
if status, ok := exiterr.Sys().(syscall.WaitStatus); ok {
if status.ExitStatus() == 99 {
return v
}
}
}
}
// 返回锁
<-chTime
}
// 返回
return ""
}
近期评论