Advertisement
AntonioVillanueva

Control Motores PAP con Arduino test

Mar 4th, 2018
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. //#include <stdio.h>
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include <unistd.h>
  8. #include <fcntl.h>
  9. #include <termios.h>
  10. #include <string.h> // needed for memset
  11.  
  12. using namespace std;
  13. #define BPS B9600 //velocidad puerto
  14. #define PORTNAME "/dev/ttyACM0" //0 o 1
  15. /***********************************************************************/
  16. class control{
  17.     public:
  18.     control (string port);
  19.     ~control ();
  20.     void Run();
  21.        
  22.     private:
  23.  
  24.     unsigned char c;//Buffer lectura /escritura tty
  25.         int tty_fd;
  26.     void configurePort(string port);
  27.     char ReadTTY ();//Lee ttyACM0
  28.     bool WriteTTY();//Escribe ttyACM0
  29.  
  30. };
  31. /***********************************************************************/
  32.     char control::ReadTTY (){//Lee ttyACM0
  33.         if (read(tty_fd,&c,1)>0)
  34.         write(STDOUT_FILENO,&c,1);
  35.         return c;
  36.     }
  37. /***********************************************************************/  
  38.     bool control::WriteTTY(){//Escribe ttyACM0
  39.         if (read(STDIN_FILENO,&c,1)>0) {write(tty_fd,&c,1);return true;}
  40.         return false;
  41.     }
  42. /***********************************************************************/
  43. /***********************************************************************/
  44.     control::control(string port) {}
  45. /***********************************************************************/
  46.     control::~control (){
  47.         if (tty_fd!=0) {close(tty_fd);}
  48.     }
  49. /***********************************************************************/
  50.     void control::configurePort(string port){
  51.     //Para configurar puerto serie
  52.         struct termios tio;
  53.         struct termios stdio;
  54.  
  55.         memset(&stdio,0,sizeof(stdio));
  56.         stdio.c_iflag=0;
  57.         stdio.c_oflag=0;
  58.         stdio.c_cflag=0;
  59.         stdio.c_lflag=0;
  60.         stdio.c_cc[VMIN]=1;
  61.         stdio.c_cc[VTIME]=0;
  62.         tcsetattr(STDOUT_FILENO,TCSANOW,&stdio);
  63.         tcsetattr(STDOUT_FILENO,TCSAFLUSH,&stdio);
  64.         fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);   //READ non-blocking
  65.  
  66.         memset(&tio,0,sizeof(tio));
  67.         tio.c_iflag=0;
  68.         tio.c_oflag=0;
  69.         tio.c_cflag=CS8|CREAD|CLOCAL;           // 8N1
  70.         tio.c_lflag=0;
  71.         tio.c_cc[VMIN]=1;
  72.         tio.c_cc[VTIME]=5;
  73.  
  74.         tty_fd=open(port.c_str(), O_RDWR | O_NONBLOCK);        // O_NONBLOCK might override VMIN and VTIME, so read() may return immediately.
  75.         cfsetospeed(&tio,BPS);            // 9600
  76.         cfsetispeed(&tio,BPS);      
  77.  
  78.         tcsetattr(tty_fd,TCSANOW,&tio);
  79.     }
  80.  
  81. /***********************************************************************/
  82.     void control::Run(){
  83.         configurePort (PORTNAME);//dev/ttyACM0 para empezar
  84.         while (true){//bucle principal
  85.             ReadTTY ();
  86.             WriteTTY();        
  87.         }      
  88.     }
  89. /***********************************************************************/
  90. /***********************************************************************/
  91.  
  92. /***********************************************************************/
  93. /***********************************************************************/
  94. /***********************************************************************/
  95. int main (){
  96.     control miniCNC(PORTNAME);
  97.     miniCNC.Run(); 
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement