나는 무선 센서 네트워크를위한 리눅스 테스트 베드를 작성 중이다. 핵심 목적은 두 노드 사이의 데이터 전송을 테스트하는 것입니다. 네트워크는 트리 토폴로지를 사용하여 실행됩니다. 네트워크의 한 노드가 "드라이버"입니다. 이 노드는 리눅스 PC에 시리얼 포트를 사용하여 연결됩니다. 내가 쓰려고하는 것은이 리눅스 PC의 소프트웨어로 네트워크에서 데이터 전송을 유도한다.리눅스 무선 네트워크 테스트 베드
Linux PC에서 실행되는 소프트웨어에서 명령을받는 "드라이버"노드는 데이터 요청 메시지를 보낸 사람 노드로 보냅니다. 보낸 사람 노드는 데이터 요청 메시지를 구문 분석하고 "드라이버"로 데이터 전송을 시작합니다. 여러 개의 보낸 사람이 존재할 수 있습니다. 모든 데이터 전송은 전송자에서 "드라이버"노드로 전송됩니다. "드라이버"노드는 수신 한 모든 데이터를 Linux 응용 프로그램에 전달합니다. 리눅스 응용 프로그램은 얼마나 많은 패킷이 다른 발송인으로부터 수신되었는지 추적합니다.
다음은 요구 사항입니다.
- 네트워크의 모든 노드는 드라이버 (대상) 일 수 있으며 모든 노드는 보낸 사람 일 수 있습니다.
- "전송"노드에 데이터를 보내는 모든 송신자가있을 수 있습니다.
- 직렬 포트에서 수신되고 Linux 응용 프로그램에서 직렬 포트로 보낸 데이터는 파일에 기록됩니다.
- 리눅스 응용 프로그램은 파일에서 데이터 요청 메시지를 읽고 지정된 시간에 보내야합니다.
- 이 Linux 응용 프로그램의 GUI입니다. "드라이버"조각난 데이터되는 보낸 사람의 데이터 다음 GUI의 선택은 C.
하나와 최종 트위스트 좋은 배치해야합니다, 그래서 모든 코드는 C에 있어야로. 보낸 사람 측에서 조각화는 장치 자체에서 처리됩니다. "드라이버"쪽 분열은 리눅스 응용 프로그램에서 처리됩니다. 따라서 리눅스 애플리케이션은 여러 개의 보낸 사람과 함께 진행되는 각 데이터 전송에 대해 조각화 창을 추적하고 조각 ACK를 전송하고 각 보낸 사람으로부터 지금까지받은 패킷 수를 추적해야합니다.
그래서 리눅스 응용 프로그램에서 여러 스레드가있는 방법 - 각 보낸 사람에 대해 하나의 스레드? 동시에 여러 개의 스레드가 하나의 직렬 포트로 잘 작동합니까?
모든 요구 사항에 대한 조언을 부탁드립니다. 기본적인 아이디어는 데이터 전송, 특히 데이터 수집 (여러 노드가 하나의 노드로 데이터를 보내는)을 테스트하는 것입니다. 위에 설명 된 것과 다른 접근법이 제안된다면 나는 그것들을 듣기를 더 이상 환영합니다.
감사 무리
제임스
센서 네트워크에 대한 읽기/쓰기 인터페이스를 설명하면 도움이 될 수 있습니다. 소켓 기반인가, 아니면 dev 파일과 ioctl 호출이있는 일종의 장치 드라이버입니까? – bmdhacks