基于Python的串口通信
1Pyserial
1.1安装pyserial
1.1.1source安装
(1)
下载pySerial
①
2.6版本:
②
2.7版本
③
最新版本(目前为3.1版本):
(2)
解压
①
命令解压
cd /xxx/xxx/pyserial-2.6.tar.gz(以2.6版本为例,切换到相关文件所在目录)
tar zxvf pyserial-2.6.tar.gz
②
手动解压(Mac下像.zip类的格式一般会在Safari下载完成后自动解压)
(3)
安装serial
module
cd /xxx/xxx/pyserial-2.6(切换到解压后的文件所在目录)
sudo python setup.py install(加sudo以避免权限问题:”Permission denied...”)
1.1.2pip安装
(1)
方法一:
sudo pip install pyserial
注:上图中之所以写成pip2是因为系统里除了自带的Python2外,还装了Python3(pip3为默认pip),而安装是在Python2环境下进行的。
(2)
方法二:
sudo apt-get install -y python-pip
sudo pip install -y pySerial
1.2serial通信测试
在Terminal中进行如下测试:
Last login: Mon Aug 8 09:23:28 on ttys000
FUCK:~ Weiding$ ls /dev/tty.usb*
/dev/tty.usbmodem1431
FUCK:~ Weiding$ python -m serial.tools.list_ports
/dev/cu.Bluetooth-Incoming-Port
/dev/cu.Bluetooth-Modem
/dev/cu.usbmodem1431
3 ports found
FUCK:~ Weiding$ python
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> ser = serial.Serial('/dev/tty.usbmodem1431',115200,timeout=0.5)
# Windows下只是端口名不同(COMX):ser = serial.Serial("COM6", 115200)
>>> ser
Serial(port='/dev/tty.usbmodem1431', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0.5, xonxoff=False, rtscts=False, dsrdtr=False)
>>> ser.isOpen()
True
>>> ser.write('A')
1
>>> ser.read()
''
>>> ser.inWaiting()
0
>>> ser.write('[FSN]')
5
>>> ser.inWaiting()
23
>>> ser.read()
'<'
>>> ser.inWaiting()
22
>>> ser.read(22)
'fsn-DLC51520U1PG2DVAL>'
>>> ser.inWaiting()
0
>>> ser.close()
>>> ser
Serial(port='/dev/tty.usbmodem1431', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0.5, xonxoff=False, rtscts=False, dsrdtr=False)
>>>