이 프로그램을 이용하면서 데이터를 받던 도중 아쉬분 부분이 있어서 급하게 기능을 추가했습니다.



위와 같이 [기억] 항목이 추가되었습니다.

이 버튼이 체크되어있는 상태에서는 처음 Select 한 포인트를 계속 기억하고 있습니다.

즉, Go 버튼만 클릭하면 동일한 지점을 계속 찍어댈수 있습니다.

데이터를 여러번 받을려다보니까 켜고 끌때마다 계속 Select 를 해줘야하는 과정이 굉장히 불편해서 추가했습니다.

아래는 Release Note 입니다.

1. 기능 버튼이 추가되었습니다.
2. 기존에 마우스 클릭시 가지고 있던 20ms 의 딜레이를 없앴습니다. 없어도 잘 되더군요
    클릭한 이벤트가 큐잉프로세스 처리되는것으로 보입니다. (이건 단순히 추측일뿐 ㅋㅋ)

나머지 기능은 똑같습니다.

역시나 소스코드는 아래에 댓글로~
비밀댓글하지 마세요 ㅋㅋ 로그인하기 귀찮아요 ㅋ

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear

인간은 필요에 따라 움직이는 동물이라고 하였던가???

바야흐로 때는 어젯밤 !!

내가 만든 모듈의 출력값과 PowerLab 이라는 Reference 장비가 보여주는 출력값 사이의 상관성을 살펴보기위해 신호처리를 할려고 데이터를 받을 준비를 하였다.

동시에 두 데이터를 저장 해 놓고 똑같이 나오는지를 확인해보려는 속셈.
헌데!!!

내손은 두개인데 마우스 포인터가 하나라서 한쪽 스타트 시키고 다른 한쪽 스타트 시키는데 아무리 빨라도 약 0.5초에서 1초는 걸리는것이 아닌가!!!

이거 나중에 데이터 받아다가 모두 다 다시 싱크를 맞춰야 할 판국!!!

허허... 이걸 어찌해야한다냐 ㅋㅋ

"그래! 자동으로 스타트 버튼을 타탁! 하고 눌러줄수 있는 프로그램을 만들어서 쓰자."

그래서 오늘 아침에 이 프로그램을 만들었다.

저녁에 데이터 받을려면 빡시게 만들어야 겠다 생각하고 조올라 만들었다.

생각보다 잘빠졌다. ㅋㅋㅋ

굉장히 잘된다 ㅋㅋ

조금 수정하고 덧붙이고 이러면 여러군데에서 써먹을 수 있는 쓸만한 새끼 프로그램들도 많이 나올듯

그럼 프로그램 소개 들어간다.

매번 그렇듯, 설치 파일은 맨 하단에 , 소스코드 요청은 댓글로~

제발 비밀글좀 쓰지 말아주셨으면 ㅋㅋ 로그인해야한단 말여요 ㅋㅋㅋ



뭐 메인 화면은 심플하다 ㅋㅋ

커다래봐야 어디다 쓰겠는가 공간만 잡아먹지 ㅋㅋ

매우 직관적으로 만들었다.

동시에 누르고 싶은 버튼수를 조기 위에서 써주고 Select 버튼을 눌르면 화면이 투명해 지면서 누르고 싶은 데를 눌러달라고 한다.


요론 메세지 박스가 뜨고 확인을 눌르면 시작한다.


그럼 이렇게 화면이 투명해 지면서 자동으로 눌르고 싶은 점을 눌러준다.

그럼 화면에 저렇게 빨간색 동그라미가 생길 것이다 ㅋㅋ

내가 잘 눌렀는지 잘못눌렀는지 확인하는 용도 ㅋㅋㅋ

처음에 설정한 갯수가 다 찍혔으면 확인을 하고 다시 한번 마우스 왼쪽 클릭하면 원래의 어플리케이션 화면이 나올 것이다.

그 후에 Go 버튼을 눌르면 전광석화와 같은 속도로 내가 지정해준 두 포인트를 타탁 하고 눌러준다 ㅋㅋ

눈에 보이지도 않는다.

그럼 어떻게 이용되는지 한번 볼까??


인터넷창 네개를 띄워놓고 MI SyncMouse 프로그램을 이용해서 종료 버튼에 동그라미 4개를 찍어주었다 ㅋㅋ

그후에 다시 GO 버튼을 눌러서 실행을 해보았다. ㅋㅋㅋ


번개같은 속도로 빠르게 꺼졌다 ㅋㅋㅋ

이런 용도로 필요하신 분들에게 큰 도움이 되었으면 한다 ㅋㅋ



소스코드는 댓글로 요청하세요~

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear

하루만에 업데이트 했습니다.



Version 1.0.0 의 보고된 오류와 1.1.0 에서 수정된 사항

1. 높은 전송 속도로 들어오는 데이터의 경우, 그래프를 그대로 모두 표시 함으로 인해 데이터 표시가 밀리던 현상.
    (하지만 큐를 사용하였기 때문에 저장 할때 데이터의 손실은 없음)

-> DownSampling Option 을 추가함으로써, 데이터 밀림 현상을 사용자가 조절할수 있도록 함.

2. 디스커넥트 후에 다시 커넥트를 누를경우 발생하는 Exception

-> 처리

3. Tx 모드를 헥사와 아스키로 구분하여 원하는 포멧으로 보낼수 있게 수정

4. 좌측 상단에 프로그래스 바를 이용하여 얼마나 데이터가 큐에 남아서 디스플레이 되고있지 않은지를 표시
   마우스를 해당 프로그래스바 Label 위로 가져갈 경우 숫자로도 볼수 있음.

5. 클리어 버튼을 눌를경우 텍스트 박스와 그래프의 디스플레이 큐를 초기화

6. 프로그래스 바의 색상 변경

7. 리시브 데이터 디스플레이 모드에 ASCII 모드를 추가

8. 저장 옵션에 ASCII 모드 추가

9. History 를 실행중에 변경할때 간헐적으로 발생하던 Exception 처리

10. 스페이스 공란을 구분자로 하여 여러 바이트의 TX 데이터를 보낼수 있게 함.

11. Disconnect 를 하지않고 프로그램을 종료할때 발생하던 Exception 처리 (쓰레드가 종료되지 않고 꺼지면서 발생하는 에러)



Version 1.1.0 에서 남아있는 오류

1. 10분이상 데이터를 계속 그래프로 디스플레이할경우 그래프 객체가 엑스박스가 뜨면서 죽어버리는 문제.
   -> 해결 못함. 하지만 이때도 데이터의 손실은 없음, 텍스트 박스는 제대로 표시됨. 저장시 데이터는 모두 저장됨.
    (HELP)



개발 초창기 잦은 Invoke 로 문제가 발생하여 다른방식으로 데이터를 넘겼는데 이것때문에 컬렉션 접근에 문제가 생기는 것인가????

잘 모르거따 진짜로 ㅠㅠ

아래는 1.1 버젼 설치파일

소스코드 필요하신분은 아래 댓글로 ㅋ

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear
여러가지 에러를 분석 하고 해석하고 얼추 쓸만한 정도로 만들었다.

뭐 별로 대단한 기능은 아니지만, 그동안 공부했던 개념들을 자체적으로 확인 및 정리하기에는 굉장히 유용했다고 생각한다.

UI 는 매우 직관적이므로 크게 설명할 부분은 없을 듯 싶다.

방금 끝내서 설치/배포 파일을 만든터라 코드를 다시 설명하고 싶지는 않다.

문제는 그래프를 뿌릴때 원래는 다운샘플링을 해서 뿌려야 되는데 들어오는 족족 잡아다가 다 뿌리다 보니 문제가 생겼다.

또 처음에 invoke 를 너무 해대다 보니 종료할때 오류가 생기기도 했고.

딱 정해진 해드웨어에서 받는 경우라면 다운샘플링을해서 문제가 없도록 하겠지만, 이것은 범용적으로 만들 계획이였어서  아직 적용하지 않았다.

하지만 텍스트 박스 업데이트나, 그래프 업데이트를 모두 쓰레드화 시켜놓음으로써 최상의 퍼포먼스를 뽑아낼수 있게 신경 썼다.

16진수 10진수 모두 디스플레이 가능하다.

텍스트로 저장할수있는 옵션이 있으며, 그래프의 히스토리 길이도 조절할수 있고 (물론 길게 잡을수록 더 데이터 표시가 밀릴것이다.) 그래프 캡쳐도 할수있다.

그래프 기능 On/Off 버튼을 만들어 놓았다. 그래프를 끄면 실시간으로 데이터 모두 뿌려준다.
이것은 디버깅 모드에서 큐에 남아있는 데이터를 확인하였기때문에 확실하다.

데이터 실시간으로 보고싶은 사람을 끄길 바란다.

실시간은 아니지만 데이터가 잘 들어오는지 아닌지 그림을 보고 싶은 경우에는 그래프를 켜서 보면 유용할것이다. 

디스플레이는 안되더라고 큐에 데이터는 모두 가지고 있기때문에 데이터를 잃어버리지 않으므로 안심하고 쓰면된다.


TX 기능은 구현은 했는데 너무 힘들어서 확인을 안했다.

나중에 버젼업할때 다시 봐야겠다.

관련학과 학부생, 대학원생들에게는 꽤나 쓸만하지 않을 까 싶다. 

 


이것이 인터페이스다

인터페이스라고 할것도 없다.

걍보면 뭐가 머하는건지 다 알수 있다 ㅋㅋㅋ

 

 

 
위에가 작동 화면들이다.

그래프를 계속 틀어놓으면 이렇듯 다 디스플레이를 못하고 데이터가 밀린다. ㅋ

하지만 큐에는 제대로 다 들어가있고

Disconnect 를 눌렀을때 위와같은 도움말이 뜬다.

아래 프로그래스 바가 큐에 남은 데이터를 얼마나 디스플레이했는지 알려준다.

데이터 저장은 Diconnect 를 눌른 후에 버튼이 활성화 되며, 10진수 16진수로 입맛따라 골라가며 저장이 가능하다.

아래는 프로그램이다.

용량도 얼마 안하니까 관심있는 분들은 다운로드 받아서 써보길 바란다.

안된다고 원망말고, 에러나 오류 있으면 댓글로 부탁한다.

시간날때 고쳐볼테니 ㅠㅠ ㅋㅋㅋ 

혹시 그래픽 디잔인을 좀 해주실분 있으면 메일이나 댓글 바란다 ㅋㅋㅋ 

소스코드가 필요한 사람도 댓글 바란다.

 

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear

이틀에 걸쳐서 완성했습니다.

C# 이란 프로그램이 객체 지향으로 굉장히 쉽고도 강력한 기능을 제시해 준다고 하여 공부를 시작했었지요 ㅋ

사실 Labview 라는 강력한 프로그램이 있고, 신호처리 부분에서도 Matlab 이라는 강력한 프로그램이 있기에 크게 도움이 되지는 않을거라고 생각했었지만 윈도우 프로그래밍도 하나정도 할줄 알면 큰 도움이 될것이라는 생각에서 시작했었습니다.

어느정도 되었다고 생각하고 자체 프로젝트를 진행하기로 마음먹고
무엇을 할까? 하다가 Radix-4 FFT 를 구현해서 그래프로 표현해 주는 프로그램을 만들기로 하였습니다.

위에서 언급한 프로그램들이 있다면 내장함수를 이용해서 간단하게 실험해 볼수 있지만, 사용하지 않으시는 다른 분야의 연구자들은 간단한 주파수 분석을 하여 주파수 분포가 어느쪽에 대략적으로 위치하는지 확인해 보고 싶으신 경우가 있을것이라고 생각했습니다 ㅋ

사실 저도 머 학부때 위의 프로그램들을 잘 사용하던 것은 아니였으니까요 ㅋㅋㅋ

그리고 가장 큰 생각은!! ㅋㅋ

혹시나 Radix 4 FFT 구현해 오라고 숙제 내주시는 교수님들 때문에 네이버 검색하다가 이 홈페이지에 들어오게 되지 않을까 하는 나의 바램? ㅋㅋ
(굉장히 조회수에 신경쓰는 멘트네 ㅋㅋㅋ)


ㅋㅋ

여튼 일단 사진 부터 ㅋㅋ



대충 요로코롬 생겼답니다 ㅋㅋ

사실 제가 처음이 C++ 로 이것을 구현했을 때는 FFT 포인트수가 높아질 때 발생하는 Stack Overflow 를 막기 위해서 메모리를 할당하고 사용하였어요 ㅋㅋ

무적의 함수 malloc ! ㅋㅋ

근데 C# 에서 가비지 컬렉션 개념이 도입되면서 new 라는 명령어로 배열에 heap 메모리를 할당해 주어야 한답니다 ㅋ

사실 배열로 해도되고 List 로 해도되고 ㅋ

뭐 여타 컬렉션을 아무거나 사용해도 문제는 없지요 ㅋ

근데 여기서는 배열로 한번 해보았어요 ㅋ 배열을 사용하는 방법이 기존의 C 에서 선언하고 사용하던것과 는 달라서 연습좀 해볼려고 ㅋㅋ

또 문제는 typedef 가 안된다는것 ㅋㅋ

struct 로 선언해놓고 typedef 처럼 사용할수 있어용 ㅋㅋ 자세한거는 나중에 C# 강의에서 설명해드릴게요 ㅋ

간단하게 말씀드리자면 #define 문을 C# 에서 사용하고 싶으면 Constants 와 같은 클래스를 하나 생성해 놓고
Constants.(  ) 라는 식으로 #define 문을 대신 할 수 있습니다.

Decimation In TIme 방식으로 구현했는데요 저는 재귀함수 콜 형태로 구현했어요 ㅋ

아래에 올려드리는 것은 Radix4 FFT 의 핵심이라할수 있는 부분이지요 ㅋ

Twiddle Factor 를 구해서 값들을 구해가는 알고리즘 ㅋ
자세한것은 이것또한 나중에 DSP 부분 포스팅에서 알려드릴게요 ㅋ



아나 하나도 안보이네 제길 ㅋㅋㅋ

아래는 제가 배포하는 설치 화면 ㅋㅋ



요래요래 설치를 하면 요론 아이콘이 나오지요 ㅋㅋ


ㅋㅋㅋ 아이콘 예뿌네 ㅋㅋㅋ

아래는 설치파일 ㅋㅋ

필요하거나 궁금하신 분을 한번 설치해서 써보세요 ㅋㅋ


test 파일은 제가 코사인 함수파형 저장해 놓은것 ㅋㅋ


아 쓰다보니까 생각이 나네 ㅋㅋ

FFT 포인트 수 바꾸면 안될수도 있을듯 ㅋㅋ 이거 한다면서 하다 말았군 ㅋㅋㅋ
하지만 1024 포인트는 무조건 동작함 ㅋㅋ

나중에 필요한 사람들이 있다고 하면 시간날때 한번 업데이트 버젼을 배포해야겠군 ㅋㅋ
특징점들 잡아서 해당 주파수와 크기를 정확히 알려주는 기능도 좀 추가를 해야겠고 ㅋㅋㅋ

하지만 이것은 연습용이였으니까 ㅋㅋㅋ
정 필요하신 분들이 있다면 댓글로 요청하세용 ㅋ

프로젝트 파일이 필요하신 분들이 있으면 댓글로 멜주소 써서 요청하세요 ㅋ 보내드리겠습니다 ㅋ
걍 C++ 로 해놓은 것도 있으니 그것이 필요하시면 고걸로 드리고 ㅋ
사실 이 코드가 더 잘짠것 같은 느낌인데 ㅋㅋㅋ

여튼 오늘은 여기까지 ㅋㅋ
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear
휴....

전에 C++ 로 Radix 4 FFT 를 구현하였다.

굉장히 잘된다.

갑자기 C# msChart 에 삘이 꽃히는 바람에 C# 으로 구현해서



그래프로 바로 볼수 있다면 좋겠다 라는 생각을 했다.

물론 MATLAB 이라는 멋진 프로그램이 있긴하지만, 그래도 공부한것을 정리해볼겸 ㅋㅋ 시!작!했!다!

근데!!! 망했다. ㅠㅠ ㅋㅋㅋㅋ

C# 은

typedef 도 안되고 ㅋㅋ #define 문도 걍 클래스 하나 만들어서 static 으로 선언해놓고 접근해야하고

메모리 할당도 지가 자동으로 해서 가비지 컬렉션이 알아서 비워준다고하는데

에효 ㅋㅋㅋㅋ

걍 배열쓸껄 이미 컬렉션 연습해본다고 List<> 로 다 짜놨는데 ㅋㅋㅋ 앰뱅 ㅋㅋㅋ

여튼 이게 완성이 되면

신호처리와 프로그래밍을 막 배우려는 사람이나 MATLAB 을 못하거나 안깔려있어서 여건이 안되는 사람들이
간단한 주파수 분석을 해봄에 있어서 비쥬얼적으로 효과적이지 않을까?

특징점들을 검출해서 정보를 알려주는 기능도 추후 버전업을 하면서 구현한다면 꽤 쓸만한 프로그램이지 않을까 싶다.

지금 GUI 는 이렇게 허접하다.

시간이 지나면 ㅋㅋㅋㅋ 똑같이 허접할것 같다 ㅋㅋ

난 미적 감각이 없으니가 ㅠㅠ

혹 미적 감각이 있으신 분들 요론 비슷하게 예쁘게 그림파일로 좀 만들어 주실수 없나용??? 

 [##_http://jbear.tistory.com/script/powerEditor/pages/1C%7Ccfile8.uf@122F93474F14C3400919D2.PNG%7Cwidth=%22630%22%20height=%22460%22%20alt=%22%22%20filename=%22a123123.PNG%22%20filemime=%22image/jpeg%22%7C_##]

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear
C# 을 이용해 만들었습니다.

여러분은 기존에 어떤 시리얼 프로그램을 쓰세요??

물론 Labview 를 이용해서 그래프로 뿌려가며 보는것이 제일 좋죠 ㅋㅋ

저도 그렇게 이용하구요

하지만 개발과정에서 간단하게 시리얼 통신 기능 자체만을 테스트하는데는 여전이 터미널 프로그램이 이용되지요 ㅋ

위도우 기본 터미널 프로그램 외에 저는 아래와같은 3가지를 이용했습니다.

1.  HSCOMM : 전남대학교 전기공학과 최홍철 님이 만들어 배포했군요 (홍 시리얼 커뮤니케이션 의 약자네요 ㅋㅋ) 

 
심플한 인터페이스!
TX 매크로 기능
좋군요 ㅋㅋㅋ


2.  Terminal v1.9b : 1994 년부터 어떤 외국 분이 만드신듯

 
나름대로 요곳도 굉장히 잘썼습니다 ㅋㅋㅋ

3. STCOM : 어디서 만들었지??

 


간단하게 보기에는 요것도 굉장히 좋아요 ㅋㅋ

다만 버퍼사이즈가 작아서 그런지 매번 클리어를 해줘야하는 단점이 ㅋㅋ

그리고 텍스트 파일로의 저장이 번거롭다는것 ㅋㅋ

 
그래서!!

제가 한번 만들어보았습니당 ㅋㅋ

연습삼아 만든것이구요~

1. TX 의 경우 크게 길게 날릴 필요가 없다.
(즉, 메크로 창으로 여러줄을 만들기보단 걍 쭈욱 써서 한줄로 날리는방식)

2. RX 버퍼 사이즈가 후달리지 않았으면 좋겠다.

3. 받은 데이터를 그래프로 볼수 있었으면 좋겠다. 

해서 탄생한 것이 MILab_Comm 

 
더 추가할 사항도 굉장히 많지만, 연습삼아 하룻밤 사이에 만들어 본것이라서 ㅋㅋ

훗날 스위치 머신과 토큰을 이용해서 원하는 문자열 단위로 구분 및 그래프 줌 기능 등을 추가하면 더 좋겠지만 ㅋㅋㅋ

여튼 완성이 되어서 뿌듯하군요 ㅋㅋ


위의 터미널 프로그램이 필요하신 분들은

댓글로 메일 주소 남겨주세요 ㅋ

제가 연구실에서 거의 24시간 있으면서, 모니터링하고 있으니 거의 실시간으로 보내드릴수 있습니당 ㅋㅋ

그럼 좋은하루 ㅋㅋ

(근데 글씨체가 정말 안예쁜가... 난 예쁜데 ㅋㅋㅋ) 

저작자 표시 비영리 동일 조건 변경 허락
신고

'9. Software' 카테고리의 다른 글

TI Filter Pro 3.1  (0) 2013.04.12
uTorrent 3.1 다운로드  (0) 2012.01.14
자체제작 C# Serial Program  (13) 2011.12.21
내가 쓰는 윈도우7 가젯들  (0) 2011.12.20
iOS5 업그레이드 토렌트  (0) 2011.10.13
아이폰 MMS 수신안되는 문제 해결  (1) 2011.05.14
Posted by J.Bear