123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package main
- import (
- "encoding/hex"
- "fmt"
- "net"
- "os"
- "sparrow/pkg/coap"
- "sparrow/pkg/protocol"
- "sparrow/pkg/tlv"
- "time"
- )
- const url = "127.0.0.1:56883"
- func main() {
- addr, err := net.ResolveUDPAddr("udp", url)
- if err != nil {
- fmt.Println("Can't resolve address: ", err)
- os.Exit(1)
- }
- conn, err := net.DialUDP("udp", nil, addr)
- if err != nil {
- fmt.Println("Can't dial: ", err)
- os.Exit(1)
- }
- defer conn.Close()
- token, _ := hex.DecodeString("e30680acf77ecd60")
- payloadHead := protocol.DataHead{
- Flag: 0,
- Timestamp: uint64(time.Now().Unix() * 1000),
- }
- param1 := []interface{}{uint32(3), float32(1.2), int64(10)}
- params1, err := tlv.MakeTLVs(param1)
- if err != nil {
- fmt.Println(err)
- }
- sub1 := protocol.SubData{
- Head: protocol.SubDataHead{
- SubDeviceid: uint16(1),
- PropertyNum: uint16(1),
- ParamsCount: uint16(len(params1)),
- },
- Params: params1,
- }
- param2 := []interface{}{uint32(4), int64(11)}
- params2, err := tlv.MakeTLVs(param2)
- if err != nil {
- fmt.Println(err)
- }
- sub2 := protocol.SubData{
- Head: protocol.SubDataHead{
- SubDeviceid: uint16(1),
- PropertyNum: uint16(2),
- ParamsCount: uint16(len(params2)),
- },
- Params: params2,
- }
- payload := &protocol.Data{
- Head: payloadHead,
- SubData: []protocol.SubData{},
- }
- payload.SubData = append(payload.SubData, sub1)
- payload.SubData = append(payload.SubData, sub2)
- buf, err := payload.Marshal()
- if err != nil {
- if err != nil {
- fmt.Println(err)
- }
- }
- req := &coap.BaseMessage{
- Code: coap.POST,
- Type: coap.CON,
- MessageID: 2,
- //Token: []byte{0, 1, 0x2, 3, 4, 5, 6, 7, 8, 9, 1, 12, 12, 1, 2, 1, 2, 2},
- Token: token,
- Payload: buf,
- }
- req.SetPathString("/2")
- bytes, err := req.Encode()
- if err != nil {
- fmt.Printf("dial err %s", err.Error())
- }
- conn.Write(bytes)
- msg := make([]byte, 20)
- _, err = conn.Read(msg)
- if err != nil {
- fmt.Println(err)
- }
- fmt.Printf("Response:%#v", msg)
- }
|