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.
  • 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