홈>
Swift 3에 Core Bluetooth를 사용하면
CBPeripheral.writeValue()
를 사용합니다
센트럴에 특징을 쓰려고합니다.
변화. 슬라이더를 천천히 드래그 할 때도 때때로 센트럴에서 값이 증가하는 것을 알았습니다. 아마도 일부 무선 손상이 발생했다고 생각했기 때문에 동일한 값을 세 번 쓰도록 특성을 변경했습니다. 이제 Central 경기에서받은 모든 값이 해당 값에 대해서만 작용합니다. 현재 코드는 다음과 같습니다.
UISlider
이것에도 불구하고, 나는 여전히 가치 상승을 봅니다. 와이즈 비즈 명령문은 항상 같은 (그리고 올바른) 숫자를 세 번 인쇄합니다. 마찬가지로 Central에서 값이 이동하면 3 개의 동일하지만 잘못된 값이 수신됩니다. 어떻게 이럴 수있어? 내가 생각할 수있는 것은 Core Bluetooth의 어떤 것이 공기를 넣기 전에 가치를 변화시키고 있지만 확실하지 않으며,주의를 집중해야 할 곳을 모른다는 것입니다.
@IBAction func slideValChanged(_ sender: UISlider)
{
let sliderVal = UInt8(sender.value.rounded(FloatingPointRoundingRule.down))
if (sliderVal != self.sliderVal)
{
self.sliderVal = sliderVal
self.bytes.removeAll()
self.bytes = [self.sliderVal, self.sliderVal, self.sliderVal]
DispatchQueue.global(qos: .userInitiated).async
{
self.data = Data(bytes: self.bytes)
self.peripheral.writeValue(self.data, for: self.writeCharacteristic!, type: CBCharacteristicWriteType.withResponse)
print("Write values sent:", self.bytes[0], self.bytes[1], self.bytes[2])
}
}
}
-
답변 # 1
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- vue.js - axios를 사용하여 서버에 이미지를 업로드하는 방법
- python - 문자열에서 특정 문자 제거
CBCharacteristicWriteType.withResponse를 사용함에 따라 슬라이더의 움직임이 느리더라도 많은 패킷으로 전송됩니다. writeCharacteristic 명령에 쓸 때는 writeCharacteristic을 다시 호출하기 전에 콜백을 기다려야합니다. 콜백은 데이터가 중앙 BLE 스택에 버퍼링되었고 스택이 추가 데이터를 수신 할 준비가되었음을 나타냅니다. 이것이 없으면 데이터가 손상되거나 연결이 끊어 질 수 있습니다.