prog.c 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. //Define Constants---------------------------------------------------
  2. typedef enum {false, true} bool;
  3. //Include Header Files-----------------------------------------------
  4. #include<stdlib.h>
  5. #include<stdio.h>
  6. #include<time.h>
  7. #include<errno.h>
  8. #include<unistd.h>
  9. #include<termios.h>
  10. #include<sys/types.h>
  11. #include<sys/stat.h>
  12. #include<fcntl.h>
  13. #include<sys/resource.h>
  14. //Prototypes---------------------------------------------------------
  15. int delay(int delay_time);
  16. void print_attrTermios(struct termios * ptr_attr);
  17. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  18. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  19. //Main-Program
  20. int main(int argc, const char * argv[]){
  21. //initializing USART at USB_PORT-------------------------------------
  22. int USB = open("/dev/ttyACM3", O_RDWR|O_NOCTTY);
  23. if(isatty(USB)==0){
  24. printf("ERROR: No File Descriptor! \n");
  25. return 0;
  26. }
  27. struct termios * ptr_attr = (struct termios *)
  28. malloc(sizeof(struct termios));
  29. if(ptr_attr==NULL){
  30. printf("ERROR: Termios not available! \n");
  31. return 0;
  32. }
  33. tcgetattr(USB, ptr_attr);
  34. (*ptr_attr).c_iflag = IGNPAR;
  35. (*ptr_attr).c_oflag = 0;
  36. (*ptr_attr).c_cflag = CS8|CREAD;
  37. (*ptr_attr).c_lflag = 0;
  38. cfsetspeed(ptr_attr, B19200);
  39. tcsetattr(USB, TCSANOW ,ptr_attr);
  40. char req[] = {'R', 'E', 'Q'};
  41. char ack[] = {'A', 'C', 'K'};
  42. char input[3];
  43. char page[] = "PAGE";
  44. char * ptr_req = &req[0];
  45. char * ptr_ack = &ack[0];
  46. char * ptr_input = &input[0];
  47. char * ptr_page = &page[0];
  48. int connection;
  49. delay(1000);
  50. //Establishing Connection-------------------------------------------
  51. write(USB, ptr_req, sizeof(req));
  52. tcflush(USB, TCIFLUSH);
  53. read(USB, ptr_input, sizeof(input));
  54. tcflush(USB, TCOFLUSH);
  55. ptr_input = &input[0];
  56. for(int i=0; i<3; i++){
  57. connection = false;
  58. if(input[i]!=ack[i]){
  59. break;
  60. }
  61. connection = true;
  62. }
  63. if(connection==true){
  64. printf("Connection Success! \n");
  65. }
  66. else{
  67. printf("Connection Failed! \n");
  68. }
  69. //Sending Page-------------------------------------------------------
  70. for(int i=0; i<64; i++){
  71. write(USB, ptr_page, sizeof(char));
  72. tcflush(USB, TCIFLUSH);
  73. ptr_page++;
  74. if(ptr_page> & page[3]){
  75. ptr_page = &page[0];
  76. }
  77. }
  78. printf("Page send! \n");
  79. close(USB);
  80. return EXIT_SUCCESS;
  81. }
  82. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  83. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  84. //Delay-Function-----------------------------------------------------
  85. int delay(int delay_time){
  86. clock_t time1 = clock();
  87. while(((clock()-time1)/CLOCKS_PER_SEC)*1000
  88. != (clock_t)delay_time);
  89. return 1;
  90. }
  91. //Print Termios-Attributes-------------------------------------------
  92. void print_attrTermios(struct termios * ptr_attr){
  93. printf("Input Mode Flag: %d \n", (*ptr_attr).c_iflag);
  94. printf("Output Mode Flag: %d \n", (*ptr_attr).c_oflag);
  95. printf("Control Mode Flag: %d \n", (*ptr_attr).c_cflag);
  96. printf("Local Mode Flag: %d \n", (*ptr_attr).c_lflag);
  97. printf("Baudrate Input: %d \n", (*ptr_attr).c_ispeed);
  98. printf("Baudrate Output: %d \n", (*ptr_attr).c_ospeed);
  99. }