python2.7_串口通信

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

importserial导入模块然后就可以用了ser=serial.Serial()ser.baudrate=115200#设置波特率COMPORT=3#设置串口号ser.port=COM{}.format(COMPORT)#设置串口号ser.open()#打开串口ser.write(“hello)就是往串口里面写数据ser.close()就是关闭ser表示的串口ser.open()会打开这个串口ser=serial.Serial('COM1',115200)来设置波特率,当然还有专门的函数data=ser.read()可以读一个字符data=ser.read(20)是读20个字符data=ser.readline()是读一行,以/n结束,要是没有/n就一直读,阻塞。data=ser.readlines()和ser.xreadlines()都需要设置超时时间ser来查看当前串口的状态ser.isOpen()看看这个串口是否已经被打开2,十六进制显示十六进制显示的实质是把接收到的字符诸葛转换成其对应的ASCII码,然后将ASCII码值再转换成十六进制数显示出来,这样就可以显示特殊字符了。在这里定义了一个函数,如hexShow(argv),代码如下:[python]viewplaincopyimportserialdefhexShow(argv):result=''hLen=len(argv)foriinxrange(hLen):hvol=ord(argv[i])hhex='%02x'%hvolresult+=hhex+''print'hexShow:',resultt=serial.Serial('com12',9600)printt.portstrstrInput=raw_input('entersomewords:')n=t.write(strInput)printnstr=t.read(n)printstrhexShow(str)===================================================================================================================================3,十六进制发送十六进制发送实质是发送十六进制格式的字符串,如'\xaa','\x0b'。重点在于怎么样把一个字符串转换成十六进制的格式,有两个误区:1)'\x'+'aa'是不可以,涉及到转义符反斜杠2)'\\x'+'aa'和r'\x'+'aa'也不可以,这样的打印结果虽然是\xaa,但赋给变量的值却是'\\xaa'这里用到decode函数,[python]viewplaincopylist='aabbccddee'hexer=list.decode(hex)printhexer需要注意一点,如果字符串list的长度为奇数,则decode会报错,可以按照实际情况,用字符串的切片操作,在字符串的开头或结尾加一个'0'假如在串口助手以十六进制发送字符串abc,那么你在python中则这样操作“self.l_serial.write(”\x61\x62\x63)”当然,还有另外一个方法:[python]viewplaincopystrSerial=abcstrHex=binascii.b2a_hex(strSerial)#printstrHexstrhex=strHex.decode(hex)#printstrhexself.l_serial.write(strhex);同样可以达到相同目的。那么,串口方面的就整理完了2,十六进制显示十六进制显示的实质是把接收到的字符诸葛转换成其对应的ASCII码,然后将ASCII码值再转换成十六进制数显示出来,这样就可以显示特殊字符了。在这里定义了一个函数,如hexShow(argv),代码如下:[python]viewplaincopyimportserialdefhexShow(argv):result=''hLen=len(argv)foriinxrange(hLen):hvol=ord(argv[i])hhex='%02x'%hvolresult+=hhex+''print'hexShow:',resultt=serial.Serial('com12',9600)printt.portstrstrInput=raw_input('entersomewords:')n=t.write(strInput)printnstr=t.read(n)printstrhexShow(str)===================================================================================================================================3,十六进制发送十六进制发送实质是发送十六进制格式的字符串,如'\xaa','\x0b'。重点在于怎么样把一个字符串转换成十六进制的格式,有两个误区:1)'\x'+'aa'是不可以,涉及到转义符反斜杠2)'\\x'+'aa'和r'\x'+'aa'也不可以,这样的打印结果虽然是\xaa,但赋给变量的值却是'\\xaa'这里用到decode函数,[python]viewplaincopylist='aabbccddee'hexer=list.decode(hex)printhexer需要注意一点,如果字符串list的长度为奇数,则decode会报错,可以按照实际情况,用字符串的切片操作,在字符串的开头或结尾加一个'0'假如在串口助手以十六进制发送字符串abc,那么你在python中则这样操作“self.l_serial.write(”\x61\x62\x63)”当然,还有另外一个方法:[python]viewplaincopystrSerial=abcstrHex=binascii.b2a_hex(strSerial)#printstrHexstrhex=strHex.decode(hex)#printstrhexself.l_serial.write(strhex);同样可以达到相同目的。那么,串口方面的就整理完了

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功