Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- #include<windows.h>
- #include<conio.h>
- int main(){
- HANDLE hConsole;
- int err;
- int a,b,c,d,x=0,n=0,i=0;
- unsigned char Data[100];
- DWORD Pocet=0;
- DWORD Pocet1=0;// Počet prijatých dát
- unsigned char Data1=0; // Sem ulož prijatý znak
- char pole[10000];
- char resp = 0;
- COMMTIMEOUTS timeouts;
- FILE* log;
- HANDLE hCom; // Handle na objekt typu súbor
- DCB PortDCB; // Štruktúra, v ktorej sú uložené parametre
- log = fopen("log.txt", "w");
- if (!log)
- return 0;
- hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
- hCom = CreateFile(
- "COM2:", // Názov portu, ktorý otvárame
- GENERIC_READ | GENERIC_WRITE, // Otvárame na čítanie aj na zápis
- 0, // Zdieľanie nebude žiadne
- NULL, // Bezpečnostné info žiadne
- OPEN_EXISTING, // Otvárame existujúci (port)
- 0, // Žiadne atribúty súboru
- NULL); // Musí byť NULL
- if ( hCom == INVALID_HANDLE_VALUE )
- printf("\n Chyba: Port sa neda otvorit.\n");
- // potom nasleduje CloseHandle(hCom); a potom asi exit...
- else
- printf("\n OK, port je uspesne otvoreny.\n");
- PortDCB.DCBlength = sizeof(DCB); // Inicializuj položku DCBlength
- GetCommState(hCom,&PortDCB); // Načítaj aktuálne nastavenia
- printf("Zadaj parameter BaudRate napr. (600, 1200, 2400, 4800, 9600)");
- scanf("%d",&a);
- printf("Zadaj parameter Parity");
- scanf("%d",&b);
- printf("Zadaj parameter ByteSize");
- scanf("%d",&c);
- printf("Zadaj parameter StopBits");
- scanf("%d",&d);
- PortDCB.BaudRate = a;
- PortDCB.Parity = b;
- PortDCB.ByteSize = c;
- PortDCB.StopBits = d;
- printf("\nBaud rate: %d",PortDCB.BaudRate);
- printf("\nParity: %d",PortDCB.Parity);
- printf("\nByteSize: %d",PortDCB.ByteSize);
- printf("\nStopBits: %d\n",PortDCB.StopBits);
- err = SetCommState(hCom,&PortDCB); // Nastav aktuálne nastavenia na port
- if(!err)
- printf("Chyba: Port sa neda nakonfigurovat.\n");
- // nasleduje CloseHandle(hCom); a asi exit...
- else
- printf("OK, port je uspesne nakonfigurovany.\n");
- // Zmeníme nejaký parameter v DCB
- while(1){
- // timeouts.ReadIntervalTimeout = 20;
- //timeouts.ReadTotalTimeoutMultiplier = 10;
- // timeouts.ReadTotalTimeoutConstant = 100;
- // timeouts.WriteTotalTimeoutMultiplier = 10;
- // timeouts.ReadTotalTimeoutConstant = 100;
- //
- // SetCommTimeouts(hCom,&timeouts);
- // printf("\n Chyba: Timeouty nenastavene.\n");
- // a asi exit...
- // else
- // printf("\n OK, nastavene Timeouty\n");
- n = 0;
- SetConsoleTextAttribute(hConsole,12);
- printf("[Ja]: ");
- while(Data[n-1]!='\n'){
- Data[n]=getchar();
- //printf("data je: %c\n",Data[n]);
- n++;
- }
- //if(Data[n-1]!=13){
- // Data[n-1]='\0';}
- for(i=0; i<n; i++){
- WriteFile(
- hCom, // Handle portu, ktory ste otvorili CreateFile
- &Data[i], // Smernik (pointer) na data, ktore chcem vysielat
- 1, // Pocet bytov, ktore chcem vyslat
- &Pocet, // Smernik (pointer) na pocet vyslanych dat
- NULL); // Musi byt NULL
- }
- if(Pocet == 0){ // Ak pocet prenesenych dat nesuhlasi
- printf("\n Chyba: Zapis na port sa nepodaril.\n");
- printf("\n pocet je: %d\n",Pocet);}
- // a zasa nasleduje CloseHandle(hCom); a potom exit...
- else
- printf("");
- fprintf(log, "[Ja]");
- fprintf(log, Data);
- fflush(log);
- PurgeComm(hCom, PURGE_TXCLEAR | PURGE_RXCLEAR);
- x = 5;
- while(1){
- resp = ReadFile(
- hCom, // Handle portu, z ktorého čítame
- &Data1, // Pointer na buffer, kam ukladáme prijaté dáta
- 1, // Počet bytov, na ktoré čakáme
- &Pocet1, // Pointer na skutočný počet prijatých dát
- NULL); // Musí byť NULL
- pole[x++]=Data1; // Funkcia ReadFile tu teraz čaká, až kým niečo
- //printf("%i %i %c \n", Pocet1, resp, Data1);
- if (Data1 == '\n')
- break;
- // nepríde, ale môže aj skončiť bez zachyteného znaku,
- }
- SetConsoleTextAttribute(hConsole,11);
- pole[x]=0;
- pole[0] = '[';
- pole[1] = 'O';
- pole[2] = 'n';
- pole[3] = ']';
- pole[4] = ' ';
- printf(" %s", pole);
- fprintf(log, pole);
- fflush(log);
- n=0;
- }
- n=0;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement