닷넷에서 클래스(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...
유니티의 에디터에서 파일을 선택해서 테스트 할때는 'Open File Panel'를 이용하면 됩니다.(참고 : unity Documentation - EditorUtility.OpenFilePanel)이 포스팅은 'Open File Panel'을 사용하는 하는 방법을 설명합니다.(런타임에서는 사용할 수 없음.) 1. 사용방법 'using UnityEditor;'를 추가한 후 'EditorUtility.OpenFilePanel'를 호출 하면 됩니다. EditorUtility.OpenFilePanel([다얄로그에 표시할 제목], [처음 표시될 디렉터리], [허용할 확장자]); 2. 테스트 해보기 이제 직접 사용해 봅시다. using UnityEngine; using System.Collections; usi..
슈퍼소켓(SuperSocket)을 테스트 하다보니 예상하지 못한 문제가 몇 가지 있네요 ㅎㅎㅎㅎ 여러 문제 중 클라이언트에서는 데이터를 전송했는데 서버에서 반응이 없는 경우를 알아봅시다. 0. 문제의 확인 클라이언트에서 데이터를 보내 봅시다. 서버에서 접속되었다는 메시지가 잘 출력되는 것으로 보아 서버에 접속은 됐습니다. 그런데 메시지를 보내면(스크린 샷에서 '보내기'로 표시된 부분이 메시지를 보내는 부분입니다.) 서버에서 응답이 없습니다 ㅡ.ㅡ (정상적인 동작이라면 서버로 보낸 메시지가 그대로 돌아와야 합니다.) 그래서 기존에 만들었던 서버로 테스트해보니 클라이언트에서 데이터는 잘 넘어오고 있습니다. 1. 문제의 이유 이런 문제가 발생하는 것은 슈퍼소켓의 기본리시브필터가 아스키(ASCII)로 된 텔넷 ..