왕초짜라고 하셨으니 흐름 파악에 도움될만한것 몇가지만 적어 봅니다.
먼저 여기서 말하는 제어는 PC <---> 보드의 통신이 되겠지요.
그러면 두 기기간의 통신할 방법을 먼저 찾아 봅니다.
하드웨어적으로 찾아보고 소프트웨어적으로 찾아 봅니다.
먼저 '하드웨어적 통신 방법'
[PC]
마우스,키보드는 PC를 제어하기위한 것이니 이것을 제외한 입출력 포트를 찾아봄.
- RS232
- Paraller
- USB
- Ethernet
- 1394
- 그외 PC마다 더 있거나 없거나....
[보드]
- RS232 ?
- USB ?
- 기외 더 있거나 없거나...
위 두가지 기기에서 공통되는 입출력 포트를 찾아 봅니다.
여기서는 'RS232', 'USB'가 PC와 보드 둘다 가지고 있는걸로 나왔네요.
그럼 'RS232'와 'USB'둘중의 하나를 선택합니다.
(물론 RS232와 USB, USB와Ethernet처럼 성격이 다른 포트끼리 통신 할수도 있지만
이것은 매우 복잡하고 양쪽 기기에 동일한 포트가 없을경우나 특별한 경우에만 사용하고 동일한 포트가 있다면 동일한 포트끼리 통신하는게 좋습니다.)
통신간에 주고받는 데이터가 양이 많거나 속도가 빨라야 하는 업무라면 USB를, 그렇지 않고 어떤 신호를 주고 받는다면 RS232를 쓰는게 좋습니다.
예를들어 단순하게 생각하면 'PC와 보드간에 파일 복사가 이루어 진다...'라면 USB를,
'PC에서 보드에게 어떤 작업을 하게 명령어를 던진다...'라던지 할 경우 RS232를 선택 합니다.
그럴바엔 USB로 하면 명령어를 던지던 대용량 데이터 통신을 하던 하면 되니까 USB가 더 편하지 않냐...하실텐데..
맞습니다. USB가 더 편합니다.
하지만 작업거리는 USB가 훨신 많습니다.
디버깅도 훨신 까다롭습니다.
USB통신을 위해서는 보드에서 자신의 USB와 통신할수 있는 PC용 드라이버와 라이브러리가 PC용으로 제공 되어야 합니다.
만일 보드에서 PC용 USB드라이버와 라이브러리를 제공하지 않는다면 만들어야 하니까요..
USB는 프로토콜도 여러가지(Bulk, Interrupt, Isochronous)가 있고 방식도 여러 방식이 있는지라 익혀야 할것도 많지요.
'음...여러가지 고려를 해봐도 USB로 하겠다...'하시면 HID방식을 권해 드립니다.
HID는 USB를 하시게 되면 찾아 보실거라 생각하고 여기서는 설명 안하겠습니다.
HID는 여러 잇점이 있어서 단지 권하기만 합니다.
왜냐하면 어떤 작업인지에 따라 USB를 HID로 쓸수 있는지 아닌지 판단 해야 하기 때문이지요.
이쯤되면 '에라...읽다보니 뭔소린지 모르겠다 그냥 쉬운 RS232로 가자...'라고 판단 하셨을겁니다.
(왜냐하면 제가 USB는 '배보다 배꼽이 더 커지겠군..'이라는 생각이 들게 설명을 해서지요.. -.-)
RS232는 쉽습니다.
자료도 많고 표준 입출력 장치로 확정된게 몇십년전이라 몇십년 자료가 있어도 도움이 됩니다.
(허나 보통 시리얼 라이브러리를 쓰니깐 RS232같은 자료는 없어도 큰 지장이 없습니다.)
여기까지 하드웨어적으로 통신할 방법중 입출력 포트를 선정하는 설명 이었습니다.
그럼 두번째로 '소프트웨어적으로 통신할 방법'을 찾아 봅니다.
[PC]
쉽게 가죠.
내가 지금 델파이나 C++빌더를 쓰고 있다?!
그럼 CPort인가? 하는 RS232를 제어하는 VCL이 있을겁니다.
아마 자료실에서 '시리얼'이나 'RS232'로 찾아 보시면 VCL들이 있을겁니다.
이걸 가져다 쓰면 됩니다.
VC++을 쓰고있다?
그럼 델파이나 C++빌더를 쓰시길 권장 합니다.
안된다 VC++만 써야한다..라면 CodeProjet나 소스포지라는 사이트에 가셔서 같은 키워드로 검색하시면 라이브러리가 나올겁니다. 이걸 쓰시면 됩니다.
[보드]
OS가 있는지 모르겠습니다.
있다고 치고 시리얼 드라이버가 있다면 이 드라이버를 수정합니다.
수정할 부분은 데이터를 다 받았을때의 부분이 되겠습니다.
받아서 제어 하면 되겠죠...
마지막으로 '통신규약 만들기' 입니다.
일명 프로토콜(protocol)이라는 건데 별거는 없고 보드와PC간에 통신 하기위한 규약 입니다.
보통 업무성격에 맞추어 만드는데... 간단히 잡아보면 아래와 같습니다.
+-------------+--------------------+
|헤더(2byte) | 데이터(Xbyte) |
+-------------+--------------------+
| |
|<------전체 ( 2+X byte) ----------->|
| |
데이터를 보낼때 보통 1바이트씩 보내는데요, 위의 프로토콜을 보면 전체 2+x바이트가 왔다갔다 합니다.
이 것을 패킷이라고 합니다.
요 패킷 하나가 다 오면 수신이 완료된거고 요 패킷 하나가 다 보내지면 송신이 완료 된거죠.
이렇게 만들어지 내용르 바탕으로 보드쪽에서 패킷 수신이 완료되면 데이터를 분석해서 원하는 작업을 하면 되고요,
PC쪽도 마찬가지로 원하는 작업이 있으면 패킷을 송신 하면 됩니다.
음....
"델파이로 하게되면 어떤걸 공부해야하나요 정말 염치없지만 하나부터 열까지 알려주시면 감사합니다...."
라고 하셨는데,
현재 상황이 오델로님은 어떤걸 공부해야 할지 모르겠고, 답변자는 무얼 해야할지 모르는 상황이네요.
아마도 첫발을 어디에 딛어야 할지 몰라서 그러신것 같습니다만, 무슨일을 하시려는지 모르는 상황에서는 글을 읽는 사람도 어떻게 해야할지 모르기는 마찬가지 랍니다.
끝으로...
일하다 쓰고, 일하다 쓰고 해서 제가 뭘 썼는지 모르겠습니다.
(오늘 쓴글이 신촌 새벽 4시... 길바닥의 냄새나는 그것이 아니길 간절히 빌어봅니다. 키워드 한개라도 건지시길... -.-)
오델로 님이 쓰신 글 :
: 매일 도움만 얻을려고 글남기고 하니 항상 죄송한 마음만 가득입니다...
:
: 궁금하기도 하고 당장 필요해서 그러는데요 ...
:
: 저같은 왕초짜에게 뭐믿고 하드웨어 제어를 해보라고 하네요....
:
: 저희 회사에서 쓰는 메인보드제어 프로그램을 만들라고 하는데요...
:
: 델파이로 하게되면 어떤걸 공부해야하나요 정말 염치없지만 하나부터 열까지 알려주시면 감사합니다....
:
: 막상 인터넷을 찾아보려해도 너무 막막하기도하고 어디서부터 뭐를 시작점으로 잡아야하는지도 도통 모르겠고..
:
: 그래서 이렇게 선배님들에게 조언을 구하고자 글남깁니다.
:
: 너무하다싶으시면 그냥 막연하게나마 설명좀 해주세요 델파이에서 머를 써서 머에다가 붙여라던지 그런식으로라도...
:
: 아니면 찾아볼수있는 keyword(?)라도 좀...........
:
: 너무 답답하고 죽을거같은 델파이 왕초보가.....헬프미~~~~말그대로 나좀 도와 주세요~~~~ㅜㅡㅜ
|