Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 __author__ = "mferguson@willowgarage.com (Michael Ferguson)"
00037
00038 import rospy
00039 from rosserial_python import SerialClient, RosSerialServer
00040 from serial import SerialException
00041 from time import sleep
00042 import multiprocessing
00043
00044 import sys
00045
00046 if __name__=="__main__":
00047
00048 rospy.init_node("serial_node")
00049 rospy.loginfo("ROS Serial Python Node")
00050
00051 port_name = rospy.get_param('~port','/dev/ttyUSB0')
00052 baud = int(rospy.get_param('~baud','57600'))
00053
00054
00055
00056 fix_pyserial_for_test = rospy.get_param('~fix_pyserial_for_test', False)
00057
00058
00059 tcp_portnum = int(rospy.get_param('/rosserial_embeddedlinux/tcp_port', '11411'))
00060 fork_server = rospy.get_param('/rosserial_embeddedlinux/fork_server', False)
00061
00062
00063 sys.argv = rospy.myargv(argv=sys.argv)
00064 if len(sys.argv) >= 2 :
00065 port_name = sys.argv[1]
00066 if len(sys.argv) == 3 :
00067 tcp_portnum = int(sys.argv[2])
00068
00069 if port_name == "tcp" :
00070 server = RosSerialServer(tcp_portnum, fork_server)
00071 rospy.loginfo("Waiting for socket connections on port %d" % tcp_portnum)
00072 try:
00073 server.listen()
00074 except KeyboardInterrupt:
00075 rospy.loginfo("got keyboard interrupt")
00076 finally:
00077 rospy.loginfo("Shutting down")
00078 for process in multiprocessing.active_children():
00079 rospy.loginfo("Shutting down process %r", process)
00080 process.terminate()
00081 process.join()
00082 rospy.loginfo("All done")
00083
00084 else :
00085 while not rospy.is_shutdown():
00086 rospy.loginfo("Connecting to %s at %d baud" % (port_name,baud) )
00087 try:
00088 client = SerialClient(port_name, baud, fix_pyserial_for_test=fix_pyserial_for_test)
00089 client.run()
00090 except KeyboardInterrupt:
00091 break
00092 except SerialException:
00093 sleep(1.0)
00094 continue
00095 except OSError:
00096 sleep(1.0)
00097 continue
00098