Forked from https://github.com/argandas/sim900
This package uses a serialport to communicate with the SIM900 GSM Modem.
- You'll need Golang v1.3+
- SIM900 Package uses the serial package in order to communicate with the modem via AT commands, you will need to install both SIM900 and serial packages.
go get github.com/vinhjaxt/serial # installs the serial package
go get github.com/vinhjaxt/sim900 # installs the SIM900 package
-
You'll need an available serial port, SIM900 boards usually works with 5V TTL signals so you can get a USB-to-Serial TTL converter, I recommend you to use the FTDI Cable for this, but you can use any USB-to-Serial adapters there are plenty of them.
package main
import (
"encoding/hex"
"log"
"strings"
"time"
"github.com/vinhjaxt/sim900"
"github.com/xlab/at/sms"
)
func main() {
gsm := sim900.New()
gsm.Port.Verbose = false
// /dev/ttyUSB2
err := gsm.Connect("COM23", 460800)
if err != nil {
log.Println(err)
return
}
defer gsm.Disconnect()
_, err = gsm.SendSMS("170", "KTS3")
if err != nil {
log.Println(err)
return
}
smsID, err := gsm.WaitSMS(60 * time.Second)
if err != nil {
log.Println(err)
return
}
text, err := gsm.ReadSMS(smsID, sim900.TEXT_MODE)
if err != nil {
log.Println(err)
return
}
log.Printf("Text %q", text)
pduData, err := gsm.ReadSMS(smsID, sim900.PDU_MODE)
if err != nil {
log.Println(err)
return
}
bs, err := hex.DecodeString(strings.Trim(pduData[2], "\r\n"))
if err != nil {
log.Panicln(err)
return
}
msg := new(sms.Message)
msg.ReadFrom(bs)
log.Printf("Text in PDU %q", msg.Text)
err = gsm.ClearSMS()
if err != nil {
log.Println(err)
return
}
}
- List of available SIM900 commands can be found here.
- For more information about available SIM900 methods please check godoc for this package.
Go explore!
SIM900 package is MIT-Licensed