Salve ragazzi come da titolo ho un problema a gestire la lettura e la scrittura su seriale.
Per come ho strutturato il programma ho:
- un main in loop che che legge i messaggi su seriale e li scrive su un buffer,
- un thread che prende il buffer, pulisce la stringa(se sporca) e la carica su una coda,
- un thread che prende l'elemento dalla coda(se non è vuota) e lo scrive su un database.
Da notare che ho utilizzato sia la libreria mutex che quella per i thread.
Se il thread pop è commentato, il programma carica correttamente gli elementi nella coda, invece se tolgo il commento il programma va in loop e non legge neanche più da seriale.
Posto in breve la parte del programma in questione:
queue q;
while(1)
{
char buf [300]={0};
int n = read (fd, buf, sizeof buf);
if(n >0)
{
printf("Il buffer contiene la stringa: %s \n",buf);
}
/*thread Push*/
std::thread push(std::bind(pushString, std::ref(q),buf));
/*thread Pop */
std::thread pop(std::bind(&popString, std::ref(q), 1));
push.join();
pop.join();
}
Spero qualcuno possa aiutarmi. Grazie in anticipo ^_^