Leggere/Inviare dati sulla porta seriale c++ (Arduino UNO)

Buon giorno a tutti.
Sto provando da un po' a leggere degli output di arduino via codice .
La scheda è "nuda", cioè è solo stata attaccata via USB al pc, il sistema operativo è ubuntu 14.04.

Questo è il codice di Arduino (uno), la porta scritta in basso a destra dell'ide è "/dev/ttyACM0"

void setup() {
    Serial.begin(9600);   // opens serial port, sets data rate
     Serial.println("INIZIO");
}

void loop() {
    Serial.println("prova");
    delay(2000);
}

questo è il codice in c++

#include <iostream>
#include <stdio.h>
#include <string.h>


using namespace std;

char serialPortFilename[] = "/dev/ttyACM0";

main()
{
	char readBuffer[1024];
	int numBytesRead;

	FILE *serPort = fopen(serialPortFilename, "r");

	if(serPort == NULL)
	{
		cout << "ERROR: serial port don't found!!" << endl;
	}

	cout << serialPortFilename << ": ";
	while(1)
	{
		memset(readBuffer, 0, sizeof(readBuffer));
		fread (readBuffer, sizeof(char), 1024, serPort);
		if(sizeof(readBuffer != 0))
		{
			cout << readBuffer;
		}
	}

Eseguendo il programma mi stampa il messaggio di errore e non riesco a leggere quelle che arduino scrive nella porta seriale,
aggiungo che se al codice di arduino aggiungo "Serial.available" mi ritorna sempre 0.

Ho provato anche a:
cambiare usb,
cambiare porta seriale,
imprecare..

Grazie, Buona giornata.

frafra800:
Eseguendo il programma mi stampa il messaggio di errore e non riesco a leggere quelle che arduino scrive nella porta seriale,
aggiungo che se al codice di arduino aggiungo "Serial.available" mi ritorna sempre 0.

Aggiungere Serial.available() ad Arduino non serve a nulla se da Arduino spedisci solo ma non leggi nulla.
Quel comando chiede se Arduino ha ricevuto qualcosa.

Sei su Linux, non lo conosco bene. Per errore intendi ""ERROR: serial port don't found!!" ??
Potresti non avere i permessi da quel programma per leggere dalla porta. Prova ad eseguire il tuo programma C++ con dei privilegi maggiori (usando sudo)

Grazie mille! Adesso funziona, sono passato da poco a linux e non sono abituato ad usare il terminale :blush:

Adesso ho un altro "problema", quando collego arduino a volte cambia il numero della porta es:
.../ttyACM0, .../ttyACM1, ecc...

Come posso fare per far riconoscere la porta in automatico? La mia idea è quella di cambiare il numero finale con un ciclo finchè non trova la porta giusta, ma magari esiste un modo più "elegante".

Grazie.