유튜브에 올라와있는 'OpenTK' 플랫폼 튜토리얼을 따라하는 포스팅입니다. 'OpenTK'는 'OpenGL', 'OpenCL', 'OpenAL'가 합쳐진 C#랩퍼입니다. 0. 원본 OpenTK Platformer Tutorial: Part 1 - Clearing and Drawing in our Custom Game Class 게임(Game) 클래스를 만들어 화면을 초기화(Clearing)하고 서페이스(surface)를 그리는 방법. 1. 게임 클래스 만들기 프로젝트에 'Game'클래스를 만들어 줍니다. 이 클래스는 'GameWindow'를 상속받습니다. 그리고 주요 이벤트를 오버라이드(override, 재정의)해줍니다. class Game : GameWindow { public Game(int wid..
유튜브에 올라와있는 'OpenTK' 플랫폼 튜토리얼을 따라하는 포스팅입니다. 'OpenTK'는 'OpenGL', 'OpenCL', 'OpenAL'가 합쳐진 C#랩퍼입니다. 'Mono'와 호환되여 멀티플랫폼지원합니다. 'OpenAL'과 'OpneES'도 사용할 수 있고 자말린 스튜디오(Xamarin Studio)에서도 사용 가능합니다. 0. 원본 OpenTK Platformer Tutorials: Part 0 '비주얼 스튜디오 설치' 및 'OpenTK' 라이브러리 참조 하기. 1. 설치 하기 'OpenTK' 공식홈페이지에 가서 라이브러리를 다운받습니다. (참고 : OpenTK) 설치를 합니다. 설치할때 설치경로 확인합니다. 단순히 압축을 푸는 것이기 때문에 아무곳에나 설치하셔도 됩니다. 압축을 푼 폴더에 ..
닷넷에서 클래스(Class)와 같은 오브젝트(object)를 바이트 배열(byte Array)로 만드는 건 좀 번거로운 작업이 필요합니다. 그런 번거로운 작업 중 재미있는 게 있어서 퍼왔습니다. 바로 'XML'을 이용하여 클래스를 바이트 배열로 만드는 것입니다. (참고 : code.about - HOW TO CONVERT FROM YOUR CLASS OBJECT TO BYTE[] AND VICE VERSA AND SEND IT THROUGH SOCKETS) 1. 기능 구현하기 일단 클래스를 만들어 봅시다. public class TestXML { public string Data1 { get; set; } public string Data2 { get; set; } public string Data3 {..
간만에 콘솔 프로그램을 만들다가 보니.......콘솔 프로그램은 종료 이벤트 처리를 어떻게 하지? 1. 이벤트 연결 콘솔 프로그램은 UI가 없기 때문에 이벤트를 직접 연결 해야 합니다. 해당 이벤트 이름은 'ProcessExit'입니다. (참고 : stackoverflow Gonzalo님 답변 - How to run code before program exit?) static void Main(string[] args) { AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit; } static void CurrentDomain_ProcessExit(object sender, EventArgs e) { throw new NotImplemente..
간만에 슈퍼소켓을 사용하려는 에러가 딱!!! 'System.Configuration.ConfigurationElement' 형식이 참조되지 않은 어셈블리에 정의되었습니다. 'System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 어셈블리에 참조를 추가해야 합니다. 아놔 ㅎㅎㅎㅎㅎ 이건 내용을 잘못 이해하면 컨피그에 퍼블릭 키 토큰(Public Key Token)을 추가해야 할것 같지만 사실 'System.Configuration'가 참조에 없다는 뜻입니다. 참조 관리자를 열어 어셈블리 > 프레임워크 에 보면 'System.Configuration'를 찾아 추가하시면 됩니다. 요걸 추가하면 에러가 사라집..
서보모터는 별도의 드라이버 없이 아두이노의 라이브러리만 이용하여 동작시킬 수 있습니다. (엄밀히 말해서 서보모터 안에 컨트롤러가 들어있습니다.) 테스트에 사용한 서보모터는 'DGS-288'입니다. (참고 : 스카이홀릭 - DGS-288 - Digital Servo) 1. 서보 모터 동작시키기 일단 서보모터를 연결해 봅시다. 1-1. 보드 구성 그냥 아두이노에 연결해도 됩니다. 전 포스팅을 하는 입장이라 다른 글과 비슷한 화면을 보여주기 위해 브레드보드를 사용한 것입니다. 1-2. 펌웨어 작성 서보모터는 라이브러리를 이용하면 간단하게 제어할 수 있습니다. #include int potPin = 0; int servoPin = 9; Servo servo; int nSwitch = 0; int nAngle =..
'L293D'는 스테핑모터를 제어할 때 쓰던 칩입니다. (참고 : [Arduino] L293D칩을 이용한 유니폴라 스테핑 모터(unipolar stepping motor) 제어) DC모터의 양방향 제어를 할때도 사용이 가능합니다. (참고 : 디바이스 마트 - L293D ) 'L293B'을 이용해도 됩니다. (참고 : 디바이스 마트 - L293B ) 모터는 'KR-300'와 'MDN-4RA3ETA' 사용 했습니다. (참고 : 디바이스 마트 - 서보형 DC모터 (KR-300), MDN-4RA3ETA ) 외부전원을 이용할 때는 'KR-300'를 아두이노 전원을 이용할 때는 'MDN-4RA3ETA'를 사용합니다. 1. 테스트 해보기 일단 아두이노가 아닌 손으로 배선을 수정하여 동작을 확인하기 위한 구성을 합니다..
스테핑 모터 제어에 사용한 ULN2004(ULN2003)칩은 DC모터를 단순하게 돌릴 때도 사용할 수 있습니다. ( 참고 : [Arduino] ULN2004(ULN2003)칩을 이용한 유니폴라 스테핑 모터(unipolar stepping motor) 제어 ) 여기서 '단순하게'라는 의미는 역방향으로 돌리는 것이 안 되기 때문입니다. 가격은 400원 정도 합니다. (참고 : 동신전자 - ULN2004A ) 모터는 KR-300를 사용 했습니다. (참고 : 디바이스 마트 - 서보형 DC모터 (KR-300)) 이 모터가 사용하는 전류가 '160[mA] +/- 40[mA]'이기 때문에 아두이노가 공급하는 '40mA'보다 많기 때문에 아두이노보드가 죽는 현상이 있습니다 ㅡ,.ㅡ;;; (잘못하면 아두이노가 망가집니다..
유니티에서 'DataTable'을 사용하려고 'System.Data'를 추가했습니다. 이렇게 모노디벨로퍼에서 'System.Data'를 추가했습니다. 그런데... 1. 해결 방법 이 문제를 해결하려면 유니티에서 일반적인 DLL을 추가할 때 처럼 에셋(Assets)폴더에 DLL을 추가해주면 됩니다. 문제는 '.NET'용 'System.Data.dll'은 유니티에서 사용할 수 없다는 것이죠. ('.NET'용 'System.Data.dll'는 보통 'C:\Windows\Microsoft.NET\Framework'에 있습니다. ) 먼저 모노용 'System.Data.dll'을 구해야 합니다. 1-1. 모노용 'System.Data.dll' 구하기 모노용 'System.Data.dll'을 구하기 위해서는 모노 홈..
* 2023-10-05 : 현재 이 스크립트는 유지보수가 되지 않고 있는 것으로 보입니다.* 대안에 대한 내용은 마지막에 넣어놨습니다. 이전 글에서 유니티 에디터에서 '파일 다얄로그'를 열어 파일을 선택하는 것을 했습니다. 문제는 유니티 에디터에서만 쓸 수 있다는 것이죠 ㅡ,.ㅡ;;; 그래서 검색해 보니 스크립트로 구현하는 방법이 있네요. 'ImprovedFileBrowser'라는 스크립트입니다. (참고 : unify community - ImprovedFileBrowser ) 1. 스크립트 생성하기 설명이 워낙 잘되어 있어서 전체 코드를 넣겠습니다. 이것은 픽스된 코드가 적용된 코드입니다. using UnityEngine; using System; using System.IO; using System...