document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*--------------------------------------------------------------------------------------------
  2.  ASSIGNMENT NO : 6
  3.  TITLE : WRITE A C PROGRAM FOR PC TO PC SERIAL COMMUNICATION.
  4.     1)FILE TRANSFER
  5.     2)FULL DUPLEX CHARACTER TRANSFER (CHAT APPLICATION)
  6. --------------------------------------------------------------------------------------------*/
  7.  
  8. /* ------------------------------------------------
  9.         HEADER FILES
  10. -------------------------------------------------*/
  11.  
  12. #include<stdio.h>
  13. #include<conio.h>
  14. #include<bios.h>
  15. #include<io.h>
  16.  
  17. #define COM1  0
  18. #define DATA_READY 0x100
  19. #define TRUE 1
  20. #define FALSE 0
  21. #define SETTINGS (0x80|0x02|0x00|0x00)
  22.           // (1200BAUD RATE|7 DATA BITS|1 STOP BIT|NO PARITY)
  23.  
  24.  
  25. /* ------------------------------------------------
  26.     PREDECLARATION OF FUNCTIONS
  27. -------------------------------------------------*/
  28.  
  29. void msgpassing();
  30. void menu();
  31. void filetransfer();
  32. void accept();
  33.  
  34. /* ------------------------------------------------
  35.         MAIN FUNCTION
  36. -------------------------------------------------*/
  37.  
  38. void main()
  39. {
  40.     int ch;
  41.     clrscr();
  42.  
  43.     while(1)
  44.     {
  45.         menu();
  46.         scanf("%d",&ch);
  47.  
  48.         switch(ch)
  49.         {
  50.             case 1: msgpassing();
  51.                 break;
  52.  
  53.             case 2: filetransfer();
  54.                 break;
  55.  
  56.             case 3: accept();
  57.                 break;
  58.  
  59.             case 4: exit(0);
  60.             }
  61.         }
  62.     }
  63.  
  64. /* ------------------------------------------------
  65.         FUNCTION FOR MENU
  66. -------------------------------------------------*/
  67.  
  68. void menu()
  69. {
  70.     printf("\\n---------------------------");
  71.     printf("\\n\\t    MENU ");
  72.     printf("\\n---------------------------");
  73.     printf("\\n 1. MESSAGE PASSING : ");
  74.     printf("\\n 2. FILE TRANSFER   : ");
  75.     printf("\\n 3. FILE RECEIVE    : ");
  76.     printf("\\n 4. EXIT            : ");
  77.     printf("\\n---------------------------");
  78.     printf("\\n\\n Enter Your Choice : ");
  79.     }
  80.  
  81. /* ------------------------------------------------
  82.         FILE TRANSER
  83. -------------------------------------------------*/
  84.  
  85. void filetransfer()
  86. {
  87.     FILE *fp;
  88.     int i=0;
  89.  
  90.     char ch,data,fname[50];
  91.     flushall();
  92.     printf("\\n\\n Enter the File Name with Path to Transfer : ");
  93.  
  94.     for(i=0;(ch=getchar())!=\'\\n\';i++)
  95.         fname[i]=ch;
  96.  
  97.     flushall();
  98.     bioscom(0,SETTINGS,COM1);
  99.  
  100.     fp=fopen(fname,"r+");  //FILE OPEN FOR READING
  101.     fseek(fp,SEEK_SET,0);
  102.  
  103.     do
  104.     {
  105.         data=fgetc(fp);
  106.         putch(data);
  107.         bioscom(1,data,COM1);
  108.         }while(data!=EOF);
  109.  
  110.     bioscom(1,27,COM1);
  111.     fclose(fp);
  112.     }
  113.  
  114. /* ------------------------------------------------
  115.         ACCEPT FUNCITON
  116. -------------------------------------------------*/
  117.  
  118. void accept()
  119. {
  120.     int status ,out;
  121.     char fname[80]="C:\\tc\\a.txt";
  122.     FILE *fp;
  123.  
  124.     fp=fopen(fname,"w+");        //FILE OPENED FOE WRITING
  125.     bioscom(0,SETTINGS,COM1);
  126.  
  127.     while (1)
  128.     {
  129.         status=bioscom(3,0,COM1);
  130.         if(status & DATA_READY)
  131.             if((out=bioscom(2,0,COM1) & 0x7F)!=0)
  132.             {
  133.                 if(out!=27)
  134.                 fprintf(fp,"%c",out);
  135.                 putch(out);
  136.                 }
  137.             if(out==27)
  138.                 break;
  139.         }
  140.  
  141.     fclose(fp);
  142.     printf("\\n\\n FILE IS RECEIVED..! ");
  143.     }
  144.  
  145. void msgpassing()
  146. {
  147.     int i,in,out,status,DONE=FALSE;
  148.     int flag=0;
  149.     int flag1=0;
  150.     char msg[50];
  151.     char condition;
  152.  
  153.     clrscr();
  154.  
  155.     bioscom(0,SETTINGS,COM1);
  156.  
  157.     while(!DONE)
  158.     {
  159.         status=bioscom(3,0,COM1);
  160.  
  161.         if(status & DATA_READY)
  162.             if((out=bioscom(2,0,COM1) & 0x7F)!=0)    //receive mode
  163.             {
  164.                 if(flag1==0 && (out!=10 || out!=13))
  165.                 {
  166.                     printf("\\n RECEIVER : ");
  167.                     printf("\\n ßßßßßßßßßßßßß \\n");
  168.                     flag1=1;
  169.                     }
  170.  
  171.                 if(out==13)
  172.                 {
  173.                     flag1=0;
  174.                     flag=0;
  175.                     }
  176.  
  177.                 putch(out);
  178.                 }
  179.  
  180.             if(flag==0)
  181.             {
  182.                 printf("\\n SENDER : ");
  183.                 printf("\\n ßßßßßßßßßßßßß \\n");
  184.                 flag=1;
  185.                 }
  186.  
  187.             if(kbhit())
  188.             {
  189.                 if((in=getch())==27)
  190.                 {
  191.                     DONE=TRUE;
  192.                     }
  193.  
  194.                 putch(in);
  195.                 gets(msg);
  196.                 bioscom(1,in,COM1);
  197.                 i=0;
  198.  
  199.                 while(msg[i]!=\'\\0\')
  200.                 {
  201.                     bioscom(1,msg[i],COM1);
  202.                     i++;
  203.                     }
  204.  
  205.                 if(msg[i]==\'\\0\')
  206.                 {
  207.                     bioscom(1,10,COM1);
  208.                     bioscom(1,13,COM1);
  209.                     flag=0;
  210.                     }
  211.                 }
  212.         }
  213.     }
  214.  
  215. /* ------------------------------------------------
  216.         END OF THE PROGRAM
  217. -------------------------------------------------*/
');