<LinearLayout
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignTop="@+id/bt_call"
android:layout_alignParentStart="true"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:background="@drawable/bg"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
LinearLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/bt_openUrl"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="20dp"
android:background="#00BFFF"
android:text="请求定位"
android:textAllCaps="true"
android:textSize="14sp"
android:textStyle="bold" />
/*************************************************/
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_openUrl:
// openUrl();
String locateUrl = "/*服务器定位服务url*/";
WebViewActivity.loadUrl(this, locateUrl, "开始定位");
break;
}
}
//硬件初始化
SPIInit();//单片机与射频芯片通信
RFInitSetup(); //驱动层初始化
FlashInitSetup();//存储节点或协调器信息
InitTicks();//单片机时钟
//中断初始化
IFS1bits.INT1IF=0;
IEC1bits.INT1IE=1;
IPC5bits.INT1IP=7;//最高优先级为7,依次递减6直至1
INTCON2bits.INT1EP=1;//1为下降沿,0为上升沿
//协议栈初始化
emSysInit();
PHYInitSetup();//物理层初始化
MACInitSetup();//MAC层初始化
emEint(&prio);
//操作系统任务
CreateTask(SYSTask,0,0,READY);//系统任务
CreateTask(MACTask,9,9,READY);//MAC任务
CreateTask(SendByUARTTask,12,12,READY);//协调器上传到上位机任务
CreateTask(CircleTask,15,15,READY);///底层循环,定时采集发送距离信息
//定义协调器的网络地址,MAC地址
macPIB.macPANId.nVal=0x0101;//网络标号
macPIB.macShortAddr.nVal=0x0000;//协调器短地址
macStatus.bits.addrMode = MAC_SRC_SHORT_ADDR;
macStatus.bits.bEstablishPAN = 1;//协调器已经建立网络的标志位
macStatus.bits.isAssociated = 1;//(节点用,标识已经入网)
RFSetTRxState(RF_TRX_RX);//射频模块处于接收状态
StartTask();
}
typedef struct _PHY_PIB
{
BYTE phyCurrentChannel;//通信无线信道
BYTE phyChannelSuppoerted;//支持的无线信道数量
BYTE phyTransmitPower;//发射功率
BYTE phyCCAMode;
BYTE phyBaudRate;//发射无线码率
}PHY_PIB;
BOOL MACSendAssociationReq(NODE_INFO *macAddr,ASSOC_REQUEST_CAP CapInfo)
{
BYTE cSize=0;
BYTE cPtrTx[5];
SHORT_ADDR PANId;
PANId.nVal=macPIB.macPANId.nVal;
macPIB.macPANId.nVal=0xFFFF;
MACPutHeader(macAddr,MAC_FRAME_CMD);
macPIB.macPANId.nVal=PANId.nVal;
cPtrTx[cSize++]=MAC_ASSOC_REQUEST;
cPtrTx[cSize++]=CapInfo.cVal;
cPtrTx[cSize++]=macPIB.CDNum;
MACPutTxBuffer(cPtrTx,cSize);
return MACTransmitPacket();
}
void MACProcessBeacon(void)
{
BYTE cSize=0;
PAN_DESCRIPTOR PANDesc;
if(macCurrentRxFrame.srcAddress.AddrMode == MAC_SRC_SHORT_ADDR)
{
PANDesc.CoordAddrMode=0;
PANDesc.CoordPANId.nVal=macCurrentRxFrame.srcAddress.PANId.nVal;
PANDesc.CoordShortAddr.nVal=macCurrentRxFrame.srcAddress.ShortAddr.nVal;
}
else
{
PANDesc.CoordAddrMode=1;
PANDesc.CoordPANId.nVal=macCurrentRxFrame.srcAddress.PANId.nVal;
memcpy((BYTE*)&PANDesc.CoordLongAddr,(BYTE*)&macCurrentRxFrame.srcAddress.LongAddr,sizeof(LONG_ADDR));
}
PANDesc.SuperframeSpec.cVal[0]=macCurrentRxFrame.pMsdu[cSize++];
PANDesc.SuperframeSpec.cVal[1]=macCurrentRxFrame.pMsdu[cSize++];
CLR_WDT();
PANDesc.bits.allowJoin=PANDesc.SuperframeSpec.bits.AssociationPermit;
PANDesc.LinkQuality=PHYGetLinkQuality(macCurrentRxFrame.rssi);
MACRefreshPANRecord(&PANDesc);
macCurrentRxFrame.bReady=0;
CLR_WDT();
}
/*****************************************************************/
case MAC_ASSOC_RESPONSE:
DeviceType=macPIB.DeviceInfo.bits.DeviceType;
shortAddr.cVal[0]=macCurrentRxFrame.pMsdu[offset++];
shortAddr.cVal[1]=macCurrentRxFrame.pMsdu[offset++];
Status=macCurrentRxFrame.pMsdu[offset++];
if((Status==MAC_ASSOCIATION_PAN_SUCCESS)&&(shortAddr.nVal!=0xFFFF))
{
macPIB.macPANId.nVal=macCurrentRxFrame.srcAddress.PANId.nVal;
macPIB.macShortAddr.nVal=shortAddr.nVal;
//PutMACAddr();
macStatus.bits.addrMode=MAC_SRC_SHORT_ADDR;
macStatus.bits.isAssociated=1;
//PutCoordDescriptor();
}
case 0x66:
emTxMesg(LOC_RSSI_REQ,RealTimeMesg,0,0);
break;
case 0x68:
emTxMesg(LOC_DEL_REQ,RealTimeMesg,0,0);
memset(Loc_Buffer,0,20*sizeof(unsigned char));
memset(distance_Buffer,0,20*sizeof(unsigned int));
infrared_correct = 0;
break;
case 0x6A:
if(Loc_Times<20)
{
Loc_Buffer[Loc_Times] = macCurrentRxFrame.rssi;
distance_Buffer[Loc_Times] = register2distance(Loc_Buffer[Loc_Times]) ;
Loc_Times++;
}
else Loc_Times = 0;
break;
case 0x6C:
Loc_Times = 0;
emTxMesg(LOC_DIS_REQ,RealTimeMesg,0,0);
break;
<body>
<script src="lib/esmap.min.js" > </script >
<div id="map-container"></div>
map = new esmap.ESMap({
container: container,
mapDataSrc: defaultOpt.mapDataUrl,
mapThemeSrc: defaultOpt.mapThemeUrl,
themeID: styleid,
focusAlphaMode: false,
defaultFloornum: 1,
token: "sducxds6" //地图编号
});
map.openMapById("sducxds6"); //根据ID打开地图
</body>
//更新数据表tb_data_t,将表中所有state为0的值更新为2
<update id="sendCommand0" >
update tb_date_t set state=2 where state=0
</update>
//在数据表tb_data_t中插入一条命令command
<insert id="sendCommand" parameterType="Command" >
insert into tb_date_t(user,device,name,macip,command,state) values(
#{user}, #{device},#{name}, #{macip},#{command},#{state})
</insert>
//在数据库查询返回位置信息数据
<select id="findArea" resultType="Location">
select areaid,x,y,width,height from tb_location as a
where a.area=(select tb_data.value from tb_data
where tb_data.port='6008'and tb_data.id = (select MAX(id)from tb_data ))
</select>
public class Location {
private String area;
private String areaid;
private String x;
private String y;
private String width;
private String height;
}