>
상황 :

BlueGiga WT12 블루투스 모뎀이있는 일부 하드웨어 용 Android 앱을 개발 중입니다. 하드웨어 장치는 약 240hz에서 56 바이트 패킷을 보냅니다. 삼성 S5와 S8에서 테스트 중입니다. IOS 및 PC를위한 모든 기능을 갖춘 앱이 이미 생성되어 하드웨어 장치가 작동한다는 것을 알고 있습니다.

별도의 스레드를 사용하여 데이터를 읽은 다음 주 스레드로 디스패치합니다.

문제 :

내가 가진 문제는 스트리밍을 시작하라는 명령을 장치에 보낼 때 스트리밍을 시작하지만 10-60hz의 매우 느린 속도로 패킷을 받기 시작한 직후입니다.

일부 검사 후 장치에 버퍼 오버플로가 발생했음을 알았습니다.

하드웨어 담당자와 이야기를 나눈 후 전화 쪽의 내용이 충분히 빨리 읽히지 않아서 전화를받을 수 없다고 생각하기 때문에 하드웨어 장치가 더 많은 패킷을 보내려고하지 않는 유일한 원인이라고 말했습니다. 더 이상 하드웨어 장치에서 버퍼가 오버플로됩니다.

WT12는 흐름 제어가 가능하기 때문에 안드로이드가 WT12에 명확한 신호를 보내지 않는 문제 일 수 있습니다. 그러나 내 지식으로는 모든 흐름 제어 항목에 액세스 할 수 없습니다.

내가 시도한 것 :

첫 번째 공격 라인은 읽기 속도를 늦추고 있지만 효과가없는 것으로 보이는 코드를 간단히 제거하는 것이 었습니다.

또한 기본적으로 동일한 결과를 얻을 수있는 모든 블루투스 직렬 터미널 앱을 사용해 보았습니다.

따라서 하드웨어 장치와 관련하여 이상한 문제가 있는지 질문했지만 PC 기반 (블루투스) 직렬 터미널을 사용한 후에는 PC에서 전혀 문제가 없었습니다.

하드웨어 장치는 블루투스가 아닌 USB를 통해 작동 할 수 있으므로 블루투스 연결에서와 동일하지만 USB를 통해 정확히 동일한 데이터를 읽으려고 시도했습니다. USB 직렬 연결을 사용하면 전혀 문제가 없었습니다.

내 생각 :

이것으로 인해 전화 쪽의 블루투스 모뎀에 문제가 있다고 생각합니다. WT12에서 흐름 제어를 사용하도록 설정 한 경우 흐름 제어 문제 일 수 있습니다. 아마 안드로이드가 신호를 받기 위해 명확한 신호를 보내지 않습니까?

문제는 흐름 제어가 블루투스 스택에 구현되어 있고 내가 실수하지 않으면 개발자가 제어 할 수 없다는 것을 알고 있다는 것입니다.

다른 흐름 제어 하드웨어 장치로 인해 데이터를 보내지 않으려는 원인이 무엇인지는 잘 모르겠습니다.


  • 이전 html - 100 % 너비를 차지하는 인라인 블록 요소를 작성하는 방법 두 번째 요소에는 호버에 표시되는 다른 요소가 있습니다
  • 다음 파이썬에서`numpycumsum` 또는`numpycumprod` 줄을 따라`cumreduce`와 같은 함수가 있습니까?