I have try to access robot via serial port using gcc (i using mac). 

I have made my program to send simple command:

> 
> HOME (enter) and there are some feedback from the robot: THIS IS THE  
> 
>  HOMING SEQUENCE COMMAND. THE ROBOT WILL SEEK ITS HOMING SWITCHES ON  
> 
>  EACH AXIS AND WILL EXECUTE THE HOMING FUNCTION AT THAT LOCATION. DO  
> 
>  YOU WANT TO PROCEED (Y/N) ?
> 
> 
> 

and I send 

> 
> Y(enter)
> 
> 
> 

and the robot suppose move.

To access robot now is using modem/terminal Zterm.
This modem use baudrate 38400, 8N1

I use the same baudrate and 8n1

This is my code, I do not know what is wrong why my code cannot make the robot move

Thank you 

Daniel

```
    #include<stdio.h>   /* Standard input/output definitions */
    #include<stdlib.h>
    #include<string.h>  /* String function definitions */
    #include<unistd.h>  /* UNIX standard function definitions */
    #include<fcntl.h>   /* File control definitions */
    #include<errno.h>   /* Error number definitions */
    #include<termios.h> /* POSIX terminal control definitions */
    //#include<conio.h> 

    /*
     * 'open_port()' - Open serial port 1.
     *
     * Returns the file descriptor on success or -1 on error.
     */

    int buf_size;
    char *buf;
    char *buff;
    int fd; /* File descriptor for the port */

    int open_port(void)
    {

       fd = open("/dev/tty.USA28X1a2P2.2", O_RDWR | O_NOCTTY | O_NDELAY);  //      USA28X1a2P2.for keyspan 
    //fd = open("/dev/ttys000", O_RDWR | O_NOCTTY | O_NDELAY);   
    if (fd == -1) {
     /*
      * Could not open the port.
      */
      perror("cannot open");
   }
     else 
        fcntl(fd, F_SETFL, 0);
        struct termios options;
          /* 
           * Get the current options for the port...
           */
          tcgetattr(fd, &options);

          /*
           * Set the baud rates to 38400...
           */

         cfsetispeed(&options, B38400);
         cfsetospeed(&options, B38400);

         /*
          * Enable the receiver and set local mode...
          */

         options.c_cflag |= (CLOCAL | CREAD);

         /*
          * Set the new options for the port...
          */

         tcsetattr(fd, TCSANOW, &options);

         options.c_cflag &= ~CSIZE; /* Mask the character size bits */

         options.c_cflag &= ~PARENB;
         options.c_cflag &= ~CSTOPB;
         options.c_cflag &= ~CSIZE;
         options.c_cflag |= CS8;

     return (fd);
    }

    int main(int argc, char**argv) {
        buf =malloc(20);
        buff=malloc(20);

    //   strcpy(buf,"HOME");
    //    strcpy(buff,"Y");
        open_port();
        printf("type the command using Capital Letter : \n");
        scanf("%s",buf);
        write(fd, buf,20); // 
        write(fd," \r ",5);
        printf("Command = %s\n", buf);
        read(fd, buff,50);
        printf(" %s \n",buff);
        free(buf);
        free(buff);
        printf("type Y/N : \n");
        scanf("%s",buf);
        write(fd, buf,2);
        write(fd,"\r",2);

    //    free(buf);
    //  free (buff);
    //    printf("type Y/N : \n");
    //    write(fd, buf,20);
    //    printf("You choose %s \n",buff);
    //    free(buf);

        close(fd);
    }

```