페달: 눌러서 말하기 장치 — 풀 빌드

4064 단어 csharpshowdev


항상 일을 하다 보면 비디오 게임을 할 시간이 거의 없지만, 가끔씩 한두 시간 정도는 몰래 빠져들 수 있습니다. 최근에 제가 즐겼던 게임 중 하나는 "Hell Let Loose"라는 2차 대전 슈팅 게임입니다.

저를 게임에 끌어들이는 특성 중 하나는 커뮤니티와 플레이어 간의 광범위한 커뮤니케이션입니다. 그것은 명령 체계를 가지고 있으며 사람들은 명령에서 분대까지 정기적으로 의사 소통합니다. 배틀필드와 달리 플레이어는 분대, 팀 및 해당 지역 근처의 다른 플레이어와 직접 통신할 수 있습니다.



분대원들에게 또 다른 일이 벌어지고 있음을 알리고 싶을 때 사거리를 주시해야 할 때가 많았습니다. 아마도 들어오는 호랑이. 제대로 할 손가락이 없었습니다.

이것은 유틸리티를 위한 건물이 작동하는 곳입니다.

당신이 할 수 있다고 생각하는 것이 아니라 당신이 필요로 하는 것을 디자인하십시오.
일반적으로 사람들은 문제를 해결하기 위해 그렇게 많은 단계를 거치지 않지만 이것이 올바른 방법이라고 느꼈습니다. 쉬운 방법이 아닌 올바른 방법으로 최선을 다하십시오.

SendKeys가 예상대로 작동하는지 여부를 테스트하기 위해 C#을 사용하여 Visual Studio에서 기본 데스크톱 응용 프로그램을 만드는 것부터 시작했습니다. 키 누름을 단순화하는 데 도움이 되도록 InputSimulator 패키지를 사용했습니다.

우리가 만든 데스크톱 애플리케이션을 통해 사용자는 다양한 작업을 시작하는 데 필요한 트리거를 설정할 수 있습니다. 목록에 키를 추가하기 위해 키 다운 이벤트를 기록하고 키 업이 설정을 마칠 때까지 기다립니다.



저는 Adafruit의 기본 USB 미니 마이크로컨트롤러로 시작했습니다. 기본 기능은 직렬 포트를 통해 ON/OFF 신호를 보냅니다. 거기에 할 일이 많이 남지 않았으므로 이제 디지털 캘리퍼스가 나오는 재미있는 부분입니다!





디지털 캘리퍼스는 정확한 숫자를 얻기 위한 놀라운 도구입니다. 제대로 한다면 모델링과 프린트를 한 번만 하면 됩니다. 이상하게 들릴지 모르지만 이 전체 프로젝트에서 제가 가장 좋아하는 부분은 모델의 사양을 측정하는 것이었습니다. 그것은 내가 건축가가 되고 싶었을 때(2002) 제도에 대한 나의 사랑으로 거슬러 올라갑니다. 사람들이 더 이상 T-Square와 파우더를 실제로 사용하지 않는다는 것을 깨달을 때까지.

내 치수를 기반으로 케이스를 모델링한 후 3D 프린터를 통해 실행했습니다. 겹겹이 쌓이고 완벽하게 맞는 것을 보는 것은 정말 기분이 좋습니다.



너무 딱 맞아서 컨트롤러를 붙일 필요조차 없었지만 어쨌든 그렇게했습니다. 그것을 아래로 유지하기 위해 모서리에 뜨거운 접착제의 작은 부분. 버튼을 뚜껑에 연결하는 뜨거운 접착제. 그런 다음 상단과 하단 부분이 접착제 없이 함께 단단히 미끄러졌습니다.

이 빌드의 가장 좋은 부분 중 하나는 USB 포트가 인쇄물과 얼마나 완벽하게 정렬되어 있는지입니다. 별거 아닌 것처럼 들릴지 모르지만 모든 조각이 배치되고 포트가 개구부 위 또는 아래에 불과 1mm에 있으면 답답합니다.



이 시점에서 Photoshop에서 데스크톱 애플리케이션 디자인을 수정하고 C#에 통합하기 시작했습니다. 키 실행 방법, 토글 등과 같은 몇 가지 추가 옵션이 있습니다. 활성 표시등이 버튼 자체에서도 강조 표시되는 버튼에 멋진 조명 효과가 있습니다.



데스크톱 응용 프로그램을 장치의 직렬 포트에 연결하고 IO를 수신한 다음 키 이벤트를 브로드캐스트하는 코드를 추가했습니다. 지금은 COM9에 직접 연결되며 이는 MVP의 이점입니다.

public void SetupPort() {
    sp = new SerialPort("COM9");
    sp.BaudRate = 9600;
    sp.Parity = Parity.None;
    sp.StopBits = StopBits.One;
    sp.DataBits = 8;
    sp.Handshake = Handshake.None;
    sp.DataReceived += new SerialDataReceivedEventHandler(Handle_OnDataReceived);
    sp.ErrorReceived += new SerialErrorReceivedEventHandler(Handle_OnDataError);
sp.Open();
}


그게 다야. 이제 게임을 할 때 내 손을 자유롭게 할 때 내 발을 사용하여 PTT를 활성화/비활성화할 수 있습니다. 더 이상 게임에서 계속 총에 맞는 이유에 대해 변명할 필요가 없습니다.

작동 방식은 다음과 같습니다.

좋은 웹페이지 즐겨찾기