Python 脚本找不到 ttyACM0 串行端口

Python 脚本找不到 ttyACM0 串行端口

我有一个 Arduino Mega 2560 发送数据,我的环境是 Ubuntu 14.04,它是一个 python ROS 节点。

问题是,当我使用 Arduino IDE 中的串行监视器或绘图仪查看数据时,它运行良好,但是当我运行我的 python 脚本时,它出错了,这是我的 python 脚本:

import serial
import roslib; roslib.load_manifest('robot_skin')
import rospy
from robot_skin.msg import FloatArray


def setup_serial(dev_name, baudrate):
try:
    serial_dev = serial.Serial(dev_name, timeout=1)
    if(serial_dev == None):
        raise RuntimeError("robotis_servo: Serial port not found!\n")

    serial_dev.setBaudrate(baudrate)
    serial_dev.setParity('N')
    serial_dev.setStopbits(1)
    serial_dev.open()

    serial_dev.flushOutput()
    serial_dev.flushInput()
    return serial_dev

except (serial.serialutil.SerialException), e:
    raise RuntimeError("robotis_servo: Serial port not found!\n")

def get_adc_data(serial_dev, num_adc_inputs):
    ln = serial_dev.readline()
    l = map(int, ln.split(','))
    if len(l) != num_adc_inputs:
        rospy.logwarn('Something fishy with the serial port.')
        serial_dev.flush()
        l = get_adc_data(serial_dev, num_adc_inputs)
    return l


if __name__ == '__main__':

dev_name = '/dev/ttyACM0'

baudrate = 115200

serial_dev = setup_serial(dev_name, baudrate)

pub = rospy.Publisher('/arduino/ADC', FloatArray)
rospy.init_node('adc_publisher_node')

for i in range(10):
    ln = serial_dev.readline()

rospy.loginfo('Started publishing ADC data')

while not rospy.is_shutdown():
    fa = FloatArray()
    fa.header.stamp = rospy.Time.now()
    fa.data = get_adc_data(serial_dev, 6)
    pub.publish(fa)

serial_dev.close()

当我运行这个时,它会转到 serial_dev == NONE,出现错误。

我用 Google 搜索了很长时间来解决这个问题,我做了两处更改,但仍然不起作用:

  1. 我使用 Arduino IDE 中的串行监视器和绘图仪进行以下操作:sudo chmod a+rw /dev/ttyACM0

  2. 我将自己添加到了拨号组使用sudo adduser $USER dialout

但仍然有同样的错误......

谢谢。

相关内容