Advertisement
pabloducato

kwsm

Apr 16th, 2019
424
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.41 KB | None | 0 0
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. void main(){
  5. DCB parametry_portu; // to samo dla Visual C
  6. COMMCONFIG ustawienia; // jak wySej tylko dla VC
  7. HANDLE port; // uchwyt do portu
  8. unsigned char bufor[] = // komunikat do wyslania
  9. {0x10, 0x66, 0xE6, 0x01, 0x4D, 0x16};
  10. ULONG przeczytano; // dodatkowa zmienna
  11. char pom[40]; // zm. pomocnicza do przetworzenia odebranego komunikatu;
  12. // etap pierwszy - uzyskanie dostepu do portu
  13. // otworzenie portu i przypisanie jego uchwytu do zmiennej port
  14. port = CreateFile(
  15. "COM1", // nazwa 'pliku - portu'
  16. GENERIC_READ | GENERIC_WRITE, // do odczytu
  17. 0, // czy obiekt moze byc dzielony - 0 nie moze
  18. NULL, // wskaznik na strukture opisujaca zabezpieczenia: tutaj NULL
  19. OPEN_EXISTING, // rodzaj akcji wykonywanej na pliku: tutaj OPEN_EXISTING, poniewaz obiekt istnieje
  20. 0, // rodzaj obslugi portu synchroniczny czy asynchroniczny
  21. 0 // uchwyt do dodatkowego pliku z rozszerzonym zestawem atrybutow- tutaj 0;
  22. );
  23. if (port == INVALID_HANDLE_VALUE) // obsluga bledu - jesli przy otwieraniu portu pojawil sie blad
  24. { // jesli blad wypisz stosowny komunikat i zakoncz funkcje
  25. port = NULL;
  26. printf("Nie mozna otworzyć portu\n"); // BC dla VC bez Application->
  27. return;
  28. }
  29. // etap drugi - przygotowanie parametrow portu
  30. parametry_portu.BaudRate = 9600; // predkosci
  31. parametry_portu.ByteSize = 8; // bitow danych
  32. parametry_portu.Parity = EVENPARITY; // (nie)parzystosci
  33. parametry_portu.StopBits = ONESTOPBIT; // bitow stopu
  34. ustawienia.dcb = parametry_portu; // zapamietanie tego w strukturze nadrzednej
  35. // etap trzeci - ustawienie parametrow portu
  36. SetCommConfig ( port, &ustawienia, sizeof(ustawienia));
  37. // etap czwarty - zapis do portu
  38. WriteFile(
  39. port, // uchwyt portu
  40. bufor, // bufor na dane
  41. 6, // ile znakow zapisac
  42. &przeczytano,// ile w rzeczywistosci odczytano
  43. NULL // wskaznik na strukture obslugujaca zdarzenia portu
  44. );
  45.  
  46. // etap piąty - odczyt z portu
  47. ReadFile(
  48. port, // uchwyt portu
  49. bufor, // bufor na dane
  50. 6, // ile znakow odczytac
  51. &przeczytano,// ile w rzeczywistosci odczytano
  52. NULL // wskaznik na strukture obslugujaca zdarzenia portu
  53. );
  54. // etap szósty - zwolnienie portu
  55. CloseHandle(port); // zwolnienie uchwytu do portu
  56. // etap siódmy - przetworzenie odebranych danych
  57. wsprintf(pom, "%02X %02X %02X %02X %02X %02X", bufor[0], bufor[1], bufor[2], bufor[3] ,bufor[4],
  58. bufor[5]);
  59. // etap ósmy - wyswietlenie wyniku
  60. printf("%s\n", pom); //BC
  61. //odebrano.SetWindowText(pom); //VC
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement