2012-12-03 4 views
0

나는 Boost :: asio가 어떻게 작동하는지 알아 내려고하고있다. 나는 이것을보고 있었다 : http://www.college-code.com/blog/wp-content/uploads/2008/11/boost_serial_port_demo.cpp.Boost :: asio :: write는 어떻게 작동합니까?

나는 그 코드를 테스트하기 위해 Arduino에 연결했다. (나는 보드 율을 동기화했다.) cin/cin.read()를 통해 데이터를 입력 할 때 제대로 작동하지만 키보드에서 데이터를 읽는 대신 [int input = some integer]로 변경하면 Arduino는 더 이상 올바른 데이터를 가져 오지 않습니다. 나는 또한 stringstream을 사용하여 파일에서 그것을 읽으려고 시도했다. 그리고 static_casting에 의해 char하지만 그들 중 누구도 일하지 않았다. 나는 int가 다른 방법들보다 cin을 통해 할당 될 때 왜 다른가를 알아낼 수 없다.

필자가 작성한 프로그램에서이 코드를 사용하려고하지만 키보드에서 데이터를 쓸 수 없습니다. 아무도 나에게 이것을 설명 할 수 있습니까?

+0

어떤 가치를 보내시겠습니까? 싱글 바이트일까요? 수신 측의 데이터가 어떤면에서 잘못 될까요? 대화 형 프로그램이 입력을 기다리는 시간을 시뮬레이트하기 위해 단계 사이에서 잠을 자면 올바르게 전송됩니까? – MvG

+0

지금은 1이나 0을 보내려하고 있습니다. 내 Arduino가 실행중인 프로그램은 Serial.read()가 0, 1, -1 (아무 것도 읽지 않을 때의 값) 및 다른 것을 반환하는지에 따라 다른 깜박임 패턴에 대해 설정된 깜박임 스케치에 불과합니다. cin을 사용하면 arduino에 1 또는 0 (또는 다른 값)을 보낼 수 있으며 Serial.read() == 1 또는 0의 깜박임 패턴을 활성화합니다. –

+0

cin >> 입력 행에 주석을 달면 입력 = 1 (또는 무엇이든) 대신 arduino가 데이터를 수신하는 것처럼 깜박 거리며 (프로그래밍 된 내용이 아닌 데이터를 수신 할 때 자동으로 특정 방식으로 깜박입니다) 직렬을 나타내는 깜박임 패턴으로 돌아갑니다 .read()는 -1을 반환했습니다. –

답변

0

@ MvG. 타이밍상의 문제가있었습니다. 처음으로 실행했을 때, 나는 Sleep (1000)을 사용했다. write() 함수 이전에 중단 점을 사용하여 시도한 다음 한 번에 한 줄 씩 앞으로 이동하여 데이터를 올바르게 보냈습니다. 그래서 나는 수면 (10000)을 사용했다.

관련 문제