2009-05-19 5 views
2

웹 사이트에서 Arduino 보드로 명령을 보내는 방법을 연구 중입니다. Arduino 보드는 USB 포트 (COM 포트)를 통해 컴퓨터에 연결됩니다.ASP.NET 웹 페이지에서 서버의 USB (COM) 포트에 연결

저는 VB.NET 프로그램을 사용하여 보드에 연결하고 제어 할 수있었습니다. 또한 COM 연결을 인스턴스화하고 메시지를 보내고받을 수있는 VB.NET 클래스를 작성했습니다.

내 다음 단계는 기본적으로 내 웹 서버 (Windows   Vista에서 실행되는 IIS)와 Arduino 보드 사이의 프록시 역할을하는 프로그램을 만드는 것입니다. 사용자가 내 ASP.NET 페이지로 이동하면 페이지에서 프록시에 명령을 보내 COM 연결을 엽니 다. 연결이 열려 있고 준비가되면 프록시에 명령을 보낼 수 있습니다. 차례로 프록시는 이러한 명령을 게시판에 보내고 게시판에서받은 응답을 수신합니다. 프록시는이 메시지를 다시 ASP.NET 페이지로 전달합니다.

나는 내가 그룹이 나에게 답 수 있기를 바랍니다 몇 가지 질문 ...

  1. 이 방법으로 올바른 방향으로 I 오전 있나요? 이 작업을보다 쉽고 효율적으로 수행 할 수있는 방법이 있습니까?

  2. 두 번째 사용자가 웹 페이지를 열고 COM 포트를 열려고하면 오류가 발생한다는 것이 가장 큰 문제입니다. 이로 인해 첫 번째 연결이 실패하게됩니까? 포트가 이미 사용 중인지 먼저 확인하고 두 번째 사용자에게 메시지를 제공 할 수 있다고 생각합니다.

  3. 나는 실종되었거나 보이지 않는 다른 잠재적 인 문제가 있습니까? 이것은 모든 사용자가 액세스 할 수있게

+0

빠른 업데이트 : 이제 asp.net에서 직접 직렬 포트에 연결할 수 있다는 것을 알고 있습니다. 그러나 나는 페이지를 게시 할 때마다 연결을 열고 닫고 싶지 않습니다. http가 stateless이기 때문에, 나는 http 연결만으로 시리얼 연결을 유지할 수 없다. 사용자 세션이 켜져 있거나 사용자가 로그 아웃하거나 닫기 명령을 보내는 동안 연결을 열어보고 싶습니다. 고맙습니다! – Andres

+0

그것은 가능한 해결책을 찾은 것 같습니다 .. 단순히 세션 변수에서 내 보드에 연결하는 데 사용하는 개체를 넣은 다음 CTypeing에 의해 세션 변수를 참조하면 트릭을 수행하는 것처럼 보입니다! 내가 생각한 것에 대한 간단한 해결책은 복잡한 문제가 될 것입니다. 프록시 앱이 필요 없음 ... 그러나 전문가의 생각에 다른 솔루션이 무엇인지 들어보고 싶습니다. – Andres

답변

1

오히려 HttpSessionState 상기 접속 대상물을 저장하지 않고, HttpApplicationState에 보관.

개별 HTTP 요청에 의해 시작된 직렬 통신이 혼동되어 Arduino를 혼동하지 않도록하려면 COM 포트에 대한 액세스를 동기화하는 데주의해야합니다.

+1

답장을 보내 주셔서 감사합니다. 나는 내가 그것을 이해했다고 생각한다. 문제는 내가 너무 많은 사용자가이 정보에 액세스하는 것을 원하지 않는다는 것입니다. 한 명만 사용해야하는 내부 앱을위한 것입니다. 응용 프로그램에 인증이 필요하도록했습니다. 그러나, 이것이 효과가 있는지를 알기 위해 신청서를 제출할 것입니다. 다시 한 번 감사드립니다! – Andres

관련 문제