1

내 BLE 애플리케이션은 서버 측 (BLE 칩)에서 계산이 필요하며 연결이 끊어 지거나 시간이 걸립니다.BLE 칩이 계산되는 동안 Android Bluetooth 저에너지 연결 시간 초과

번째 흐름이 같다 :

1- 안드로이드 폰은 BLE 칩 특성 값을 기록한다. 2 칩이이 값을 계산하고 계산을 시작합니다. 3 계산이 시작된 직후 연결이 끊어집니다.

연결 해제를 방지하기 위해 어떤 솔루션을 적용 할 수 있습니까? 내 마음에 두 가지 해결책이 있습니다.

1- 연결 간격 변경 : 현재 Android는 연결 간격으로 7.5 밀리 초를 사용합니다. BLE 칩의 연산에는 시간이 걸리기 때문에 계산 중에는 패킷을 송수신하지 않습니다. 연결 간격을 늘리면 손실 된 패킷 수가 줄어 듭니다. 그러나 Android 전화가 새로운 연결 매개 변수를 수락한다는 보장은 없습니다.

2 별도의 스레드에서 계산 실행 : BLE 칩의 SDK가 멀티 스레딩을 지원하여 계산 프로세스가 진행되는 동안 패킷 수신 및 전송을 중단하고 연결 해제를 방지한다고 생각하지 않습니다. 나는 CSR 칩을 사용하고 그것이 나을 것이라고 생각한다.

제 생각에는 틀린 부분을 수정하십시오.

문제를 해결하기위한 다른 제안이 있으십니까?

미리 감사드립니다.

+0

계산 결과를 확인하기위한 별도의주기가 있어야하며, BLE 칩에 대한 동일 계산에 대해 더 자세히 설명해 주실 수 있습니까? (SO) 코드 시도에 대한 도움을 받으실 수 있습니다. .. 그 게시물을 – user2450263

+0

게시해야합니다. 나는 코드와 관련이 없다고 생각한다. 연결 매개 변수를 사용하여 연결 해제 또는 아이디어를 방지하는 대체 방법을 찾고 있습니다. 감사! – ulusoyca

+0

단일 스레드와 계산이 긴 경우에는 BLE에서 부과하는 실시간 제약 사항에 응답 할 수 있도록 작은 하위 섹션을 작성하기 위해 다시 계산해야합니다. – Ifor

답변

0

낮은 수준의 응용 프로그램에서만 BLE을 사용했기 때문에 안드로이드에서 실현 가능성이 있는지 정확히 알지 못합니다. 어쨌든 문제가 연결 매개 변수라면 Slave_Latency을 변경하려고 할 수 있습니다.

이 매개 변수로 재생하므로 연결이 끊어 졌다고 간주 할 때까지 중도 장치가 대기 할 수있는 연결 간격 수를 변경할 수 있습니다.

다음 방정식은 연결 매개 변수를 도출하기 위해 유용합니다 : Effective_Connection_Interval = (Connection_Interval)*(1+(Slave_Latency))

그 캔을 기억하여 Effective_Connection_Interval과 충돌 할 수 어떤 종류의 Supervision_Timeout

1

이 답변에 감사드립니다 존재한다. 시간을 보낸 후에 문제가 무엇인지 알아 냈습니다.

우선 Android가 133 또는 129 오류를 표시하면 원격 장치 때문일 가능성이 큽니다.

처음에는 감독 제한 시간 때문에 문제가 발생했다고 생각했습니다. 그런 다음 CSR 칩의 연결 매개 변수를 다시 구성했지만 도움이되지 않았습니다.

xIDE (CSR의 IDE)를 사용하여 CSR 앱 개발에 문제가 있습니다. 인덱스 오버 슛으로 인해 런타임 오류가 발생하거나 잘못된 포인터에 액세스하는 경우 xIDE에 오류가 발생하지 않습니다. 나는 배열 문제를 마침내 발견하고 고쳤다. 이제 완벽하게 작동합니다.

고맙습니다.

관련 문제