begin process at 2012 05 27 14:10:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > CALLERID/AFFICHEUR EN MODE CONSOLE ALA WINPOPUP

CALLERID/AFFICHEUR EN MODE CONSOLE ALA WINPOPUP


 Description

Projet perso pour afficher les appelants sur ma ligne telephonique.
En mode console, C, sous linux (ubuntu)
L'affichage ce fait a l'aide de linpopup(linux)
ou
Winpopup(windows)
Une version Alpha, mal en point...
Commentaires bienvenues

Source

  • /*Auteur : Stephane Marchand
  • *Date : 23 dec 2008
  • *Loc.: Rouyn-Noranda, Quebec, Canada
  • *Version Alpha000001, mode console
  • *requis : un modem avec fonction callerid
  • * GCC, Linpopup(linux) ou winpopup(windblows)
  • *But : avoir la fonction d'affichage en modem graphique (X, win)
  • *etat du code : mal en point
  • *J'etais suppose utilise un toolkit GTK, mais j'ai laisser tomber...
  • */
  • #include <stdlib.h>
  • #include <unistd.h>
  • #include <stdio.h>
  • #include <string.h>
  • #include <stdarg.h>
  • #include <sys/types.h>
  • #include <sys/stat.h>
  • #include <fcntl.h>
  • #include <termios.h>
  • #define BAUDRATE B38400
  • #define MODEMDEVICE "/dev/ttyS1"
  • #define _POSIX_SOURCE 1 /* POSIX compliant source */
  • #define FALSE 0
  • #define TRUE 1
  • #define MAX_FILE_LEN 256 // max length of file, dev, strbuf
  • volatile int STOP=FALSE;
  • void sendcmd(int fd, int timewait, char *fmt, ...);
  • void mygtksend(char *gtkthemessage);
  • char mystring[500];
  • int thering=0;
  • char buffermsg[501];
  • char buffermsg2[501];
  • char buf[255];
  • int freakflag;
  • int main(void)
  • {
  • int fd,res;
  • struct termios oldtio,newtio;
  • // you need your network to work with a win2000 (linux-windows)
  • // win2k is my target machine along with a linux station
  • // but... smbclient need to be install along with linpopup so
  • // from linux station you can send/receive mesg.
  • // My test were with several ubuntu station with a win2k pc
  • // Every comments below here are for debugging
  • // THIS code is from a learner and from the internet.
  • // strcat(buffermsg,"/home/titou/Documents/dev_Steph/gnomecallerid/calleridmain ");
  • fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY );
  • if (fd <0) {perror(MODEMDEVICE); exit(1); }
  • tcgetattr(fd,&oldtio); /* save current port settings */
  • bzero(&newtio, sizeof(newtio));
  • newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
  • newtio.c_iflag = IGNPAR;
  • newtio.c_oflag = 0;
  • /* set input mode (non-canonical, no echo,...) */
  • newtio.c_lflag = 0;
  • newtio.c_cc[VTIME] = 0; /* inter-character timer unused */
  • newtio.c_cc[VMIN] = 5; /* blocking read until 5 chars received */
  • tcflush(fd, TCIFLUSH);
  • tcsetattr(fd,TCSANOW,&newtio);
  • sendcmd(fd, 3, "+++\r");
  • sendcmd(fd, 3, "ath\r");
  • sendcmd(fd, 3, "at#CID=1\r");
  • while (STOP==FALSE) { /* loop for input */
  • res = read(fd,buf,255); /* returns after 5 chars have been input */
  • buf[res]=0; /* so we can printf... */
  • /*printf(":%s:%d", buf, res);*/
  • //printf("%s", buf);
  • if(freakflag==1){
  • buf[0]='\0';
  • printf("freakflag to 1");
  • }
  • mygtksend(buf);
  • if (buf[0]=='z') STOP=TRUE;
  • }
  • tcsetattr(fd,TCSANOW,&oldtio);
  • return 0;
  • }
  • void sendcmd(int fd, int timewait, char *fmt, ...)
  • {
  • char strbuf[MAX_FILE_LEN];
  • va_list ap;
  • bzero(strbuf, sizeof(strbuf));
  • // flush i/o
  • tcflush(fd, TCIOFLUSH);
  • // send the command
  • va_start(ap, fmt);
  • vsnprintf(strbuf, sizeof(strbuf) - 1, fmt, ap);
  • write(fd, strbuf, strlen(strbuf));
  • va_end(ap);
  • //wait for whatever char has been transmitted
  • tcdrain(fd);
  • sleep(timewait);
  • return;
  • }
  • void mygtksend(char *gtkthemessage){
  • //sending message to 2 stations
  • //so 2 buffers
  • if(strstr(gtkthemessage,"RING")!=NULL) thering++;
  • if(thering==2){
  • thering=0;
  • // send message to gtk prog.
  • strcat(buffermsg,"echo \"GNOMECALLERID\n\r");
  • strcat(buffermsg2,"echo \"GNOMECALLERID\n\r");
  • strcat(buffermsg, mystring);
  • strcat(buffermsg2, mystring);
  • strcat(buffermsg,"\" | smbclient -M drebi");
  • strcat(buffermsg2,"\" | smbclient -M voyager");
  • //printf("%s", buffermsg);
  • system(buffermsg);
  • system(buffermsg2);
  • buffermsg[0]='\0';
  • buffermsg2[0]='\0';
  • mystring[0]='\0';
  • // freaking put the buffer to 0 character !!!
  • freakflag=1;
  • }else{
  • strcat(mystring, gtkthemessage);
  • freakflag=0;
  • }
  • // printf("%s",gtkthemessage);
  • return;
  • }
/*Auteur : Stephane Marchand
 *Date : 23 dec 2008 
 *Loc.: Rouyn-Noranda, Quebec, Canada
 *Version Alpha000001, mode console
 *requis : un modem avec fonction callerid
 *         GCC, Linpopup(linux) ou winpopup(windblows)
 *But : avoir la fonction d'affichage en modem graphique (X, win)
 *etat du code : mal en point
 *J'etais suppose utilise un toolkit GTK, mais j'ai laisser tomber...
 */

	  #include <stdlib.h>
	  #include <unistd.h>
      #include <stdio.h>
      #include <string.h>
	  #include <stdarg.h>
	  #include <sys/types.h>
      #include <sys/stat.h>
      #include <fcntl.h>
      #include <termios.h>
        
      #define BAUDRATE B38400
      #define MODEMDEVICE "/dev/ttyS1"
      #define _POSIX_SOURCE 1 /* POSIX compliant source */
      #define FALSE 0
      #define TRUE 1
      #define MAX_FILE_LEN	256		// max length of file, dev, strbuf

      volatile int STOP=FALSE;

      void sendcmd(int fd, int timewait, char *fmt, ...);
      void mygtksend(char *gtkthemessage);

   	  char mystring[500];
	  int thering=0;
	  char buffermsg[501];
	  char buffermsg2[501];	  	  
      char buf[255];	  
      int freakflag;

      int main(void)
      {
        int fd,res;
        struct termios oldtio,newtio;

// you need your network to work with a win2000 (linux-windows)
// win2k is my target machine along with a linux station
// but... smbclient need to be install along with linpopup so
// from linux station you can send/receive mesg.
// My test were with several ubuntu station with a win2k pc
// Every comments below here are for debugging
// THIS code is from a learner and from the internet.


//		strcat(buffermsg,"/home/titou/Documents/dev_Steph/gnomecallerid/calleridmain ");
		
        fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ); 
        if (fd <0) {perror(MODEMDEVICE); exit(1); }
        
        tcgetattr(fd,&oldtio); /* save current port settings */
        
        bzero(&newtio, sizeof(newtio));
        newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
        newtio.c_iflag = IGNPAR;
        newtio.c_oflag = 0;
        
        /* set input mode (non-canonical, no echo,...) */
        newtio.c_lflag = 0;
         
        newtio.c_cc[VTIME]    = 0;   /* inter-character timer unused */
        newtio.c_cc[VMIN]     = 5;   /* blocking read until 5 chars received */
        
        tcflush(fd, TCIFLUSH);
        tcsetattr(fd,TCSANOW,&newtio);

		sendcmd(fd, 3, "+++\r");
		sendcmd(fd, 3, "ath\r");
		sendcmd(fd, 3, "at#CID=1\r");		

        while (STOP==FALSE) {       /* loop for input */
          res = read(fd,buf,255);   /* returns after 5 chars have been input */
          buf[res]=0;               /* so we can printf... */
          /*printf(":%s:%d", buf, res);*/
          //printf("%s", buf);
          if(freakflag==1){
          	buf[0]='\0';
          	printf("freakflag to 1");
		  }

          mygtksend(buf);

          if (buf[0]=='z') STOP=TRUE;
          }
          tcsetattr(fd,TCSANOW,&oldtio);
          return 0;
      }
void sendcmd(int fd, int timewait, char *fmt, ...)
{
	    char strbuf[MAX_FILE_LEN];
        va_list	ap;

        bzero(strbuf, sizeof(strbuf));

        // flush i/o
        tcflush(fd, TCIOFLUSH);

        // send the command
        va_start(ap, fmt);
        vsnprintf(strbuf, sizeof(strbuf) - 1, fmt, ap);
        write(fd, strbuf, strlen(strbuf));
        va_end(ap);

        //wait for whatever char has been transmitted
        tcdrain(fd);
        sleep(timewait);

        return;
}
void mygtksend(char *gtkthemessage){
//sending message to 2 stations
//so 2 buffers
	if(strstr(gtkthemessage,"RING")!=NULL) thering++;
	if(thering==2){
		thering=0;
		// send message to gtk prog.
		strcat(buffermsg,"echo \"GNOMECALLERID\n\r");
		strcat(buffermsg2,"echo \"GNOMECALLERID\n\r");		
		strcat(buffermsg, mystring);
		strcat(buffermsg2, mystring);		
		strcat(buffermsg,"\" | smbclient -M drebi");
		strcat(buffermsg2,"\" | smbclient -M voyager");		
		//printf("%s", buffermsg);
		system(buffermsg);
		system(buffermsg2);		
		
		buffermsg[0]='\0';
		buffermsg2[0]='\0';		
		mystring[0]='\0';
		// freaking put the buffer to 0 character !!!
		freakflag=1;
	}else{
		strcat(mystring, gtkthemessage);
		freakflag=0;
	}
//	printf("%s",gtkthemessage);	
	
	return;
}

 Conclusion

ca fait le travail mais c'est pas tres 'beau' comme code


 Sources de la même categorie

Source avec Zip Source avec une capture INFORMATION PROCESSEUR (CPUID) par Devils_Tiger
Source avec Zip Source avec une capture LECTURE TEMPÉRATURE PROCESSEUR par Devils_Tiger
Source avec Zip Source avec une capture LECTURE FRÉQUENCE PROCESSEUR par Devils_Tiger
Source avec Zip Source avec une capture UNE LISTE HÉTÉROGÈNE DOUBLEMENT CHAINÉE par pgl10
Source avec Zip Source avec une capture POUR AFFICHER LES CARACTÈRES ACCENTUÉS SOUS WINDOWS EN MODE ... par pgl10

Commentaires et avis

Commentaire de Renfield le 24/03/2009 08:54:30 administrateur CS

Lorsque tu ajoutes une source sur le site, il te faut confirmer son ajout pour qu'elle soit visible par tous...

Ajout => Description + Fichiers + etc. => Prévisualisation => Mot clés => Terminé

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales