TinyOS学习笔记12-节点与计算机利用串口通信2-数据包分析

节点与计算机利用串口通信2-数据包分析
1号节点和2号节点运行BlinkToRadio程序,BaseSation中snoop的作用就是即使1号发送数据指定目的地为2号节点,利用snoop也可以收到数据
使用命令,对串口进行监听
root@ubuntu:~# java net.tinyos.tools.Listen -comm serial@/dev/ttyUSB0:telosb
serial@/dev/ttyUSB0:115200: resynchronising
00 FF FF 00 01 04 00 06 00 01 01 E2
00 FF FF 00 02 04 00 06 00 02 01 B9
00 FF FF 00 01 04 00 06 00 01 01 E3
00 FF FF 00 02 04 00 06 00 02 01 BA

串口接收到的数据如上所示,其数据包的含义为:
00 FF FF 00 01 04 00 06 00 01 01 E2
00(数据包包头)
FF FF(目的地,广播FFFF为广播地址)
00 01(源地址,该信息为1号节点发送)
04(数据长度,4个字节)
00 (组号)
06(AM数据包的类型)
负载部分(用户定义)
00 01 (发送节点id)01 E2(计数,2字节)

对Listen程序java程序的分析:

package net.tinyos.tools;

import java.io.*;
import net.tinyos.packet.*;
import net.tinyos.util.*;
import net.tinyos.message.*;

public class Listen {
    //接收参数,建立连接
    public static void main(String args[]) throws IOException {
        String source = null;
        PacketSource reader;
        if (args.length == 2 && args[0].equals("-comm")) {
          source = args[1];
        }
    else if (args.length > 0) {
        System.err.println("usage: java net.tinyos.tools.Listen [-comm PACKETSOURCE]");
        System.err.println("       (default packet source from MOTECOM environment variable)");
        System.exit(2);
    }
        if (source == null) {   
        reader = BuildSource.makePacketSource();
        }
        else {
          //连接数据
        reader = BuildSource.makePacketSource(source);
        }
    if (reader == null) {
        System.err.println("Invalid packet source (check your MOTECOM environment variable)");
        System.exit(2);
    }

    try {
      reader.open(PrintStreamMessenger.err);//打开数据
      for (;;) {//一直循环监听数据
        byte[] packet = reader.readPacket(); //读到的数据交给packet
        Dump.printPacket(System.out, packet);//打印出来数据
        System.out.println();
        System.out.flush();
      }
    }
    catch (IOException e) {
        System.err.println("Error on " + reader.getName() + ": " + e);
    }
    }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值