Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Unable to send AT commands to the COM3 port. plz help.

Unable to send AT commands to the COM3 port. plz help.

Scheduled Pinned Locked Moved C / C++ / MFC
helptutorialquestion
19 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S SandipG

    you are reading as soon as you write try adding some sleep in between write and read. I hope it will help you. But don't forget to add "\r\n" may be you can try "\n\r" i am not sure about the exact order.

    Regards, Sandip.

    A Offline
    A Offline
    AprNgp
    wrote on last edited by
    #8

    i have tried Sleep(1000*10); and Sleep(1000*20); the o/p of reading is the earlier command + OK (in the next line)

    Apurv

    S 1 Reply Last reply
    0
    • A AprNgp

      i have tried Sleep(1000*10); and Sleep(1000*20); the o/p of reading is the earlier command + OK (in the next line)

      Apurv

      S Offline
      S Offline
      SandipG
      wrote on last edited by
      #9

      OK is nothing but response from the modem. what is not working then for you???:confused:

      Regards, Sandip.

      A 1 Reply Last reply
      0
      • S SandipG

        OK is nothing but response from the modem. what is not working then for you???:confused:

        Regards, Sandip.

        A Offline
        A Offline
        AprNgp
        wrote on last edited by
        #10

        it is not dialing the number i provided .... ATDW2289759\r\n

        Apurv

        S 1 Reply Last reply
        0
        • A AprNgp

          my code is as follows ...

          DCB dcb;
          HANDLE hCom;
          BOOL fSuccess;
          TCHAR *pcCommPort = TEXT("COM3");
          char DataBuffer[] = "AT+FCLASS=8";
          DWORD dwBytesToWrite = (DWORD)strlen(DataBuffer);
          char Data2[]="ATDW2289759";

          DWORD dwBytesWritten = 0;
          DWORD dwBytesRead = 0;
          char ReadBuffer\[BUFFER\_SIZE\] = {0};
          

          hCom = CreateFile( pcCommPort,
          GENERIC_READ | GENERIC_WRITE,
          0, // must be opened with exclusive-access
          NULL, // default security attributes
          OPEN_EXISTING, // must use OPEN_EXISTING
          0, // not overlapped I/O
          NULL // hTemplate must be NULL for comm devices
          );

          if (hCom == INVALID_HANDLE_VALUE)
          {
          // Handle the error.
          printf ("CreateFile failed with error %d.\n", GetLastError());
          return (1);
          }

          // Build on the current configuration, and skip setting the size
          // of the input and output buffers with SetupComm.

          // SecureZeroMemory(&dcb, sizeof(DCB));
          dcb.DCBlength = sizeof(DCB);
          fSuccess = GetCommState(hCom, &dcb);

          if (!fSuccess)
          {
          // Handle the error.
          printf ("GetCommState failed with error %d.\n", GetLastError());
          return (2);
          }

          dcb.BaudRate = CBR\_2400;     // set the baud rate
          dcb.ByteSize = 8;             // data size, xmit, and rcv
          dcb.Parity = NOPARITY;        // no parity bit
          dcb.StopBits = ONESTOPBIT;    // one stop bit
          

          fSuccess = SetCommState(hCom, &dcb);

          if (!fSuccess)
          {
          // Handle the error.
          printf ("SetCommState failed with error %d.\n", GetLastError());
          return (3);
          }

          _tprintf (TEXT("Serial port %s successfully reconfigured.\n"),pcCommPort);

          //WriteFile(hCom,"AT+FCLASS=8",sizeof("AT+FCLASS=8"),&len,0);
          

          if( FALSE == WriteFile(hCom, // open file handle
          DataBuffer + dwBytesWritten, // start of data to write
          dwBytesToWrite - dwBytesWritten, // number of bytes to write
          &dwBytesWritten, // number of bytes that were written
          NULL)) // no overlapped structure
          printf("Could not write %s to file (error %d)\n",DataBuffer, GetLastError());
          else
          _tprintf(TEXT("Wrote %d bytes successfully.\n"), dwBytesWritten);
          if( FALSE == ReadFile(hCom, ReadBuffer, BUFFER_SIZE-2, &dwBytesRead,

          V Offline
          V Offline
          Vaclav_
          wrote on last edited by
          #11

          See documentation for SetCommTimeouts. After that verify your AT command string. As debugging tool, I would turn on modem speaker if you have one. Also verify that COM3 is valid and unused by other application. " When reading from a communications device, the behavior of ReadFile is governed by the current communication time-outs as set and retrieved using the SetCommTimeouts and GetCommTimeouts functions. Unpredictable results can occur if you fail to set the time-out values. For more information about communication time-outs, see COMMTIMEOUTS. "

          A 1 Reply Last reply
          0
          • V Vaclav_

            See documentation for SetCommTimeouts. After that verify your AT command string. As debugging tool, I would turn on modem speaker if you have one. Also verify that COM3 is valid and unused by other application. " When reading from a communications device, the behavior of ReadFile is governed by the current communication time-outs as set and retrieved using the SetCommTimeouts and GetCommTimeouts functions. Unpredictable results can occur if you fail to set the time-out values. For more information about communication time-outs, see COMMTIMEOUTS. "

            A Offline
            A Offline
            AprNgp
            wrote on last edited by
            #12

            THANX Vaclav_Sal .... will check it soon ....

            Apurv

            A 1 Reply Last reply
            0
            • A AprNgp

              THANX Vaclav_Sal .... will check it soon ....

              Apurv

              A Offline
              A Offline
              AprNgp
              wrote on last edited by
              #13

              :doh: how to set the timeouts ?? what should be the second parameter to SetCommTimeouts() function ?

              Apurv

              1 Reply Last reply
              0
              • A AprNgp

                it is not dialing the number i provided .... ATDW2289759\r\n

                Apurv

                S Offline
                S Offline
                SandipG
                wrote on last edited by
                #14

                Does this command work in HyperTerminal BTW:this link explains the AT commands might help you.. Modem commands[^]

                Regards, Sandip.

                A 1 Reply Last reply
                0
                • S SandipG

                  Does this command work in HyperTerminal BTW:this link explains the AT commands might help you.. Modem commands[^]

                  Regards, Sandip.

                  A Offline
                  A Offline
                  AprNgp
                  wrote on last edited by
                  #15

                  SandipG :) wrote:

                  Does this command work in HyperTerminal

                  yes ... the number is getting dialed thro' HyperTerminal ... it is working perfectly there ...

                  Apurv

                  S A 2 Replies Last reply
                  0
                  • A AprNgp

                    SandipG :) wrote:

                    Does this command work in HyperTerminal

                    yes ... the number is getting dialed thro' HyperTerminal ... it is working perfectly there ...

                    Apurv

                    S Offline
                    S Offline
                    SandipG
                    wrote on last edited by
                    #16

                    What does your program do after read buffer??

                    Regards, Sandip.

                    1 Reply Last reply
                    0
                    • A AprNgp

                      SandipG :) wrote:

                      Does this command work in HyperTerminal

                      yes ... the number is getting dialed thro' HyperTerminal ... it is working perfectly there ...

                      Apurv

                      A Offline
                      A Offline
                      AprNgp
                      wrote on last edited by
                      #17

                      in the HyperTerminal, when the command ATDW2289759 is given the response is VCON, but in my code the response is OK

                      Apurv

                      A 1 Reply Last reply
                      0
                      • A AprNgp

                        in the HyperTerminal, when the command ATDW2289759 is given the response is VCON, but in my code the response is OK

                        Apurv

                        A Offline
                        A Offline
                        AprNgp
                        wrote on last edited by
                        #18

                        there is a while loop as follows :

                        while(1)
                        {
                        if(kbhit())
                        {
                        key=getch();
                        if(key=='x')
                        {
                        CloseHandle(hCom);
                        exit(0);
                        }
                        switch(key)
                        {
                        case '1':
                        // code to issue command ATDW2289759\r\n
                        }
                        }
                        }

                        Apurv

                        A 1 Reply Last reply
                        0
                        • A AprNgp

                          there is a while loop as follows :

                          while(1)
                          {
                          if(kbhit())
                          {
                          key=getch();
                          if(key=='x')
                          {
                          CloseHandle(hCom);
                          exit(0);
                          }
                          switch(key)
                          {
                          case '1':
                          // code to issue command ATDW2289759\r\n
                          }
                          }
                          }

                          Apurv

                          A Offline
                          A Offline
                          AprNgp
                          wrote on last edited by
                          #19

                          well... its done ! the problem was, i was sending the command as a complete string, the modem needed the command in the pieces ... i mean character-by-character .... the problem is solved ... thanx to all of u .... :)

                          Apurv

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups