좋아, 문제가있어. 저는 마이크로 소프트 비행 시뮬레이터 X SDK와 Arduino를 사용하는 프로그램을 만들고 있습니다. 응용 프로그램은 아두 이노 보드에 시리얼 포트를 통해 데이터를 전송하도록되어, 나는이 기능을 사용하고 있습니다 :시리얼 포트 통신 Arduino, C++
http://playground.arduino.cc/Interfacing/CPPWindows
프로그램이 갑자기 작동을 중지하는 것을 제외하고 완벽하게 작동합니다. 이 프로그램은 (1) 시뮬레이터에 데이터를 요구하는 함수를 연속적으로 실행 한 다음 직렬로 문자열을 보내는 while 루프입니다.
WriteData((char *)cadena.c_str(),8);
cadena
내가 보내고있다 문자열 인 : 이것은 내가 함수 writeData는 부르는 방법입니다. 함수 writeData는은 이것이다 : 나는 기능 WriteFile
가 호출되지 않도록, 전체 if-else
를 언급하는 경우, 프로그램이 작동을 중지하지 않고 사실을 제외하고 (완벽에가는 것을 본 적이
bool Serial::WriteData(char *buffer, unsigned int nbChar)
{
DWORD bytesSend;
//Try to write the buffer on the Serial port
if(!WriteFile(this->hSerial, (void *)buffer, nbChar, &bytesSend, 0))
{
//In case it don't work get comm error and return false
ClearCommError(this->hSerial, &this->errors, &this->status);
return false;
}
else
return true;
}
정보가 Arduino로 전송되지 않음). 그 라인이 실행되면 1 분 정도 후에 프로그램이 멈 춥니 다. 그리고 멈추는 것만으로도 충돌이나 어떤 의미가있는 것은 아닙니다. 단지 멈추는 것을 의미합니다. 콘솔은 여전히 모든 메시지와 함께 작동하며 멈추는 것입니다.
무슨 일이 벌어 질 수 있습니까?
편집 : 좋아, Arduino도 프로그램에서 읽지 않은 연속적으로 데이터를 보내고 있었는데 이것이 문제가 될 수 있습니까? 버퍼가 꽉 찼고 WriteFile이 쓰는 공간을 기다리고 있었을 수 있습니까? 직렬로 쓰지 않는다는 것을 알고 있기 때문에 잘 작동하는 것 같습니다 ...
답변 해 주셔서 감사합니다. 나는 그것이 작동하는 방법을보기 위해 그 중 일부를 시도 할 것이다. – MyUserIsThis