send AT command from mini2440

hani
Hi every one.
I have mini2440 and GSM modem that they connected to each other with USB
serial port (ttyUSB0). this is my code in c++ to send AT:
//---------------------------------------------------------------
#include <QCoreApplication>
#include <stdio.h>   /* Standard input/output definitions */
#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 <string>    /*To use string type*/
#include <iostream>
#include <string>
using namespace std;

//                 Definations
int fd; /* File descriptor for the port */
string wr;
int rd;
char buffer[100];  /* Input buffer */
int openport(void);
void closeport(void);
void configport(void);
string WriteRead(void);
//-------------------------------------
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    openport();
    if(fd>-1)
    {
        configport();

        string str=WriteRead();
        qDebug(str.c_str());
    }
    return a.exec();
}
//-------------------------------------
int openport(void)
{
    fd=open("/dev/ttyUSB0",O_RDWR|O_NOCTTY|O_NDELAY);
    if (fd==-1)
    {
        perror("open_port: unable to open port /dev/ttyUSB0\n");
        return -1;
    }
    else
    {
        printf("open_port: succesfully open port /dev/ttyUSB0\n");
        fcntl(fd,F_SETFL,0);
        return 1;
    }
}
//-------------------------------------
void closeport(void)
{
    close(fd);
}
//-------------------------------------
void configport(void)
{
   struct termios options;
   tcgetattr(fd,&options);
   cfsetispeed(&options,B9600);
   cfsetospeed(&options,B9600);
   options.c_cflag |=  (CLOCAL | CREAD);

   options.c_cflag &= ~CSIZE;
   options.c_cflag |= CS8;
   options.c_cflag &= ~ PARENB;
   options.c_cflag &= ~CSTOPB;
   options.c_cflag &= ~CSIZE;
   options.c_cflag |= CS8;
   options.c_iflag &= ~(IXON|IXOFF|IXANY);
   tcsetattr(fd,TCSANOW,&options);
}
//------------------------------------
string WriteRead(void)
{
    char buffer[255];  /* Input buffer */
    char *bufptr;      /* Current char in buffer */
    int  nbytes;       /* Number of bytes read */
    int  tries;        /* Number of tries so far */

    for (tries = 0; tries < 3; tries ++)
      {

        if (write(fd, "AT\r", 3) < 3)// send an AT command followed by a CR
          continue;

       // read characters into our string buffer until we get a CR or NL
        bufptr = buffer;
        while ((nbytes = read(fd, bufptr, buffer + sizeof(buffer) - bufptr
- 1)) > 0)
        {
          bufptr += nbytes;
          if (bufptr[-1] == '\n' || bufptr[-1] == '\r')
            break;
        }

       /* nul terminate the string and see if we got an OK response */
        *bufptr = '\0';
        string s(buffer);
        if (s.find("OK"))
          {

            return s;
          }
        else
            return "not answer";
      }

}
//--------------------------------------------------------------------
but after send AT i say if find "OK" set the buffer to string s. then write
string s in output. but it just write AT. there is no OK

hani
Hi
I get my answer:
my problem is in modem config . this is my new config:

   void configport(void)
   {

       struct termios tty;
       struct termios tty_old;
       memset (&tty, 0, sizeof tty);

       /* Error Handling */
       if ( tcgetattr ( fd, &tty ) != 0 ) {
          std::cout << "Error " << errno << " from tcgetattr: " <<
strerror(errno) << std::endl;
       }

       /* Save old tty parameters */
       tty_old = tty;

       /* Set Baud Rate */
       cfsetospeed (&tty, (speed_t)B9600);
       cfsetispeed (&tty, (speed_t)B9600);

       /* Setting other Port Stuff */
       tty.c_cflag     &=  ~PARENB;            // Make 8n1
       tty.c_cflag     &=  ~CSTOPB;
       tty.c_cflag     &=  ~CSIZE;
       tty.c_cflag     |=  CS8;

       tty.c_cflag     &=  ~CRTSCTS;           // no flow control
       tty.c_cc[VMIN]   =1;//  0;                  // read doesn't block
       tty.c_cc[VTIME]  = 10;// 2 but befor it 5;                  // 0.5
seconds read timeout
       tty.c_cflag     |=  CREAD | CLOCAL;     // turn on READ & ignore
ctrl lines

       /* Make raw */
       cfmakeraw(&tty);

       /* Flush Port, then applies attributes */
       tcflush( fd, TCIFLUSH );
       if ( tcsetattr ( fd, TCSANOW, &tty ) != 0) {
          std::cout << "Error " << errno << " from tcsetattr" << std::endl;
       }
   }
--------------------------------------------------------------------
my problem is solved