Advertisement
Guest User

Untitled

a guest
May 5th, 2012
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.08 KB | None | 0 0
  1. # include <stdio.h>
  2. # include <windows.h>
  3. # include <conio.h>
  4. #include <string.h>
  5.  
  6. int strl=0;
  7.  
  8. void zobrazit(HANDLE hCom,HANDLE hConsole,DCB & PortDCB);
  9. void timeouty(HANDLE hCom,HANDLE hConsole);
  10.  
  11. int main()
  12. {
  13.  
  14.     HANDLE  hConsole;
  15.     hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  16.  
  17.     SetConsoleTextAttribute(hConsole,14);
  18.  
  19.  
  20.  
  21. // otvorenie portu
  22.  
  23.     HANDLE hCom;                        // Handle na objekt typu súbor
  24.  
  25.  
  26.  
  27.   hCom = CreateFile(                
  28.          "COM1:",                         // Názov portu, ktorý otvárame
  29.          GENERIC_READ | GENERIC_WRITE,    // Otvárame na c(ítanie aj na zápis
  30.          0,                               // Zdiel(anie nebude žiadne
  31.          NULL,                            // Bezpec(nostné info žiadne
  32.          OPEN_EXISTING,                   // Otvárame existujúci (port)
  33.          0,                               // Žiadne atribúty súboru
  34.          NULL);                           // Musí byt( NULL
  35.  
  36.   if ( hCom == INVALID_HANDLE_VALUE )
  37.      printf("\n Chyba:  Port sa neda otvorit.\n");
  38.      // potom nasleduje    CloseHandle(hCom);  a potom asi exit...
  39.   else
  40.      printf("\n OK, port je uspesne otvoreny.\n");
  41.  
  42.  
  43.  
  44.  
  45.    
  46.     DCB PortDCB;                        // Štruktúra, v ktorej sú uložené parametre  
  47.     PortDCB.DCBlength = sizeof(DCB);    // Inicializuj položku DCBlength
  48.     GetCommState(hCom,&PortDCB);        // Naèítaj aktuálne nastavenia
  49.  
  50. //*****************
  51.  
  52.     zobrazit(hCom,hConsole,PortDCB);            //zobrazenie konfiguracie
  53.  
  54. //------------- zmena ---------------------------------------
  55.  
  56.  
  57.  
  58.     PortDCB.BaudRate = 9600;        // Zmeníme parametere
  59.     PortDCB.Parity = 0;
  60.     PortDCB.ByteSize = 8;
  61.     PortDCB.StopBits = 1;
  62.  
  63.     int err;
  64.     err = SetCommState(hCom,&PortDCB);  // Nastav aktuálne nastavenia na port
  65.     if(err)
  66.     {
  67.        
  68.         printf("Chyba:  Port sa neda nakonfigurovat.\n");
  69.        
  70.     }
  71.     else
  72.     {
  73.         SetConsoleTextAttribute(hConsole,2);
  74.         printf("Port je uspesne nakonfigurovany.\n");
  75.     }
  76.  
  77. //-------------------------------------------------------------
  78.  
  79. zobrazit(hCom,hConsole,PortDCB);            //zobrazenie konfiguracie portu
  80.  
  81. //-------------------------------------------------------------
  82.   DWORD Pocet=0;
  83. // char Data=getch();
  84.   unsigned char Data=getchar();
  85.  
  86.  while(1){
  87.   WriteFile(
  88.             hCom,   // Handle portu, ktory ste otvorili CreateFile
  89.             &Data,  // Smernik (pointer) na data, ktore chcem vysielat
  90.             1,      // Pocet bytov, ktore chcem vyslat
  91.             &Pocet, // Smernik (pointer) na pocet vyslanych dat
  92.             NULL);  // Musi byt NULL
  93.  
  94.   if( Pocet != 1 ) // Ak pocet prenesenych dat nesuhlasi    
  95.    printf("\n Chyba: Zapis na port sa nepodaril.\n");
  96.      // a zasa nasleduje CloseHandle(hCom);  a potom exit...
  97.  
  98.   else
  99.    printf("\n OK.");
  100. printf("ja: %c", Data);
  101.   }
  102.  
  103. //-------------------------------------------------------------
  104. DWORD Pocet1=0;            // Poc(et prijatých dát
  105.   //unsigned char Data;      // Sem ulož prijatý znak
  106.  
  107. timeouty(hCom,hConsole);
  108.  
  109.   PurgeComm(hCom,PURGE_TXCLEAR | PURGE_RXCLEAR);
  110.  
  111.   ReadFile(
  112.            hCom,         // Handle portu, z ktorého c(ítame
  113.            &Data,        // Pointer na buffer, kam ukladáme prijaté dáta
  114.            1,            // Poc(et bytov, na ktoré c(akáme
  115.           // &d,           // Pointer na skutoc(ný poc(et prijatých dát
  116.            &Pocet1,        // Pointer na skutoc(ný poc(et prijatých dát
  117.            NULL);        // Musí byt( NULL
  118.  
  119.                          // Funkcia ReadFile tu teraz c(aká, až kým niec(o
  120.                          // nepríde, ale môže aj skonc(it( bez zachyteného znaku,
  121.                          // ak medzitým vypršia timeouty.
  122.  
  123.   if( Pocet1 != 1 )      // Ak poc(et prenesených dát nesúhlasí    
  124.    printf("\n Chyba: Citanie z portu nedalo nic.\n");
  125.   else
  126.    printf("\n OK, z portu sme uspesne prijali [%c].\n",Data);
  127.  
  128.  
  129. //-------------------------------------------------------------
  130.  
  131.   CloseHandle(hCom);   // zatvorime port
  132.  
  133.         return 0;
  134. }
  135.  
  136.  
  137.  
  138.  
  139. // *********************************************************************************
  140. //  zobrazenie komunikacne parametre
  141. void zobrazit(HANDLE hCom,HANDLE hConsole,DCB & PortDCB)
  142. {
  143.  
  144.     SetConsoleTextAttribute(hConsole,15);
  145.     printf("\nKomunikacne parametre:\n");
  146.     printf("Baud Rate:  %d\n",PortDCB.BaudRate);
  147.     printf("Parity:     %d\n",PortDCB.Parity);
  148.     printf("Byte Size:  %d\n",PortDCB.ByteSize);
  149.     printf("Stop Bits:  %d\n",PortDCB.StopBits);
  150.     printf("\n");
  151.  
  152. }
  153.  
  154. // nastavenie timeoutov
  155.  
  156. void timeouty(HANDLE hCom,HANDLE hConsole)
  157. {
  158.  
  159.   COMMTIMEOUTS timeouts;
  160.    
  161.   timeouts.ReadIntervalTimeout         =  20;
  162.   timeouts.ReadTotalTimeoutMultiplier  =  10;
  163.   timeouts.ReadTotalTimeoutConstant    = 100;
  164.   timeouts.WriteTotalTimeoutMultiplier =  10;
  165.   timeouts.WriteTotalTimeoutConstant    = 100;
  166.  
  167.     if (!SetCommTimeouts(hCom,&timeouts)){
  168.        
  169.         SetConsoleTextAttribute(hConsole, 5);
  170.         Sleep(1000);
  171.         printf("\n Chyba: Timeouty nenastavene.\n"); }
  172.      //  a asi exit...
  173.     else{
  174.    
  175.         SetConsoleTextAttribute(hConsole, 5);
  176.         Sleep(1000);
  177.         printf("\n OK, nastavene Timeouty\n");}
  178.  
  179.  
  180.  
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement