주요 콘텐츠로 건너뛰기
버전: 최신

핸들

Haply::하드웨어API::디바이스::핸들

Haply 핸들과 상호 작용하는 데 필요한 로직을 캡슐화합니다.

경고 핸들은 아직 개발 중인 영역이며 API가 안정적이거나 이전 버전과의 호환성이 보장되지 않습니다.

이 클래스는 장치에서 특정 이벤트가 수신될 때 호출되는 보호된 가상 메서드 중 하나를 재정의하도록 특수화되어야 합니다:

  • OnReceiveHandleInfo: 디바이스 절전 해제 후 호출됩니다.
  • 장치에서 새 상태 업데이트를 수신할 때 호출되는 OnReceiveHandleStatusMessage입니다.
  • 장치에서 오류를 보고할 때 호출되는 OnReceiveHandleErrorResponse.

생성자의 매개변수로 핸들의 직렬 포트를 나타내는 SerialStream 클래스의 인스턴스가 필요합니다. 일단 생성되면 SendDeviceWakeup 명령은 핸들을 깨우고 최신 디바이스 상태를 검색하기 위해 RequestStatus 명령을 전송할 수 있도록 합니다. Receive 메서드는 디바이스의 응답을 처리하고 오버로드된 가상 메서드 중 하나를 트리거하는 모든 명령 메서드를 따라야 합니다.

핸들 구현은 필드에 의해 길이가 결정되는 장치 상태의 필드를 사용하여 사용자 지정할 수 있습니다. 하플리 퀼의 사용자 필드는 다음과 같이 정의되어 있습니다:

  • : 손잡이의 평평한 표면에 있는 버튼의 상태로, 1은 누르고 있는 상태임을 나타냅니다.
  • : 배터리 잔량으로, 값이 100이면 배터리가 가득 찼음을 의미합니다.

이 클래스 내의 모든 메서드는 각각의 IO 연산이 완료되거나 에러가 발생할 때까지 차단됩니다. 핸들은 약 50Hz의 주파수로 작동합니다. 여러 장치가 동일한 스레드로 관리되는 경우 전체 처리 주파수는 모든 장치의 가장 낮은 주파수로 제한됩니다. 따라서 동일한 스레드 내에서 핸들과 Inverse3를 혼합하는 것은 권장되지 않습니다.

색인

클래스

회원

이름유형설명
USER_DATA_MAXstatic constexpr uint8_t에 포함할 수 있는 최대 바이트 수 ...

방법

이름유형설명
핸들(...)에서 핸들 객체를 구성합니다...
SendDeviceWakeupvoid()추가 명령을 허용하려면 핸들을 깨우세요.
요청 상태void()핸들에서 최신 상태를 요청합니다.
SendHandleStatevoid(const uint16_t, const uint8_t, ...)제공된 것으로 핸들별 사용자 상태를 업데이트하세요...
SendHandleErrorRequestvoid(const uint16_t)핸들에서 최신 오류 정보를 요청합니다.
수신int()핸들로부터 응답을 수신하고 처리합니다.
GetVersegripStatus버세그립 상태 응답(...)버세그립 상태 객체를 응답으로 가져옵니다.

회원

USER_DATA_MAX

static constexpr uint8_t USER_DATA_MAX = 255

Haply 핸들의 특수 구현의 사용자 필드에 포함될 수 있는 최대 바이트 수입니다.

방법

핸들

핸들( Haply::HardwareAPI::IO::SerialStream * 스트림, float 시간 초과)

제공된 스트림에서 핸들 객체를 생성합니다.

매개변수

  • 스트림 디바이스와 연결된 직렬 포트를 나타내는 스트림 객체입니다. 스트림의 수명은 Handle 객체의 수명과 일치하거나 초과해야 합니다. 이 스트림은 SerialStream 클래스를 사용하여 구성하는 것이 좋습니다.

  • 시간 초과 장치의 응답을 기다릴 수 있는 최대 시간입니다. 이 시간 내에 장치가 응답하지 않으면 작업이 실패하고 오류가 stderr에 인쇄됩니다.

기본 타임아웃은 5초이며, 음수 값은 타임아웃을 비활성화합니다.

SendDeviceWakeup

void SendDeviceWakeup()

추가 명령을 허용하려면 핸들을 깨우세요.

이 명령은 다른 명령을 전송하기 전에 장치로 보내야 합니다.

핸들 응답을 처리하기 위해 Receive 호출이 뒤따라야 하며, 이 호출은 다시 OnReceiveHandleInfo 오버로드된 메서드를 호출합니다.

요청 상태

void RequestStatus()

핸들에서 최신 상태를 요청합니다.

핸들 응답을 처리하기 위해 Receive 호출이 뒤따라야 하며, 이 호출은 다시 OnReceiveHandleStatusMessage 오버로드된 메서드를 호출합니다.

SendHandleState

void SendHandleState( const uint16_t device_id, const uint8_t user_data_length, const uint8_t * user_data)

제공된 인수를 사용하여 핸들별 사용자 상태를 업데이트합니다.

핸들 응답을 처리하기 위해 Receive 호출이 뒤따라야 하며, 이 호출은 다시 OnReceiveHandleStatusMessage 오버로드된 메서드를 호출합니다.

매개변수

  • device_id 디바이스의 아이디입니다. 이 필드는 현재 핸들에서 무시되며 0으로 안전하게 설정할 수 있습니다.

  • user_data_length user_data에서 읽을 바이트 수입니다. USER_DATA_MAX보다 작아야 합니다.

  • user_data 핸들별 상태를 업데이트하기 위해 읽고 사용할 바이트입니다. 이 바이트의 형식을 지정하는 방법은 해당 핸들의 설명서를 참조하세요.

SendHandleErrorRequest

void SendHandleErrorRequest(const uint16_t device_id)

핸들에서 최신 오류 정보를 요청합니다.

핸들 응답을 처리하기 위해 Receive 호출이 뒤따라야 하며, 이 호출은 다시 OnReceiveHandleErrorResponse 오버로드된 메서드를 호출합니다.

매개변수

  • device_id 디바이스의 아이디입니다. 이 필드는 현재 핸들에서 무시되며 0으로 안전하게 설정할 수 있습니다.

수신

int Receive()

핸들로부터 응답을 수신하고 처리합니다.

다음 메서드 중 하나에 대한 호출을 따라야 하며 연결된 오버로드된 메서드를 호출합니다:

디바이스에서 메시지를 수신하거나 오류가 발생할 때까지 차단합니다.

반환

작업이 성공적으로 완료되면 0을 반환합니다. 오류가 발생하면 메서드는 음수 값을 반환하고, 오류는 stderr에 출력되며 거짓을 반환할 수 있습니다.

GetVersegripStatus

버세그립상태 응답 GetVersegripStatus()

버세그립 상태 객체를 응답으로 가져옵니다.

새로운 버즈그립은 USB 포트에 동글을 연결하여 유선 핸들의 사용 편의성과 무선 핸들의 자유로움을 모두 누릴 수 있도록 설계되었습니다. 무선 통신에서 1kHz 이상의 통신을 달성함에 따라 이제 매우 간단한 방법으로 무선 모드에서 핸들을 사용할 수 있습니다. 애플리케이션의 표준 루프에서 'GetVersegripStatus'를 간단히 호출하여 핸들의 상태를 확인할 수 있습니다.

반환

버세그립 상태 응답