使用sqlite记录数据,同时交叉编译有问题,在arm上编译
This commit is contained in:
parent
0b6bc0c6af
commit
9dec5fac78
|
|
@ -3,4 +3,5 @@ ble-ibeacon
|
||||||
*.exe
|
*.exe
|
||||||
*.bin
|
*.bin
|
||||||
logs/
|
logs/
|
||||||
.vscode/
|
.vscode/
|
||||||
|
*.db
|
||||||
12
go.mod
12
go.mod
|
|
@ -2,4 +2,14 @@ module myschools.me/suguo/ble-ibeacon
|
||||||
|
|
||||||
go 1.17
|
go 1.17
|
||||||
|
|
||||||
require github.com/paypal/gatt v0.0.0-20151011220935-4ae819d591cf
|
require (
|
||||||
|
github.com/paypal/gatt v0.0.0-20151011220935-4ae819d591cf
|
||||||
|
gorm.io/driver/sqlite v1.2.6
|
||||||
|
gorm.io/gorm v1.22.4
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||||
|
github.com/jinzhu/now v1.1.3 // indirect
|
||||||
|
github.com/mattn/go-sqlite3 v1.14.9 // indirect
|
||||||
|
)
|
||||||
|
|
|
||||||
23
main.go
23
main.go
|
|
@ -11,6 +11,8 @@ import (
|
||||||
|
|
||||||
"github.com/paypal/gatt"
|
"github.com/paypal/gatt"
|
||||||
"github.com/paypal/gatt/examples/option"
|
"github.com/paypal/gatt/examples/option"
|
||||||
|
"myschools.me/suguo/ble-ibeacon/model"
|
||||||
|
"myschools.me/suguo/ble-ibeacon/sqlite"
|
||||||
)
|
)
|
||||||
|
|
||||||
type IBeancon struct {
|
type IBeancon struct {
|
||||||
|
|
@ -41,7 +43,18 @@ func onPerhipheralDiscovered(p gatt.Peripheral, a *gatt.Advertisement, rssi int)
|
||||||
// return
|
// return
|
||||||
// }
|
// }
|
||||||
fmt.Println("NAME:", a.LocalName, "T:", time.Now(), "MAC:", p.ID(), "RSSI:", rssi, "LEN:", len(a.ManufacturerData))
|
fmt.Println("NAME:", a.LocalName, "T:", time.Now(), "MAC:", p.ID(), "RSSI:", rssi, "LEN:", len(a.ManufacturerData))
|
||||||
|
db, err := sqlite.New()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err.Error())
|
||||||
|
}
|
||||||
|
if err := db.Save(&model.Rssi{
|
||||||
|
MAC: p.ID(),
|
||||||
|
Name: a.LocalName,
|
||||||
|
Rssi: int32(rssi),
|
||||||
|
PackageLen: len(a.ManufacturerData),
|
||||||
|
}).Error; err != nil {
|
||||||
|
fmt.Println(err.Error())
|
||||||
|
}
|
||||||
// for _, d := range a.ServiceData {
|
// for _, d := range a.ServiceData {
|
||||||
// fmt.Println("uuid:", d.UUID, " data:", d.Data)
|
// fmt.Println("uuid:", d.UUID, " data:", d.Data)
|
||||||
// }
|
// }
|
||||||
|
|
@ -64,6 +77,14 @@ func onStateChanged(device gatt.Device, s gatt.State) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
sqlite.Init(&sqlite.Config{
|
||||||
|
DBFile: "./ble.db",
|
||||||
|
})
|
||||||
|
|
||||||
|
if err := sqlite.Migrate(&model.Rssi{}); err != nil {
|
||||||
|
log.Fatalln(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
dev, err := gatt.NewDevice(option.DefaultClientOptions...)
|
dev, err := gatt.NewDevice(option.DefaultClientOptions...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to open device, err:%s\n", err)
|
log.Fatalf("Failed to open device, err:%s\n", err)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "gorm.io/gorm"
|
||||||
|
|
||||||
|
type Rssi struct {
|
||||||
|
gorm.Model
|
||||||
|
MAC string `gorm:"column:mac;type:varchar(20);not null;index" json:"mac"`
|
||||||
|
Name string `gorm:"type:varchar(20)" json:"name"`
|
||||||
|
Rssi int32 `gorm:"size:32;not null;index" json:"rssi"`
|
||||||
|
PackageLen int `gorm:"size:32"`
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package sqlite
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
DBFile string //DB文件名
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
package sqlite
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"gorm.io/driver/sqlite"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
"gorm.io/gorm/logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
_conf *Config
|
||||||
|
_db *gorm.DB
|
||||||
|
)
|
||||||
|
|
||||||
|
//Init mysql初始化
|
||||||
|
func Init(conf *Config) error {
|
||||||
|
if conf != nil {
|
||||||
|
_conf = conf
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
//New 创建实例
|
||||||
|
func New() (*gorm.DB, error) {
|
||||||
|
if _db != nil {
|
||||||
|
return _db, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if _conf == nil {
|
||||||
|
return nil, errors.New("组件未初始化,请执行Init!")
|
||||||
|
}
|
||||||
|
|
||||||
|
dir, _ := filepath.Split(_conf.DBFile)
|
||||||
|
if dir != "" {
|
||||||
|
_, err := os.Stat(dir)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
if err := os.MkdirAll(dir, 0755); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
_db, err = gorm.Open(sqlite.Open(_conf.DBFile), &gorm.Config{
|
||||||
|
SkipDefaultTransaction: true,
|
||||||
|
Logger: logger.Default.LogMode(logger.Silent),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return _db, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Migrate(dest ...interface{}) error {
|
||||||
|
db, err := New()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return db.AutoMigrate(dest...)
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue