ASRock BC-250 보드 RAZER CORE X CHROMA 에 설치하기 5

주문 제작 하였던 브라켓이 도착하였다.  재질은 철이 아니고 알루미늄이라 그런지 상당히 가볍고 잘못하면 휘어질 것 같은 느낌이 든다. 제작하고 수령하기 까지 거의 3주라는 긴 시간이 걸렸다. 원래 이렇게 까지 걸리진 않는데 원인은 가공 엔지니어로 부터 온 메일을 확인하지 않고 3일이나 흐른 뒤에 답장을 하였고, 연말 기간도 걸려서 늦어져 버렸다. BC-250 카드에 기존 브라켓을 제거하고 새로 설계한 브라켓을 달아보니 아주 잘 맞았다. 버튼도 잘 눌리고 이더넷, USB, DP 포트 모두 사용에 문제가 없다. 이렇게 보고 나서 알아차린 부분이지만 하단 쪽에 고정 다리를 추가한다는 것을 빼먹었다. 다시 만드는 건 금액도 만만치 않았기 때문에 수정해서 발주를 다시 넣지는 않을 예정이고 튼튼하게 고정하기 위해 다른 솔루션을 찾아 보려고 한다. 사실 브라켓을 설계한 건 설치 문제도 있지만 완성된 시스템이 외관상으로 봤을 때 튀는 부분 없이 완성도가 높아 보이길 원했기 때문이다. 이렇게 보니 모양도 그럴싸하고 원래 이런 제품일지도 모른다는 착각도 든다. 타공 모양도 벌집 모양으로 했으면 더 완벽했겠지만 만드는 동안에는 그런 생각 없이 만들었기 때문에 큰 후회는 없다. 장착 되어있던 USB 허브 보드 대신 사용될 PCB도 도착하였다. 기존 허브 보드와 비교하자면 사이즈만 많이 커졌지만 브라켓과 호환이 되는지 확인하였고 장착하는 데는 문제가 없을 것으로 예상하고 있다.  지금 보니 오디오 앰프가 꼭 있어야 했는지 살짝 욕심이 과했다는 생각도 든다. 조립에 사용될 부품들은 아직 수급 중이며 차근차근 조립을 해 나갈 예정이다. 먼저 설계했던 PSU 전원 컨트롤 보드는 다음과 같이 장착 되었고 주요 동작에는 큰 이상이 없으나 몇 가지 수정 사항이 생겼다. 수정 사항은 허브 보드을 새로 설계하면서 발생한 것으로 두 보드 간에 별도의 통신 선이 연결된다. 사실 이렇게 기능을 분리할 필요는 없었는데 첫 번째로 만든 보드에서 하드웨어 적으로 누락된 기능이 있기 때문에 허...

[Arduino] - 디스플레이 오토피벗 디바이스 "피버시노" 파이썬 프로그램 업데이트 (피버시노 v.1.1.2)


"피벗이노"는 화면 방향을 전환할때 display.exe 라는 외부 프로그램을 사용해왔다.
문제는 핵심적인 기능을 담당하는 이 프로그램에 문제가 생기면 아무것도 하지 못한다.

이렇게 프로그램이 분산되어 있으면 결손, 손상, 수정에 어려움이있다.

MDSN에서 개발자들에게 제공해주는 DEVMODE를 이용하면 연결된 디스플레이 정보를 가져와 컨트롤 패널의 디스플레이 설정을 프로그래밍으로 만져볼 수 있다.

실제로 디스플레이와 관련된 응용프로그램이나 드라이브를 운용하기위한 드라이버를 만들때 사용된다.

DEVMODE를 이용해 rotateTO 함수를 만들었다.
  • rotateTO 함수
작동방식은 오토피벗 기능을 사용할 디스플레이 넘버를 지정해주고 모니터의 현재 방향에 따른 너비와 높이 값 교환 및 회전이다. 이 함수를 이용하면 display.exe에 의존하지 않아도 된다.

파이썬 에서는 win32api를 이용해 DEVMODE를 사용할수 있다.
win32api를 사용하려면 라이브러리가 있어야한다.

pip install pypiwin32

이 함수는 Rotating the Screen in C# 을 참고하여 작성되었다.
Mapping the APIs의  NativeMethods 클래스에 화면 방향에 따른 상수 값이 정해져 있다.
여기서 봐야 할 값들은 다음과 같다.
DMDO_DEFAULT = 0;
DMDO_90 = 1;
DMDO_180 = 2;
DMDO_270 = 3;
이 상수값들이 디스플레이의 회전 방향을 결정해준다.

# Changing Screen Orientation Programmatically
def rotateTO(rotateDic):
   display_num = 0 # display 1
   device = win32.EnumDisplayDevices(None,display_num)
   dm = win32.EnumDisplaySettings(device.DeviceName,win32con.ENUM_CURRENT_SETTINGS)
   if 0 != dm:
       dm.PelsWidth, dm.PelsHeight = dm.PelsHeight, dm.PelsWidth
       dm.DisplayOrientation = int(rotateDic/90)
       iRet = win32.ChangeDisplaySettings(dm, 0);
   if win32con.DISP_CHANGE_SUCCESSFUL != iRet:
       print("Failed(Already) to rotate "+str(rotateDic)+" degrees")
   return win32.ChangeDisplaySettingsEx(device.DeviceName,dm)
# this code referred from "https://docs.microsoft.com/ko-kr/previous-versions/ms812499(v=msdn.10)"
cs

위 함수는 rotateDic로 부터 값을 받아와 해당 방향으로 화면 방향을 바꿔준다.
rotateDic는 다음과 같다 "{"Right":"90", "Idle":"0", "Left":"270"}"
rotateTO는 피버시노 디바이스로 부터 밭은 시리얼 값을 rotateDic을 통해 각도(90, 0, 270)로 알려주는데 이 를 90으로 나누어 사용하면된다.

  • 점유율
다음은 시스템 자원을 얼마나 사용하는지 알아봤다.
일반적인 작업 환경에서 사용하는 디바이스이기 때문에 작업중인 프로그램들은 종료하지 않았다.

1. 피벗이노가 놀고 있을때

2. 피벗이노가 열일 할 때( 1분동안 마구 흔들었다.)


메모리 점유율은 빌드시 5.1MB 정도이고 CPU는 1~3% 정도이다.
실사용에서 1분동안 모니터를 마구 회전해서 사용하는 상황은 극히 드물기 때문에
컴퓨터 이용에 장애가되는 일은 발생하지 않는다.


  • 업데이트 버전
=====================================================
피버시노 v1.0
피버시노 v1.1
피버시노 v1.1.1
피버시노 v1.1.2
피버시노 v1.1.3

Comments

Popular posts from this blog

[POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

[AD보드] - 맥북 패널을 모니터로 만들기 ( LP154WP4-TLA1 )

[Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결