2014-11-25 5 views
0

소켓 프로그래밍 질문은 여기에 있습니다.Arduino를 통한 다중 스레드 서버

내 인터페이스는 Android 기기 (클라이언트), 액세스 포인트를 호스팅하는 무선 모듈 및 Arduino Uno (서버)로 구성됩니다.

내 Android 클라이언트 클래스는 1 명의 사용자가 Arduino 서버 클래스에 연결하여 명령을 보낼 때 작동합니다.

내 프로그램을 동시에 많은 사용자에게 공개하고 싶습니다. 내 서버는 한 번에 하나의 연결된 클라이언트에서만 값을 읽습니다.

약간의 연구 끝에 Arduino가 자연스럽게 다중 스레딩을 허용하지 않는다는 것을 발견했습니다. 그래서 나는 많은 라이브러리를 조사하기로 결정했습니다.

이 특정 문제에 대해 사용하기로 결정한 Arduino 라이브러리는 protothreads입니다. 불행히도 Arduino를 사용하여 클라이언트의 명령을 받아들이는 서버를 만드는 예제를 찾을 수 없었습니다. 또한 나는이 라이브러리를 어떻게 만들어야 하는지를 알아 내는데 많은 어려움을 겪고있다. 내 질문에 대한 지금

는 정확히 어떻게 내 아두 이노 서버가 지속적으로 1 개 이상의 클라이언트 장치에서 수신 메시지를 수신 할 수 있도록 할 수 있습니까?

또는이 통신을 가능하게 할 클라이언트 측에서 할 수있는 일이 있습니까?

답변

1

소켓 응답을 수락하고 닫을 수 있습니까? 웹 페이지와 유사합니다. 한 번에 여러 개의 소켓을 열지 않도록하십시오. 노트는 단지 2k 램 플래시가 빠르게 진행됩니다. 하나 하나 닫고 각각의 스탠드는 자연스럽고 다양한 연결을 허용합니다. 한 번에 하나씩.

+0

그래서 사용자가 연결 한 후 메시지를 보냅니다 ... ".close()"로 포트를 닫으시겠습니까? 언제 다음 클라이언트에서 열 수 있습니까? 또는 명령이 감지 될 때마다 포트를 열지 않습니까? –

+0

연결 후 포트를 닫지 않았으므로 그렇게하겠습니다. 어떻게 진행되는지 알려 드리겠습니다. –

+0

이 방법은 효과가 없었습니다. 무선 모듈이 여전히 연결되어 있다고 생각할 수있는 약 2 분 동안 다른 장치에 연결됩니다. –