Я не могу найти то, что хочу, так как не знаю, как обратиться к тому, что хочу сделать, поэтому я просто опишу это. Я думаю, что знания о mbed на самом деле не нужны, так как я плохо объясню эту часть.
У меня есть функция прерывания в моей программе mbed, которая выполняется каждый раз, когда поступает вход от последовательной связи на ПК.
Serial pc(USBTX,USBRX); //makes a serial link with pc
int main() {
pc.attach(&newCommand); //everytime input from pc is detected, this interrupt will make scheduler go to function called 'newCommand'
//here, fetch one array of chars to work with, the oldest in the queue and analyse the command. If there is none available, wait for one to become available
}
void newCommand() {
int inputCount = 0;
int inputBuff[64];
while (pc.readable()) { //check if there is anything to read
if (inputCount < 64) // check for buffer overflow, maximum 64 ints
inputBuff[inputCount] = pc.getc();
else
pc.getc(); // ran out of space, just throw the data away.
inputCount++;
}
//store this char array (inputBuff) in a sort of queue, with the oldest at the front
}
Какую очередь я бы искал? Я думал, что, может быть, у меня может быть глобальный векторный контейнер, в котором хранятся эти массивы, а затем основная программа выбирает самый старый, но я не уверен, как это сделать?
Edit: я думаю, я мог бы также сделать вектор вместо массива для хранения символов, как в someVect.push_back (pc.getc ()). Будет ли это проще хранить в очереди векторных типов?