1、OpenVisualiz**流程
a)仿真节点数据-->moteProbe.py-->moteConnector.py-->moteStatus.py
b)openvisualizerWeb.py 调用OpenVisualizerApp.py ,通过moteview.tmpl显示
OpenVisualizerApp.py中getMoteState函数通过调用moteStatus类获取状态数据
2、moteStatus.py中
class moteState 有许多状态属性(ST_ASN、ST_ISSYNC);析构函数表示状态属性获取;
registrations = [
{
'sender' : 'moteConnector@{0}'.format(self.moteConnector.serialport),
'signal' : 'fromMote.status',
'callback' : self._receivedStatus_notif,
},
]
3、moteConnector.py将数据发送给OpenParser.py( 其 继承了Parser )
a) # local variables
self.parser = OpenParser.OpenParser()
b) def _sendToParser(self,data):
input = data
(eventSubType,parsedNotif) = self.parser.parseInput(input)
4、串口格式
7E 44 31 00 84 3C 00 00 005E 02 35 31 88 9C 5E DE C7 7E
节点之间的超声测距信息。7E:协议栈帧格式开始,44帧格式符 ;31 00 :31号节点通过串口向上位机发送的数据;
84 3C 00 00 00 :5个字节的asn(低位在前高位在后),相当于时间戳,asn变化一相当于15ms,精确度符合要求;
5E:串口的帧开始符;02: 表示测距数据;35 31:表示35和31号节点之间的测距,35号节点发超声,31号节点收超声; 5E:串口帧结束;
DE C7:CRC校验;7E:协议栈帧结束(只需解析黄色部分)
以上格式可能跟自己定义有关
参考1:https://openwsn.atlassian.net/wiki/display/OW/Serial+Format#SerialFormat-SERFRAME_MOTE2PC_DATAFrame
参考2:drivers/common/openserial.c 中:
openserial_printStatus()+openserial_printData(uint8_t* buffer, uint8_t length)