telosb中的Oscilloscope解析-串口通信

来源:互联网 发布:怎么投诉阿里云 编辑:程序博客网 时间:2024/05/20 17:24

       Oscilloscope的这个例子包括了PC与串口的接发送消息,很值得研究一番。

       大体的思想是传感器节点采集数据,每采集十个数据发送一个数据包给另外一个Base节点,然后Base节点把数据转发给PC端。PC端有一个java程序收集数据并且显示。所以运行这个例子要两个节点,一个烧录Oscilloscope,一个烧录Base节点,还需要一台PC,连接Base节点,运行java程序。但是在运行java程序之前要启动SerialForward工具,这样PC和Base节点才能通信。具体命令不详细描述。

      在这个例子中,我觉得很有意思的是那个java程序。




可以看到主要包括上面几个文件

Node是对节点处理,Data是对所有的数据整合,Graph是画图,windows是对系统处理,Oscilloscope.java是最

重要的函数,它包含启动函数run,数据接收和发送的方法。在这个文件中,有对数据采集频率时间的修改,有messageReceived方法,这个方法可以接收来自节点的串口信息。

    /* Broadcast a version+interval message. */
    void sendInterval() {
    OscilloscopeMsg omsg = new OscilloscopeMsg();

    omsg.set_version(version);
    omsg.set_interval(interval);
    try {
        mote.send(MoteIF.TOS_BCAST_ADDR, omsg);
    }
    catch (IOException e) {
        window.error("Cannot send message to mote");
    }
    }

这个是sendInterval方法,这个方法有一个mote.send的调用,就是把PC信息发给串口的方法。mote.send(MoteIF.TOS_BCAST_ADDR, omsg);是把omsg类发给串口。在Base中的uart.receive会接收这个方法发出

的消息。如果想做串口通信的话,可以把重点研究messageReceive这个方法和mote.send这个方法,其他都可以去掉。

在这里必须要说一下Oscilloscope.h这个头文件,里面定义了Oscilloscope_t这个结构,在java文件中运行make可以看到有一个OscilloscopeMsg.java的文件,那个就是头文件定义的结构的java类,通过里面的方法,可以控制Oscilloscope对象。如果我们需要修改某个对象用来数据传输,需要修改那个头文件,当然修改对应的phthon也是有必要的。笔者在利用这个例子作数据通信时把头文件和和python也都做了处理以免发生不必要的错误。

以上就是这个例子的大致解析。


0 0
原创粉丝点击