int Handshake( void ) { char test_char; int i; int master = 0; for( i = 0; i < 100; i++ ) /* Flush the buffer */ Serial_Read( &test_char ); delay( 1000 ); if( Serial_Read( &test_char ) == -1 ) { /* printf("We are the master \n"); */ master = 1; while( Serial_Read( &test_char ) == -1 ) { if( Jon_Kbhit() ) /* If user hits escape return error */ { if( Jon_Getkey() == INDEX_ESC ) return -1; } Serial_Write( '1' ); delay( 500 ); } for( i = 0; i < 100; i++ ) /* Flush the buffer */ { delay(1); Serial_Read( &test_char ); } delay( 500 ); } else { /* printf("We are the slave \n"); */ Serial_Write( '2' ); for( i = 0; i < 100; i++ ) /* Flush the buffer */ { delay(1); Serial_Read( &test_char ); } } return master; } /* End of Handshake() */
void WaitForChar(int *fd, char ch) { char buffer[2]; char c; buffer[1] = 0; do { Serial_Read(fd, buffer, 1); c = buffer[0]; }while(c != ch); }
void ZigBee::receive() { if( (st_BufferIn.lengthData = (char)Serial_Read(st_BufferIn.Data, 95)) < 0) {// !! SA ASSURER QU'IL PEUT LIRE MOINS DE 95 OCTETS return; } if(st_BufferIn.lengthData == 0) { printf("HELLO\n"); return; } bReadyToSend = true; decodeTrame(); }
size_t fread_serial(void *buffer, size_t size, size_t count, FILE *stream) { short bytes; size_t read = 0; // Don't get stuck waiting for a block to come in (buffer is 256 bytes) if (size > 256 || serial_ensureopen()) { IOERR(stream, EIO); return 0; } while (count-- > 0) { while (Serial_PollRX() < size); Serial_Read(buffer, size, &bytes); buffer += size; read++; } return read; }
// Get the index LED, property int SerialOsc_BlobPropertyGet( int property, uchar* blob, int maxSize ) { int xfer = 0; switch ( property ) { case 0: { int length = Serial_GetReadable(); xfer = ( length < maxSize ) ? length : maxSize; if ( xfer > 0 ) Serial_Read( blob, xfer, 100 ); break; } } return xfer; }
bool ZigBee::ConfigZigBee() { Serial_Send(param_ENTRE_CONFIG, 3); Serial_Read(cRecevBuff, 2); //Reçoit la confirmation if(cRecevBuff[0] != 'o' || cRecevBuff[1] != 'k') { return false; //Si pas de confirmation, on quite } Serial_Send(param_ADRESSE_EMET_H, 4); //Demande l'adresse de l'émetteur (MSBs) Serial_Read(cRecevBuff, 4); printf("adresse du module : %X %X %X %X ",cRecevBuff[0],cRecevBuff[1],cRecevBuff[2],cRecevBuff[3]); Serial_Send(param_ADRESSE_EMET_L, 4); //Demande l'adresse de l'émetteur (LSBs) Serial_Read(cRecevBuff, 4); printf("%X %X %X %X\n",cRecevBuff[0],cRecevBuff[1],cRecevBuff[2],cRecevBuff[3]); Serial_Send(param_ADRESSE_DEST_H, 4); //Demande l'adresse du recepteur (MSBs) Serial_Read(cRecevBuff, 4); if(strncmp(cRecevBuff, HISTORY_DEST_H, 4) != 0) { // return false; //Si différente, on tape dedans... } Serial_Send(param_ADRESSE_DEST_L, 4); //Demande l'adresse du recepteur (LSBs) Serial_Read(cRecevBuff, 4); if(strncmp(cRecevBuff, HISTORY_DEST_H, 4) != 0) { // return false; //Si différente, on tape dedans... } Serial_Send(param_QUITE_CONFIG, 4); //Quite la Config Serial_Read(cRecevBuff, 2); //Reçoit la confirmation if(cRecevBuff[0] != 'o' || cRecevBuff[1] != 'k') { return false; //Si pas de confirmation, on quite } return true; }
/* Get one character from the remote computer...if it takes long enough... return 0 */ int Get_One_Character( char *ch ) { unsigned long starting_time; int error = 1; /* One means no error */ starting_time = absolute_time; while( Serial_Read( ch ) == -1 ) { /* if( absolute_time > (starting_time + NUM_CLICKS_TILL_DISCONNECT) ) { error = 0; break; } */ } /* End of while */ return(error); } /* End of Get_One_Character() */
void ReadCode(char* code) { int fd; int i; char ch; char buffer[2]; buffer[1] = 0; i = 0; fflush(stdin); Serial_Open(&fd, "/dev/ttySP1", B9600); WaitForChar(&fd, '-'); while(1) { Serial_Read(&fd, buffer, 1); ch = buffer[0]; if(ch == '\n') break; code[i++] = ch; } code[i-1] = 0; Serial_Close(&fd); }