|
发表于 2017-7-31 10:50:24
|
显示全部楼层
谢谢。
另外关于超声波避障模式,还有点疑惑。
如果要获取雷达数据,是否需要发送切换进超声波避障模式的命令????
超声波避障模式 FF 13 05 00 FF
看了下wifirobots.py的源码里,似乎是需要这个逻辑的:
####################################################
##函数名称 Cruising_Mod()
##函数功能 :模式切换函数
##入口参数 :无
##出口参数 :无
####################################################
def Cruising_Mod(func):
print 'into Cruising_Mod-01'
global Pre_Cruising_Flag
print 'Pre_Cruising_Flag %d '%Pre_Cruising_Flag
global Cruising_Flag
print 'Cruising_Flag %d '%Cruising_Flag
while True:
if (Pre_Cruising_Flag != Cruising_Flag):
if (Pre_Cruising_Flag != 0):
Motor_Stop()
Pre_Cruising_Flag = Cruising_Flag
print 'Pre_Cruising_Flag = Cruising_Flag == 0'
if(Cruising_Flag == 1): #进入红外跟随模式
Follow()
elif (Cruising_Flag == 2): #进入红外巡线模式
TrackLine()
elif (Cruising_Flag == 3): #进入红外避障模式
Avoiding()
elif (Cruising_Flag == 4): #进入超声波壁障模式
AvoidByRadar(15)
elif (Cruising_Flag == 5): #进入超声波壁障模式
Send_Distance()
else:
time.sleep(0.001)
time.sleep(0.001)
####################################################
##函数名称 Send_Distance()
##函数功能 :超声波距离PC端显示
##入口参数 :无
##出口参数 :无
####################################################
def Send_Distance():
dis_send = int(Get_Distence())
#dis_send = str("%.2f"%dis_send)
if dis_send < 255:
print 'Distance: %d cm' %dis_send
tcpCliSock.send("\xFF")
time.sleep(0.005)
tcpCliSock.send("\x03")
time.sleep(0.005)
tcpCliSock.send("\x00")
time.sleep(0.005)
tcpCliSock.send(chr(dis_send))
time.sleep(0.005)
tcpCliSock.send("\xFF")
time.sleep(0.1)
但是问题是,上行协议里关于雷达数据的说明是:
雷达数据 FF 03 距离值 角度值 FF 数据位1为距离值,数据位2作为角度值。
而源码里的 Send_Distance()方法里,数据位1一直是0,数据位2才是距离值,没有角度值???
请问我的理解是否正确?
|
|