День добрый!
Столкнулся с небольшой проблемой:
Использую ACE для работы с комп портом и тп.
.....
class CSerialHandler : public ACE_Event_Handler
{
public:
int handle_input(ACE_HANDLE fd)
{
g_soResponse.clear();
for (char ch = 0; oTTY.recv(&ch, 1) == 1; g_soResponse += ch ) {;}
ACE_HEX_DUMP ( ( LM_DEBUG, g_soResponse.c_str(), g_soResponse.length(), ACE_TEXT("Response: ")) );
return 0;
}
};
.........
ACE_TTY_IO oTTY;
ACE_DEV_Connector oConnector;
oConnector.connect(oTTY, ACE_DEV_Addr(ACE_TEXT("/dev/ttyS1")));
ACE_TTY_IO::Serial_Params oParams;
oParams.baudrate = 9600;
oParams.readtimeoutmsec = 1000;
oParams.paritymode = "NONE";
oParams.databits = 8;
oParams.stopbits = 1;
oTTY.control(ACE_TTY_IO::SETPARAMS, &oParams);
.......
Проблема следующего плана: когда "приходит" handle_input я пытаюсь за раз все вычитать — вроде все ок. но когда я все вычитал(я об этом же не знаю) на следующей итерации пытаюсь вычитать и попадаю на тайматут чтения и потом уже только понимаю что все вычитано.
Вопрос: как можно организовать работу что бы не попадать на таймаут чтения