好的,我遇到了問題。我正在編寫使用微軟飛行模擬器X SDK和Arduino的東西。該應用程序應該通過串行端口將數據發送到Arduino板,和我使用這個功能:串口通信Arduino,C++
http://playground.arduino.cc/Interfacing/CPPWindows
程序完美的作品,除了它突然停止工作。 (1)連續執行一個函數,向模擬器請求數據,然後通過串行發送一個字符串。這就是我所說的功能寫數據的方法:作爲cadena
我送字符串
WriteData((char *)cadena.c_str(),8);
。 功能的寫數據是這樣的:
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;
}
我已經看到了,如果我評論了整個if-else
,因此函數WriteFile
不會被調用時,程序不會停止工作,完美的推移(除了事實該信息不會發送給Arduino)。如果該行被執行,程序會在一分鐘左右後停止。而停止我並不意味着崩潰或什麼,我只是說它停止,控制檯仍然在那裏所有的消息,它只是停止工作。
可能會發生什麼?
編輯:好的,arduino也不斷地發送數據,這是從來沒有讀過的程序,這可能是一個問題?難道是緩衝區已滿並且WriteFile正在等待空間寫入嗎?,因爲知道我不寫入串行,它似乎工作得很好...
感謝您的回答。我會嘗試其中的一些看看它是如何工作的。 – MyUserIsThis