[Gulli] la porta più "chiusa" del secolo: la seriale

Roberto Leone Jumpy robleojump@jumpy.it
Mar 25 Lug 2006 10:51:28 CEST


salve a tutti 
premetto che non sono un esperto e neanche bravo..ma un quasi neofita.
ho da chiedervi pareri su alcuni problemi riscontrati con la porta seriale.

provando ad eseguire codici del tipo :
int main()
{
	//int fd=open("/dev/lirc",O_WRONLY | O_NOCTTY | O_NDELAY);
	//int fd=open("/dev/lirc",O_RDWR | O_NOCTTY | O_NDELAY);
	int fd=open("/dev/lirc", O_NOCTTY | O_NDELAY);
	if (fd==-1)
		{/*could not open port */
			perror("open_port: unable to open /dev/ttyS0");
			extern int errno;
			printf("%d\n", errno);
		}else
			{printf("open_port:	OK \n");

quando uso int fd=open("/dev/lirc", O_NOCTTY | O_NDELAY); non ho problemi
, ma se provo ad utilizzare 
int fd=open("/dev/lirc",O_WRONLY | O_NOCTTY | O_NDELAY);
o
int fd=open("/dev/lirc",O_RDWR | O_NOCTTY | O_NDELAY);

l'esecuzione mi restituisce
open_port: unable to open /dev/ttyS0: Permission denied
29

premesso che io devo utilizzare la write system call...secondo voi come posso
fare a risolvere il mio problemino?
io comunque ho bisogno di fare la open almeno in scrittura o lettura scrittura
altrimenti non ho speranze vero?
cioè utilizzando semplicemente  | O_NOCTTY | O_NDELAY la seriale non è abilitata
a scrivere giusto?

altra domandina?
che significa che errno restituisce un numero come nel nostro caso il 29?
perchè anche in altri casi, ad esempio sfruttando la write mi ha restituito
un numero 9 (nove)

nel manuale parla di errori del tipo EACCESS , EAGAIN ma non spiega cosa
vuol dire quando si hanno restituzioni di tipo 9, 29..ecc ecc

grazie a tutti



________________________________________
Sfida subito i tuoi amici online! http://www.jumpy.mediaset.it/Canali_J/Giochi/Directory/Giochi_Multiplayer1.shtml




Maggiori informazioni sulla lista Gulli