SitePoint Sponsor

User Tag List

Results 1 to 2 of 2

Hybrid View

  1. #1
    SitePoint Member
    Join Date
    Mar 2013
    Posts
    1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Send SMS Using GSM Modem

    Hello! i wanna create a form that can send sms to multiple recipient, i've created a form that uses javascript to add or remove textbox dynamically, and i want to know how do i make this form sends sms by using the sms code here, my modem is connected through port COM6

    The form
    PHP Code:
    <SCRIPT language="javascript">
            function 
    addRow(tableID) {

                var 
    table document.getElementById(tableID);

                var 
    rowCount table.rows.length;
                var 
    row table.insertRow(rowCount);

                var 
    cell1 row.insertCell(0);
                var 
    element1 document.createElement("input");
                
    element1.type "checkbox";
                
    element1.name="chkbox[]";
                
    cell1.appendChild(element1);

                var 
    cell2 row.insertCell(1);
                
    cell2.innerHTML rowCount 1;

                var 
    cell3 row.insertCell(2);
                var 
    element2 document.createElement("input");
                
    element2.type "text";
                
    element2.name "CTL_RECIPIENT";

                
    cell3.appendChild(element2);


            }

            function 
    deleteRow(tableID) {
                try {
                var 
    table document.getElementById(tableID);
                var 
    rowCount table.rows.length;

                for(var 
    i=0i<rowCounti++) {
                    var 
    row table.rows[i];
                    var 
    chkbox row.cells[0].childNodes[0];
                    if(
    null != chkbox && true == chkbox.checked) {
                        
    table.deleteRow(i);
                        
    rowCount--;
                        
    i--;
                    }


                }
                }catch(
    e) {
                    
    alert(e);
                }
            }

        
    </SCRIPT>






    <html>
    <head>
    <title>SMS via GSM</title>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <style>
       .clbody {
       font-family:Verdana, Arial, Helvetica, sans-serif;
       font-size:9pt;
       font-weight:normal;
    }
    .clfooter {
       font-family:Verdana;
       font-size:7pt;
       font-weight:normal;
    }
    h1, .h1 {
       width:100%;
       font-family:Verdana, Arial, Helvetica, sans-serif;
       font-size:18px;
       font-weight:bold;
    }
    hr, .hr {
       color:#b0b0b0;
    }
    </style>
    </head>

    <body class="clbody">
    <h1>SMS via GSM</h1>
    <div style="WIDTH:700px">

    </div>
    <hr size="1">


    <form>
    <table class ="clbody" width="700" border="1">

       <tr>
          <td valign="top">Recipient:</td>
          <td valign="top">

          <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />

        <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />

        <TABLE id="dataTable" width="350px" border="1">
            <TR>
                <TD><INPUT type="checkbox" name="chk"/></TD>
                <TD> 1 </TD>
                <TD> <input type="text" name="recipient" value=""> </TD>
            </TR>
        </TABLE>



         </td>
       </tr>
       <tr>
          <td valign="top">Message:</td>
          <td valign="top">



          <input style="width: 250px" type="text" name="msg" value=""></td>




       </tr>

          <tr>
          <td valign="top">Result code:<font color=green></td>
          <td valign="top"></td>
       </tr>   
       <tr>
          <td valign="top">&nbsp;</td>
          <td valign="top"><input size="25" type="submit" value="Send" name="CTL_SEND" style="height: 23px; width: 250px"></td>
       </tr>
    </table>
    <br>
    <br>
    </form>



    </body>
    </html> 

    Code to send sms
    PHP Code:
    <?php


    error_reporting
    (E_ALL);

    //Example

    $gsm_send_sms = new gsm_send_sms();
    $gsm_send_sms->debug false;
    $gsm_send_sms->port 'COM6';
    $gsm_send_sms->baud 115200;
    $gsm_send_sms->init();

    $status $gsm_send_sms->send('+60182867376''testing 123');
    if (
    $status) {
        echo 
    "Message sent\n";
    } else {
        echo 
    "Message not sent\n";
    }

    $status $gsm_send_sms->send('+60193833271''testing 456');
    if (
    $status) {
        echo 
    "Message sent\n";
    } else {
        echo 
    "Message not sent\n";
    }

    $gsm_send_sms->close();







    //Send SMS via serial SMS modem
    class gsm_send_sms {

        public 
    $port 'COM6';
        public 
    $baud 115200;

        public 
    $debug false;

        private 
    $fp;
        private 
    $buffer;

        
    //Setup COM port
        
    public function init() {

            
    $this->debugmsg("Setting up port: \"{$this->port} @ \"{$this->baud}\" baud");

            
    exec("MODE {$this->port}: BAUD={$this->baud} PARITY=N DATA=8 STOP=1"$output$retval);

            if (
    $retval != 0) {
                throw new 
    Exception('Unable to setup COM port, check it is correct');
            }

            
    $this->debugmsg(implode("\n"$output));

            
    $this->debugmsg("Opening port");

            
    //Open COM port
            
    $this->fp fopen($this->port ':''r+');

            
    //Check port opened
            
    if (!$this->fp) {
                throw new 
    Exception("Unable to open port \"{$this->port}\"");
            }

            
    $this->debugmsg("Port opened");
            
    $this->debugmsg("Checking for responce from modem");

            
    //Check modem connected
            
    fputs($this->fp"AT\r");

            
    //Wait for ok
            
    $status $this->wait_reply("OK\r\n"5);

            if (!
    $status) {
                throw new 
    Exception('Did not receive responce from modem');
            }

            
    $this->debugmsg('Modem connected');

            
    //Set modem to SMS text mode
            
    $this->debugmsg('Setting text mode');
            
    fputs($this->fp"AT+CMGF=1\r");

            
    $status $this->wait_reply("OK\r\n"5);

            if (!
    $status) {
                throw new 
    Exception('Unable to set text mode');
            }

            
    $this->debugmsg('Text mode set');

        }

        
    //Wait for reply from modem
        
    private function wait_reply($expected_result$timeout) {

            
    $this->debugmsg("Waiting {$timeout} seconds for expected result");

            
    //Clear buffer
            
    $this->buffer '';

            
    //Set timeout
            
    $timeoutat time() + $timeout;

            
    //Loop until timeout reached (or expected result found)
            
    do {

                
    $this->debugmsg('Now: ' time() . ", Timeout at: {$timeoutat}");

                
    $buffer fread($this->fp1024);
                
    $this->buffer .= $buffer;

                
    usleep(200000);//0.2 sec

                
    $this->debugmsg("Received: {$buffer}");

                
    //Check if received expected responce
                
    if (preg_match('/'.preg_quote($expected_result'/').'$/'$this->buffer)) {
                    
    $this->debugmsg('Found match');
                    return 
    true;
                    
    //break;
                
    } else if (preg_match('/\+CMS ERROR\:\ \d{1,3}\r\n$/'$this->buffer)) {
                    return 
    false;
                }

            } while (
    $timeoutat time());

            
    $this->debugmsg('Timed out');

            return 
    false;

        }

        
    //Print debug messages
        
    private function debugmsg($message) {

            if (
    $this->debug == true) {
                
    $message preg_replace("%[^\040-\176\n\t]%"''$message);
                echo 
    $message "\n";
            }

        }

        
    //Close port
        
    public function close() {

            
    $this->debugmsg('Closing port');

            
    fclose($this->fp);

        }

        
    //Send message
        
    public function send($tel$message) {

            
    //Filter tel
            
    $tel preg_replace("%[^0-9\+]%"''$tel);

            
    //Filter message text
            
    $message preg_replace("%[^\040-\176\r\n\t]%"''$message);

            
    $this->debugmsg("Sending message \"{$message}\" to \"{$tel}\"");

            
    //Start sending of message
            
    fputs($this->fp"AT+CMGS=\"{$tel}\"\r");

            
    //Wait for confirmation
            
    $status $this->wait_reply("\r\n> "5);

            if (!
    $status) {
                
    //throw new Exception('Did not receive confirmation from modem');
                
    $this->debugmsg('Did not receive confirmation from modem');
                return 
    false;
            }

            
    //Send message text
            
    fputs($this->fp$message);

            
    //Send message finished indicator
            
    fputs($this->fpchr(26));

            
    //Wait for confirmation
            
    $status $this->wait_reply("OK\r\n"180);

            if (!
    $status) {
                
    //throw new Exception('Did not receive confirmation of messgage sent');
                
    $this->debugmsg('Did not receive confirmation of messgage sent');
                return 
    false;
            }

            
    $this->debugmsg("Message sent");

            return 
    true;

        }

    }

    ?>

  2. #2
    SitePoint Member
    Join Date
    Aug 2011
    Location
    INDIA
    Posts
    4
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    is it working....i dnt think its work on Windows OS


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •