commit
						898d8d73a9
					
				@ -27,6 +27,10 @@ Or install it yourself as:
 | 
			
		||||
  puts sms
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# method to send sms
 | 
			
		||||
sms = Biju::Sms.new(:phone_number => '+3312345678', :message => 'hello world')
 | 
			
		||||
@modem.send(sms)
 | 
			
		||||
 | 
			
		||||
@modem.close
 | 
			
		||||
```
 | 
			
		||||
## TODO
 | 
			
		||||
 | 
			
		||||
@ -9,11 +9,20 @@ module Biju
 | 
			
		||||
    #
 | 
			
		||||
    #   Biju::Modem.new(:port => '/dev/ttyUSB0')
 | 
			
		||||
    #
 | 
			
		||||
    def initialize(options={})
 | 
			
		||||
    def initialize(options={}, &block)
 | 
			
		||||
      raise Exception.new("Port is required") unless options[:port]
 | 
			
		||||
      pin = options.delete(:pin)
 | 
			
		||||
      @connection = connection(options)
 | 
			
		||||
      cmd("AT")
 | 
			
		||||
      # initialize modem
 | 
			
		||||
      cmd("ATZ")
 | 
			
		||||
      # unlock pin code
 | 
			
		||||
      cmd("AT+CPIN=\"#{pin}\"") if pin
 | 
			
		||||
      # set SMS text mode
 | 
			
		||||
      cmd("AT+CMGF=1")
 | 
			
		||||
      # set extended error reports
 | 
			
		||||
      cmd('AT+CMEE=1')
 | 
			
		||||
      #instance_eval &block if block_given?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    # Close the serial connection.
 | 
			
		||||
@ -22,8 +31,12 @@ module Biju
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    # Return an Array of Sms if there is messages nad return nil if not.
 | 
			
		||||
    def messages
 | 
			
		||||
      sms = cmd("AT+CMGL=\"ALL\"")
 | 
			
		||||
    def messages(which = "ALL")
 | 
			
		||||
      # read message from all storage in the mobile phone (sim+mem)
 | 
			
		||||
      cmd('AT+CPMS="MT"')
 | 
			
		||||
      # get message list
 | 
			
		||||
      sms = cmd('AT+CMGL="%s"' % which )
 | 
			
		||||
      # collect messages
 | 
			
		||||
      msgs = sms.scan(/\+CMGL\:\s*?(\d+)\,.*?\,\"(.+?)\"\,.*?\,\"(.+?)\".*?\n(.*)/)
 | 
			
		||||
      return nil unless msgs
 | 
			
		||||
      msgs.collect!{ |msg| Biju::Sms.new(:id => msg[0], :phone_number => msg[1], :datetime => msg[2], :message => msg[3].chomp) }
 | 
			
		||||
@ -35,6 +48,17 @@ module Biju
 | 
			
		||||
      cmd("AT+CMGD=#{id}")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def send(sms, options = {})
 | 
			
		||||
      # initiate the sms, and wait for either
 | 
			
		||||
      # the text prompt or an error message
 | 
			
		||||
      cmd("AT+CMGS=\"#{sms.phone_number}\"")
 | 
			
		||||
 | 
			
		||||
      # send the sms, and wait until
 | 
			
		||||
      # it is accepted or rejected
 | 
			
		||||
      cmd("#{sms.message}#{26.chr}")
 | 
			
		||||
      # ... check reception
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    private
 | 
			
		||||
    def connection(options)
 | 
			
		||||
      port = options.delete(:port)
 | 
			
		||||
@ -47,7 +71,8 @@ module Biju
 | 
			
		||||
 | 
			
		||||
    def cmd(cmd)
 | 
			
		||||
      @connection.write(cmd + "\r")
 | 
			
		||||
      wait
 | 
			
		||||
      wait_str = wait
 | 
			
		||||
      #p "#{cmd} --> #{wait_str}"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def wait
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user