I가 완료 콜백 USB
장치로부터의 데이터를 커맨드를 송신하고 무한 루프 판독 기능 가지고출구 너무 오랫동안 동작을 수행하는 경우
func dump(success: (() -> Void)? = nil, failure: (()->Void)? = nil) {
HIDDevice.sharedInstance.sendCommad(command: "dump")
while true {
for data in HIDDevice.sharedInstance.readBuf {
if data == "dumpcomplete":
success?()
return
}
}
}
하고 난이 잠시 있는지 확인해야 루프가 > 1
초를 초과하여 성공하지 못하면 failure
클로저 및 중지 루프를 호출하십시오.
이전에 루프를 사용하려고했지만 도움이되지 않았습니다. 루프를 기준으로 스레드를 스레드하십시오.
func setTimeout(delay:TimeInterval, block:@escaping()->Void) -> Timer {
return Timer.scheduledTimer(timeInterval: delay, target: BlockOperation(block: block), selector: #selector(Operation.main), userInfo: nil, repeats: false)
}
let handle = setTimeout(1, block: {() -> Void in
failure()?
return
})
바쁜 루프가 나쁘다. 'readBuf'는 데이터가 없으면 차단하거나 단순히 리턴합니까? – rmaddy
@rmaddy이 클래스는 https://github.com/bettse/KuandoSwift/blob/master/KuandoSwift/BusyLight.swift#L20 이며 'ViewController'에서 데이터를 읽는 유일한 방법은 임시 변수 – Arti
에서 읽는 것입니다. (r, g, b) : (UInt8, UInt8, UInt8) = (0, 0xff, 0) 한 줄로'r','g' 및'b'의 할당을 압축 할 수 있습니다.)' – Alexander