Q&A Home > 고객지원 > 기술지원 > Q&A
(공부하고 물어봅니다.)시리얼 통신을 하려고 하는데 막힙니다.
카테고리Ubiquitous Sensor Network
작성자박용태 아이피117.16.23.119
작성일09-11-16 05:23 조회수2049
파일
안녕하세요. 제가 PC에서 무선으로 릴레이를 제어하는 프로그램을 짜볼려고 하는데 릴레이 노드와 0노드 사이에 통신은 잘 만들었는데 PC 에서 0번 노드로 데이터를 보내는것에서 막힙니다.

노드에서 피시로 시리얼로 보낼때는  tos/lib/serial/serial.h  파일에서 헤더 부분을 참조해서 데이터를 보냈는데
PC에서 데이터를 받을 때는 어떠한 타입으로 데이터가 들어오는지요.

제 생각에는 어떻게 들어오는지 알아야 거기에 알맞은 메세지를 만들 수 있을것 같은데요.. 

아래 처럼 0번 노드의 수신 부를 구현 한다고 할 때  ytMAC_msg 라는 포맷을 어떻게 만들어야 하나요?

보내려는 데이터(어떤 구조로 만들어야 되는지 몰라서 실습9의 예제 보고 만들었습니다. ack 메세지는 날라옵니다.)
7E 44 00 00 FF FF 00 00 05 20 10 07 07 07 07 07 97 53 7E

message_t Sendmsg;
(중략)...
event message_t* Serial_Receive.receive(message_t* msg, void* payload, uint8_t len) {
   struct ytMAC_msg *recv = (  struct ytMAC_msg *) call  DataMsg.getPayload(&Sendmsg);
   memcpy((v0id*)recv, payload, len);
   post sendtoRF();
  return msg;
 }

struct ytMAC_msg {
... 
How to make?
...
}

다음글 [re]hbe-robocar 관련 질문사항입니다
이전글 uuencode 사용법

댓글 등록은 로그인 하신후 이용하실 수 있습니다.


박용태
2009-11-17 09:50 삭제
2009-11-17 09:39
결국 삽질로 제가 답하네요
(데이터 길이 항목 뒤에 있는 그룹과 타입은 왜 어떻게 사용되는지 잘 모르겠지만..) 위의 메시지를 보내게 되면 베이스 노드에서 받았을때 payload 부분에는 07 07 07 07 07 만 저장이 되더군요 그래서 ytMAC_msg 구조체를 제 입맛에 맞게 만들수 있었습니다. 순수하게 데이터만 넘어오니 나머지 정보(헤더?) 등들도 가져오려면 베이스 스테이션 소스를 좀더 봐야 될듯 합니다.
7E : 시작
44 : ack 요구하는 메시지
00 : seq
00 : DispatchID
================<데이터 부분이라고는 하는데..>
FF FF : dst
00 00 : src
05 : len
20 : group
10 : type
================<위의 것은 또다른 헤더인듯>
================<아래는 실제 넘어오는 데이터>
07 07 07 07 07
================<아래는 crc 2바이트 - 계산요구 됨>
97 53
7E :종료
117.16.23.119