您好,欢迎访问三七文档
在上下载最新的windows版的安装包,然后装到python的目录下面,我装到了2.5的下面。打开一个pythonshellimportserial导入模块然后就可以用了ser=serial.Serial(0)是打开第一个串口printser.portstr能看到第一个串口的标识,windows下是COM1ser.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.baudrate=9600设置波特率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);同样可以达到相同目的。那么,串口方面的就整理完了
本文标题:python串口
链接地址:https://www.777doc.com/doc-4890798 .html