#!/usr/bin/env python
import rospy
from bzrobot_msgs.msg import bzr_WheelLinearVels #from threading import Thread
from time import sleep class RS232MotorComm(): def callback(self, data):
print '****************************************start callback'
self.flg=
sleep(0.05)
rospy.loginfo("speed %f %f",data.leftWheelLinearVel, data.rightWheelLinearVel)
self.flg= def motor_listener(self):
self.flg=
rospy.init_node('rs232_motor_comm', anonymous=True) rospy.Subscriber("control_wheel_linear_vel", bzr_WheelLinearVels, self.callback)
#sleep() r = rospy.Rate() # 10hz
while self.flg==:#not rospy.is_shutdown():#True:
print'where'
r.sleep()  #time must enough for callback,or it will out while loop
print'after sleep 1s' if __name__ == '__main__': motor_controller = RS232MotorComm()
print'the1' motor_controller.motor_listener()
    #rospy.spin()
print'end'

1.关于rospy.spin()调用多次callback

程序若无rospy.spin(),也无上面黄色部分,则订阅一次发布消息会调用多次callback。

2.当接收到订阅消息时,ballback在r.sleep()时间空隙的时候调用,所以callback的执行时间不能超过r.sleep()提供的间隙时间,例如在callback里设置sleep(1),则会消耗完r.sleep(),然后运行print 'after sleep 1s',此时flg=0,因此跳出while循环,结束程序。

直接用sleep()代替rospy.Rate和r.sleep(),也是可以的。

3.最好使用:

while not rospy.is_shutdown(): #True:
         if self.flg==1: #encoder_list[0]='e':

1.关于无rospy.spin()调用多次callback 2. subscrib后面语句和callback函数运行顺序的更多相关文章

  1. 在iframe里调用parent.func()引出的js函数运行在它们被定义的作用域里,而不是它们被执行的作用域里

    有个document里定义了一个函数func(),同时在document里嵌入了一个iframe,在这个iframe里调用父窗口的方法:parent.func(),本来我以为这个函数的运行环境是在这个 ...

  2. 应用层open(read、write、close)怎样调用驱动open(read、write、close)函数的?

    应用层open(read.write.close)怎样调用驱动open(read.write.close)函数的? 华清远见2014-09-29   北京海淀区 张俊浩 三大数据结构关系图

  3. 通过C#调用,实现js加密代码的反混淆,并运行js函数

    前一篇我测试了vba调用htmlfile做反混淆,并执行js加密函数的代码.本文换成C#实现. 联系QQ:564955427 C#操作JS函数,可以通过ScriptControl组件,但这个组件只能在 ...

  4. 尾递归 递归函数中,递归调用是整个函数体中最后的语句,且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归,空间复杂度是O(1)

    什么是递归深度 递归深度就是递归函数在内存中,同时存在的最大次数. 例如下面这段求阶乘的代码: Java: int factorial(int n) { if (n == 1) { return 1; ...

  5. 使用ajax技术无刷新动态调用股票信息

    新浪的财金频道一直感觉做得很好.但由于最近网速慢的缘故,查看股票信息时网页老是打不开.这几天一直在研究ajax,于是用jquery自己做了一个自动读取新浪股票实时数据的页面. <html> ...

  6. winform 拖动无边框窗体(调用Windows API)

    第一步:将窗体的FormBoderStyle属性设置为None: 第二步:添加一个新类:Win32.cs 代码如下: public class Win32 { [DllImport("use ...

  7. Python3基础 函数 无参数无返回值 调用会输出hello world的函数

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  8. Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务、TLS组织运行维护Orderer服务

    前言 在实验Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务.多组织共同运行维护Orderer服务中,我们已经完成了让普通组织运行维护 Orderer 服务,但是 ...

  9. C#调用其它语言(例如C++)DLL文件中函数的方法摘要

    有托管和非托管的概念没仔细看,接下来记录的引用Dll文件指的是无法通过VS自动完成添加引用的情况,可以使用如下方法: 步骤一: 打开“Visual Studio Tools”的“命令提示符”工具 使用 ...

随机推荐

  1. PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20)

    PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20) http://www.patest.cn/contests/pat-b-practise/1037 ...

  2. shell脚本,awk替换{}里面的内容

    如何将oxo{axbxc}oxo{dxexf}oxo里面的{}里面的x 替换为; 用awk实现 [root@localhost 09-30]# echo 'oxo{axbxc}oxo{dxexf}ox ...

  3. HDU - 4802 - GPA (水题)

    题意: 计算GPA,输入一个数字和一个字符串,用 数字×字符串对应的数值 思路: 用map对应数值,要注意的是字符串为P或者N的时候,不计入结果 代码: #include<iostream> ...

  4. 【二分 贪心】bzoj3477: [Usaco2014 Mar]Sabotage

    科学二分姿势 Description Farmer John's arch-nemesis, Farmer Paul, has decided to sabotage Farmer John's mi ...

  5. 【倍增】7.11fusion

    非常奇妙的倍增题 题目描述 知名科学家小A在2118年在计算机上实现了模拟聚变的过程.我们将她研究的过程简化.核子共有26种,可以用a到z共26个字母表示.核子聚变的过程可以用一个字符串描述.按照顺序 ...

  6. [LUOGU] P2716 和谐的雪花

    https://www.luogu.org/problemnew/show/P2716 给出一个n*m的矩形,求里面边长最小的正方形,使得该正方形内最大值与最小值的差大于等于给定的K. 第一反应是二分 ...

  7. java代码解析二维码

    java代码解析二维码一般步骤 本文采用的是google的zxing技术进行解析二维码技术,解析二维码的一般步骤如下: 一.下载zxing-core的jar包: 二.创建一个BufferedImage ...

  8. 网络设备之ospf2

    OSPF(Open Shortest Pass First,开放最短路径优先协议),是一个最常用的内部网管协议,是一个链路状态协议. OSPF的特点 OSPF是一种无类路由协议,支持VLSM可变长子网 ...

  9. PAT Basic 1070

    1070 结绳 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原 ...

  10. progit 学习笔记-- 1 第一章 第二章

    * 1 起步**  关于版本控制*** 什么是版本控制?记录文件变化,查阅特定版本,回溯到之前的状态.任何类型的文件进行版本控制.复制整个目录 加上备份时间 简单 混淆 无法恢复本地版本控制 数据库记 ...