我有一个在永久循环中回显整数(从卷积数组包中取出)的服务。此循环将不断打印如下这样的不同状态:
1 (new assignment)
1
1
1
3 (success)
3
3
1 (new assignment)
1
1
1
1
4 (failure)
4
4
1 (new assignment)
1
1
3 (success)
使用python,当整数更改时(例如括号中的整数),我想一次一次打印一条消息,到目前为止,我一直很不幸找不到合适的解决方案。主要问题是回调函数(为我打印这些整数)每隔一秒钟左右就会被调用一次,这将导致在每次满足一个条件时打印更新消息。
代码如下,rospy类创建循环,该循环将继续触发回调:
def callback(data):
status = data.status_list[0].status
if status == 1:
print("new assignment")
if status == 3:
print("success")
if status == 4:
print("failure")
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("move_base/status", GoalStatusArray, callback)
rospy.spin()
答案 0 :(得分:1)
您需要跟踪前一个值,以便可以将其与当前值进行比较,并在它们不同时进行打印。像这样:
class StatusChecker(object):
def __init__(self):
self.previous = None
def callback(self, data):
status = data.status_list[0].status
if status != self.previous:
if status == 1:
print("new assignment")
elif status == 3:
print("success")
elif status == 4:
print("failure")
# Remember this value so we can see if it changes
self.previous = status
checker = StatusChecker()
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("move_base/status", GoalStatusArray, checker.callback)
rospy.spin()