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

핸들

Haply::하드웨어API::장치::핸들

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

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

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

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

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

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

  • : 손잡이의 평평한 표면에 있는 버튼의 상태로, 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 timeout)

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

매개변수

  • 스트림 디바이스와 연결된 직렬 포트를 나타내는 스트림 객체입니다. 스트림의 수명은 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'를 간단히 호출하여 핸들의 상태를 확인할 수 있습니다.

반환

버세그립 상태 응답