Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-11-2009, 11:20   #1
sandro76
Junior Member
 
Iscritto dal: Jun 2006
Messaggi: 13
[c linux] inviare e ricevere dati esadecimali da seriale

sto scrivendo un programma che deve inviare e ricevere dati in esadecimale su seriale
definisco due buffer come variabili globali
Codice:
//fd della seriale
extern int fd;
	/*buffer della seriale*/
extern char buffer_ingresso[10]; /*ingresso*/
extern char buffer_uscita[10]; /*uscita*/
le variabili globali sono in un altro file quindi sono extern.

setto i parametri della seriale

Codice:
	
/*apro la seriale*/
	fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);	//non bloccante comunicazione asincrona
	if (fd==0)

		{
			fprintf(spy_knx_err, "problemi nell'apertura della seriale\n\r");
			exit(-1);
		}
	
	//installo il signal hander che scattera' quando ci sono dati sulla seriale
	saio.sa_handler = signal_handler_IO;	//nome della funzione che gestira' il segnale
	//saio.sa_mask = 0;			//maschera degli altri segnali 0 default
	sigemptyset(&saio.sa_mask);
	saio.sa_flags = 0;
	saio.sa_restorer = NULL;		
	sigaction(SIGIO,&saio,NULL);

	fcntl(fd, F_SETOWN, getpid());		//registro il pid del processo che si deve occupare del segnale (questo)
	fcntl(fd, F_SETFL, FASYNC);		//abilito il segnale

	//setto la seriale
	tcgetattr(fd,&newtio);			//salvo le vecchie impostazioni della seriale
						//setto le nuove impostazioni

	cfsetispeed(&newtio, BAUDRATE);	//NUOVA FUNZIONE PER SETTARE LA VELOCITA' POSSO SCEGLIERE INGRESSO E USCITA, NON PIU' IN C_CFLAG
	cfsetospeed(&newtio, BAUDRATE);

	
	newtio.c_cflag |= (CLOCAL | CREAD);
	newtio.c_cflag |= PARENB;			

	newtio.c_cflag &= ~PARODD;			
	newtio.c_cflag &= ~CSTOPB;
	newtio.c_cflag &= ~CSIZE;
	newtio.c_cflag |= CS8;
	//newtio.c_cflag &= ~CNEW_RTSCTS;
	newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
	newtio.c_iflag |= (INPCK | ISTRIP);			
	newtio.c_iflag &= ~(IXON | IXOFF | IXANY);
	


	tcflush(fd, TCIFLUSH);
	tcsetattr(fd,TCSANOW,&newtio);				//applico le impostazioni subito
}
provo a inviare dati

Codice:
	buffer_uscita[0]=(char)8;
		buffer_uscita[1]=(char)sc;
		buffer_uscita[2]=(char)0xB1;
		buffer_uscita[3]=(char)address.int_stat_sist_sup;
		buffer_uscita[4]=(char)address.int_stat_sist_inf;
		buffer_uscita[5]=(char)0;
		buffer_uscita[6]=(char)stato_polling;
		buffer_uscita[7]=(char)(0xA5+buffer_uscita[0]+buffer_uscita[1]+buffer_uscita[2]+buffer_uscita[3]+buffer_uscita[4]+buffer_uscita[5]+buffer_uscita[6])%256;

			write(fd, buffer_uscita, 8);
			tcdrain(fd);
leggendo sulla seriale ottengo 9 byte

80 00 02 0A 06 00 04 0A F8

in lettura ho ho lo stesso problema, leggo valori diversi, tipo
invio FF e ottengo 127
dove sbaglio?
grazie

Ultima modifica di sandro76 : 09-11-2009 alle 11:24.
sandro76 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
La nuova AMD non è più 'ec...
La Cina non è più la pecor...
Un SSD accanto alla GPU: la ricetta di Z...
Texas Instruments acquisisce Silicon Lab...
NVIDIA chiede l'archiviazione della caus...
MOUSE: P.I. For Hire: sembra un cartone ...
Francia all'attacco: X sotto indagine, p...
Vodafone abilita il Wi-Fi Calling in Ita...
GTA VI: confermata l'uscita a novembre, ...
Il robot umanoide G1 di Unitree cammina ...
Gli americani comprano quasi solo iPhone...
Xcode 26.3 trasforma gli assistenti AI i...
Anche la Spagna è pronta a vietar...
Loongson 3B6000: la CPU cinese scalfisce...
Hard disk ancora protagonisti: Western D...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v