우노와 레오나르도중 뭘 살까 고민하던중에 레오나르도가 키보드처럼 인식 시킬 수 있다라고 주어 듣고 샀다가 좀 난감한 일을 격었습니다. 알고보니 설정문제라니-_-; 1.값이 안 읽힌다? 원래 .net에서는 시리얼 포트에 'DataReceived'만 연결하면 시리얼 포트에서 값이 넘어오면 이벤트가 발생해야 합니다. 그런데 'DataReceived'이벤트는 오지 않고..... 그래서 쓰래드를 만들어서 돌리니 쓰래드가 그냥 죽네 ㅡ,.ㅡ;;; (오류 메시지도 없이 죽는 경우는 처음 봤습니다;;;) 이상해서 타이머추가해서 돌려보니 같은 현상.. (어차피 타이머도 쓰래드같은 역활인지라-_-;;;) 2.해결 방법 이것 때문에 거의 하루를 날려먹고 망연자실하던중 우연이 검색내용중에 '아두이노 기판 종류에 따라 다른 설..
C#의 시리얼 통신 기능을 이용하여 아두이노 보드의 LED를 켜고 꺼보겠습니다. 1. 펌웨어 작성하기 외부에서 신호를 받았는지 확인 하기 위해서는 'Serial.available()'를 사용해야 합니다. 마이컴보드에서 시리얼 포트에서 온신호를 버퍼에 저장해두는데 이 값이 있는지 확인하는 방법이 'Serial.available()'를 호출 하는 것입니다. (참고 : Arduino Reference - available() ) 이것을 이용하면 신호가 왔는지 안왔는지를 확인할수 있죠. 이렇게 버퍼에 들어있는 값은 'Serial.read()'를 통해 읽을 수 있습니다. (참고 : Arduino Reference - read()) void setup() { pinMode(13, OUTPUT); Serial.beg..
'ASP.NET WebForm'에서는 간단하게 파일을 서버로 업로드 해 보겠습니다. 예제 환경 : .Net 4.0, ASP.NET WebForm 1. 프로젝트 생성 프로젝트를 생성하고 도구상자에서 'FileUpload'를 찾아 디자이너에 추가해 줍니다. 업로드를 위해서 버튼도 하나 추가하였습니다. 1. 업로드 코드 작성 이제 업로드를 위해서 코드를 작성하겠습니다. 업로드용 버튼에 다음과 같이 코드를 입력합니다. protected void Button1_Click(object sender, EventArgs e) { //동영상 업로드 //0.파일이 있는지 확인 if ((null == FileUpload1.PostedFile) || (0 >= FileUpload1.PostedFile.ContentLength..
상황에 따라서 지금 실행중인 프로세스들의 정보를 가저와야 할때가 있습니다. 그런경우 C#에서는 'System.Diagnostics.Process'를 사용합면 됩니다. //나의 프로세스 정보를 가져옵니다. System.Diagnostics.Process MyProcess = System.Diagnostics.Process.GetCurrentProcess(); //모든 프로세스의 정보를 가져 옵니다. System.Diagnostics.Process[] AllProcess = System.Diagnostics.Process.GetProcesses(); //특정 이름의 프로세스를 가져옵니다. System.Diagnostics.Process[] Process_Name = System.Diagnostics.Proc..
이전 글에서 4.0이후버전에서 트랜스폼을 지정해 봤는데요 이전버전에서는 트랜스폼그룹(TransformGroup)을 생성하여 사용하면 됩니다. (참고 : [WPF/Silverlight] 4.0이후 버전에서 동적으로 트랜스폼(Transform) 지정하기) 한땀 한땀 원하는 트랜스폼을 추가해야 하죠. private void StartAni(Button btnMe) { //스토리보드 Storyboard story = new Storyboard(); DoubleAnimation daTemp = null; //트랜스폼 추가 //랜드트랜스폼 생성 TransformGroup tg = new TransformGroup(); tg.Children.Add(new TranslateTransform()); tg.Children..
디버그 심볼이란것은 빌드를 할때 디버깅이냐 릴리즈이냐에 따라 특정코드를 빼고 넣고 하는 기능입니다. 예를 들면 디버깅 할때는 A_DEV라는 클래스를 참조하여 디버깅이 쉽게 할수 있지만 릴리즈때는 A클래스를 참조 시켜 퍼포먼스 최적화를 노린다던가 할때 사용합니다. 저는 디버깅용 모듈을 만들어 쓰는 것을 좋아해서 디버깅 심볼을 자주 쓰진 않았습니다. 디버깅용 모듈을 만들면 릴리즈모드에서도 특정동작으로 디버그 메시지 같은 것을 출력할수 있게 하여서 디버깅이 쉽게 할수 있다는 장점 때문이죠 ㅎㅎㅎ 프로그램이 무거워 진다는 단점이 있지만 OTL 실버라이트로 넘어오니 웹서비스때문에 디버그 심볼을 자주 이용하게 되서 정리해 둡니다. 1.디버그 심볼 지정하기비주얼 스트디오에서 프로젝트 속성 > 빌드 > 조건부 컴파일 ..
관련글 c++ DLL을 C#에서 사용해보자 ( 함수 마샬링 ) c++ DLL을 C#에서 사용해보자 ( 클래스 마샬링 ) 클래스 마샬링을 할일이 없엇 신경을 안쓰다가 요번에 스카이프 api나 제가 직접 마샬링 해볼까 해서 클래스 마샬링을 정리해 보았습니다. 근데 왜이렇게 자료가 없지? 겨우 찾은것이 비주얼C++ 팀블로그인데....네...영어입니다 ㅡ.-; (참고 : Visual C++ Team Blog - Inheriting From a Native C++ Class in C#) 일단 변환방법이 마음에 들지가 않아서 위글에 있는 내용을 그대로 사용하여 만들고 자료를 더 찾는다면 파트2로 돌아오 겠습니다 ㅎㅎㅎㅎ 그전에 이 글은 크게 2부분으로 나누어 설명할 예정입니다. 어찌됬건 프로그래머라면 일단 샘플부터..
성태님의 글을 보다가 '겹치지 않는 랜덤값'을 구하는 알고리즘에 대해 쓸 글을 보았습니다. 성태님의 홈페이지 - 중복없는 숫자를 랜덤으로 배열하는 방법 저도 예전에 '숫자야구'와 '로또 번호 생성기' 때문에 이 알고리즘에 대한 생각을 많이 했었습니다. 지금은 클래스 화 시켜놨죠. 저 글을 보면서 느낌 점은 '기존 세대'와 '객체지향 세대'의 갭이였습니다 ㅡ,.ㅡ; 제가 이 알고리즘을 만들 때만 해도 리스트나 해쉬 같은건 생각도 못 했는데 말이죠 ㅎㅎㅎㅎ 어찌됐건 성태님의 글의 방법1~5번까지 숙지하시면 이 포스팅을 읽는 데 도움이 됩니다. (안 읽어도 크게 지장은 없습니다.ㅎㅎㅎ) 편의상 제가 만든 알고리즘을 '방법 6'이라고 하겠습니다. 1. '방법6' 이해하기 겹치지 않는 숫자를 배열하려면 순서가 이..
C++에 함수 콜백이 있다면 C#에는 이벤트가 있죠. 이벤트라는 것은 특정 행위가 일어났을 때 이것을 외부로 알리기 위한 도구입니다. 0. 이벤트 사용 설마 이 글을 읽으면서 아직도 이벤트 연결을 못 하는 사람이 있을 거라는 생각은 하지 않지만....그래도 모르니 ㅎㅎㅎ //이벤트 연결 this.insSkype.OpenCompleteEvent += new claSkype.OpenCompleteEventHandler(insSkype_OpenCompleteEvent); ... ... void insSkype_OpenCompleteEvent(object sender, claSkype.OpenCompleteEventArgs e) { MessageBox.Show(e.Temp.ToString()); } +=을 하는..
왜 케랙타는 있는데 스트링은 없는거냐!! 라는 생각을 여전이 합니다만.... 그런것과 상관없이 잘만들어서 쓰고 있으니 ㅎㅎㅎ 아래 맨위에 칸에 숫자와 문자를 넣고 입력을 누르면 결과를 보실수 있습니다. private bool IsNumeric(string value) { foreach (char cData in value) { if (false == Char.IsNumber(cData)) { return false; } } return true; } 코드를 보시면 아시겠지만 string는 c++로 보자면 char[]입니다. 스트링은 가변 캐랙타가 되는거저. 그래서 스트링으로 선언되있는 문자열은 배열로 접근이 가능합니다. 가끔 스트링에서 특정위치의 값을 꺼낼때 서브스트링같은 방법으로 꺼내는 사람들이 있는데..