Advertisement
Guest User

Untitled

a guest
Apr 25th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.94 KB | None | 0 0
  1.     #include<stdio.h>
  2.     #include<string.h>
  3.     #include<windows.h>
  4.     #include<conio.h>
  5.     int main(){
  6.         HANDLE  hConsole;
  7.    
  8.     int err;
  9.      int a,b,c,d,x=0,n=0,i=0;
  10.      unsigned char Data[100];
  11.       DWORD Pocet=0;
  12.       DWORD Pocet1=0;// Počet prijatých dát
  13.       unsigned char Data1=0;      // Sem ulož prijatý znak
  14.       char pole[10000];
  15.     char resp = 0;
  16.     COMMTIMEOUTS timeouts;
  17.     FILE* log;
  18.    
  19.      
  20.      
  21.       HANDLE hCom;                            // Handle na objekt typu súbor
  22.       DCB PortDCB;                       // Štruktúra, v ktorej sú uložené parametre  
  23.      
  24.     log = fopen("log.txt", "w");
  25.     if (!log)
  26.         return 0;
  27.  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  28.       hCom = CreateFile(                
  29.              "COM2:",                         // Názov portu, ktorý otvárame
  30.              GENERIC_READ | GENERIC_WRITE,    // Otvárame na čítanie aj na zápis
  31.              0,                               // Zdieľanie nebude žiadne
  32.              NULL,                            // Bezpečnostné info žiadne
  33.              OPEN_EXISTING,                   // Otvárame existujúci (port)
  34.              0,                               // Žiadne atribúty súboru
  35.              NULL);                           // Musí byť NULL
  36.      
  37.       if ( hCom == INVALID_HANDLE_VALUE )
  38.          printf("\n Chyba:  Port sa neda otvorit.\n");
  39.          // potom nasleduje    CloseHandle(hCom);  a potom asi exit...
  40.       else
  41.          printf("\n OK, port je uspesne otvoreny.\n");
  42.      
  43.      
  44.      PortDCB.DCBlength = sizeof(DCB);  // Inicializuj položku DCBlength
  45.      GetCommState(hCom,&PortDCB);       // Načítaj aktuálne nastavenia
  46.      printf("Zadaj parameter  BaudRate napr. (600, 1200, 2400, 4800, 9600)");
  47.      scanf("%d",&a);
  48.       printf("Zadaj parameter Parity");
  49.        scanf("%d",&b);
  50.        printf("Zadaj parameter  ByteSize");
  51.         scanf("%d",&c);
  52.         printf("Zadaj parameter  StopBits");
  53.              scanf("%d",&d);
  54.       PortDCB.BaudRate = a;  
  55.       PortDCB.Parity = b;  
  56.       PortDCB.ByteSize = c;  
  57.       PortDCB.StopBits = d;  
  58.      printf("\nBaud rate:       %d",PortDCB.BaudRate);
  59.      printf("\nParity:       %d",PortDCB.Parity);
  60.      printf("\nByteSize:       %d",PortDCB.ByteSize);
  61.      printf("\nStopBits:       %d\n",PortDCB.StopBits);
  62.    
  63.       err = SetCommState(hCom,&PortDCB); // Nastav aktuálne nastavenia na port
  64.      if(!err)  
  65.          printf("Chyba:  Port sa neda nakonfigurovat.\n");
  66.          // nasleduje CloseHandle(hCom);   a asi exit...
  67.       else
  68.          printf("OK, port je uspesne nakonfigurovany.\n");
  69.      
  70.    
  71.  
  72.      // Zmeníme nejaký parameter v DCB
  73.      
  74.      
  75.    
  76.     while(1){
  77.              
  78.     //  timeouts.ReadIntervalTimeout         =  20;
  79.     //timeouts.ReadTotalTimeoutMultiplier  =  10;
  80.     //  timeouts.ReadTotalTimeoutConstant    = 100;
  81.     //  timeouts.WriteTotalTimeoutMultiplier =  10;
  82.     //  timeouts.ReadTotalTimeoutConstant    = 100;
  83.      //
  84.     // SetCommTimeouts(hCom,&timeouts);
  85.       // printf("\n Chyba: Timeouty nenastavene.\n");
  86.          //  a asi exit...
  87.      // else
  88.      //  printf("\n OK, nastavene Timeouty\n");
  89.      
  90.      n = 0;
  91.     SetConsoleTextAttribute(hConsole,12);
  92.      printf("[Ja]: ");
  93.     while(Data[n-1]!='\n'){
  94.              Data[n]=getchar();
  95.              //printf("data je: %c\n",Data[n]);
  96.              n++;
  97.     }
  98.            
  99.            
  100.          
  101.          
  102.  
  103.     //if(Data[n-1]!=13){
  104.             // Data[n-1]='\0';}
  105.              
  106.              
  107.      
  108.          for(i=0; i<n; i++){
  109.  
  110.       WriteFile(
  111.                 hCom,   // Handle portu, ktory ste otvorili CreateFile
  112.                 &Data[i],  // Smernik (pointer) na data, ktore chcem vysielat
  113.                 1,      // Pocet bytov, ktore chcem vyslat
  114.                 &Pocet, // Smernik (pointer) na pocet vyslanych dat
  115.                 NULL);  // Musi byt NULL
  116.           }
  117.      
  118.          if(Pocet ==  0){ // Ak pocet prenesenych dat nesuhlasi    
  119.        printf("\n Chyba: Zapis na port sa nepodaril.\n");
  120.        printf("\n pocet je: %d\n",Pocet);}
  121.          // a zasa nasleduje CloseHandle(hCom);  a potom exit...
  122.       else
  123.        printf("");
  124.        fprintf(log, "[Ja]");
  125.       fprintf(log, Data);
  126.       fflush(log);
  127.      
  128.      
  129.      
  130.       PurgeComm(hCom, PURGE_TXCLEAR | PURGE_RXCLEAR);
  131.       x = 5;
  132.      while(1){
  133.       resp = ReadFile(
  134.                hCom,         // Handle portu, z ktorého čítame
  135.                &Data1,        // Pointer na buffer, kam ukladáme prijaté dáta
  136.                1,            // Počet bytov, na ktoré čakáme
  137.              
  138.                &Pocet1,        // Pointer na skutočný počet prijatých dát
  139.                NULL);        // Musí byť NULL
  140.  
  141.       pole[x++]=Data1;                   // Funkcia ReadFile tu teraz čaká, až kým niečo
  142.       //printf("%i %i %c \n", Pocet1, resp, Data1);
  143.  
  144.       if (Data1 == '\n')
  145.         break;
  146.                                        // nepríde, ale môže aj skončiť bez zachyteného znaku,
  147.       }
  148.       SetConsoleTextAttribute(hConsole,11);
  149.       pole[x]=0;
  150.       pole[0] = '[';
  151.       pole[1] = 'O';
  152.       pole[2] = 'n';
  153.       pole[3] = ']';
  154.       pole[4] = ' ';
  155.       printf("                          %s", pole);
  156.       fprintf(log, pole);
  157.       fflush(log);
  158.      
  159.  
  160.      
  161.       n=0;
  162.      
  163.      }
  164.          n=0;
  165.    
  166.             return 0;
  167.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement