欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 口号 > python串口号

python串口号

时间:2017-10-06 20:46

python如何获取串口前面的名称

1、安装串口库2、采用默认通信参数import serialt = serial.Serial('com1',9600)n = t.write('you are my world')print t.portstrprint nstr = t.read(n)print str3、可以自己设置参数import timeimport serialser = serial.Serial( #下面这些参数根据情况修改 port='COM1', baudrate=9600, parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_TWO, bytesize=serial.SEVENBITS)data = ''while ser.inWaiting() > 0: data += ser.read(1)if data != '': print data注意:Python与多个串口通信的时候,要确定端口号。

如果有时间的话,可以自己写一个查询所有端口的信息,不想这么麻烦的话,下载个串口助手,自己看端口信息,在py文件中修改serial.Serial()里面的端口号。

如何用python实现串口通信

使用pyserial库,是最简单的import serialser = serial.Serial() # open 'COM1', baudrate=9600, etcser.write('string out')ser.read(1) # read 1 byte from COM port# ...ser.close()

串口发送16进制1234,用python接收的是'\\\\x01\\\\x01\\\\x03\\\\x04'但用python再怎么转换成原来的数据1234呢

我用的是“线程轮寻”方式。

就是打开串口后,启动一个线程来监听串口数据的进入,有数据时,就做数据的处理(也可以发送一个事件,并携带接收到的数据)。

我没有用到串口处理太深的东西。

客户的原程序不能给你,不过我给你改一下吧。

里面的一些东西,已经经过了处理,要运行,可能你要自己改一下,把没有用的东西去掉。

我这里已经没有串口设备了,不能调了,你自己处理一下吧,不过基本的东西已经有了。

================================================================= #coding=gb18030 import sys,threading,time; import serial; import binascii,encodings; import re; import socket; class ReadThread: def __init__(self, Output=None, Port=0, Log=None, i_FirstMethod=True): self.l_serial = None; self.alive = False; self.waitEnd = None; self.bFirstMethod = i_FirstMethod; self.sendport = ''; self.log = Log; self.output = Output; self.port = Port; self.re_num = None; def waiting(self): if not self.waitEnd is None: self.waitEnd.wait(); def SetStopEvent(self): if not self.waitEnd is None: self.waitEnd.set(); self.alive = False; self.stop(); def start(self): self.l_serial = serial.Serial(); self.l_serial.port = self.port; self.l_serial.baudrate = 9600; self.l_serial.timeout = 2; self.re_num = re.compile('\\\\d'); try: if not self.output is None: self.output.WriteText(u'打开通讯端口\\\\r\\\ '); if not self.log is None: self.log.info(u'打开通讯端口'); self.l_serial.open(); except Exception, ex: if self.l_serial.isOpen(): self.l_serial.close(); self.l_serial = None; if not self.output is None: self.output.WriteText(u'出错:\\\\r\\\ %s\\\\r\\\ ' % ex); if not self.log is None: self.log.error(u'%s' % ex); return False; if self.l_serial.isOpen(): if not self.output is None: self.output.WriteText(u'创建接收任务\\\\r\\\ '); if not self.log is None: self.log.info(u'创建接收任务'); self.waitEnd = threading.Event(); self.alive = True; self.thread_read = None; self.thread_read = threading.Thread(target=self.FirstReader); self.thread_read.setDaemon(1); self.thread_read.start(); return True; else: if not self.output is None: self.output.WriteText(u'通讯端口未打开\\\\r\\\ '); if not self.log is None: self.log.info(u'通讯端口未打开'); return False; def InitHead(self): #串口的其它的一些处理 try: time.sleep(3); if not self.output is None: self.output.WriteText(u'数据接收任务开始连接网络\\\\r\\\ '); if not self.log is None: self.log.info(u'数据接收任务开始连接网络'); self.l_serial.flushInput(); self.l_serial.write('\\\\x11'); data1 = self.l_serial.read(1024); except ValueError,ex: if not self.output is None: self.output.WriteText(u'出错:\\\\r\\\ %s\\\\r\\\ ' % ex); if not self.log is None: self.log.error(u'%s' % ex); self.SetStopEvent(); return; if not self.output is None: self.output.WriteText(u'开始接收数据\\\\r\\\ '); if not self.log is None: self.log.info(u'开始接收数据'); self.output.WriteText(u'===================================\\\\r\\\ '); def SendData(self, i_msg): lmsg = ''; isOK = False; if isinstance(i_msg, unicode): lmsg = i_msg.encode('gb18030'); else: lmsg = i_msg; try: #发送数据到相应的处理组件 pass except Exception, ex: pass; return isOK; def FirstReader(self): data1 = ''; isQuanJiao = True; isFirstMethod = True; isEnd = True; readCount = 0; saveCount = 0; RepPos = 0; #read Head Infor content self.InitHead(); while self.alive: try: data = ''; n = self.l_serial.inWaiting(); if n: data = data + self.l_serial.read(n); #print binascii.b2a_hex(data), for l in xrange(len(data)): if ord(data[l])==0x8E: isQuanJiao = True; continue; if ord(data[l])==0x8F: isQuanJiao = False; continue; if ord(data[l]) == 0x80 or ord(data[l]) == 0x00: if len(data1)>10: if not self.re_num.search(data1,1) is None: saveCount = saveCount + 1; if RepPos==0: RepPos = self.output.GetInsertionPoint(); self.output.Remove(RepPos,self.output.GetLastPosition()); self.SendData(data1); data1 = ''; continue; except Exception, ex: if not self.log is None: self.log.error(u'%s' % ex); self.waitEnd.set(); self.alive = False; def stop(self): self.alive = False; self.thread_read.join(); if self.l_serial.isOpen(): self.l_serial.close(); if not self.output is None: self.output.WriteText(u'关闭通迅端口:[%d] \\\\r\\\ ' % self.port); if not self.log is None: self.log.info(u'关闭通迅端口:[%d]' % self.port); def printHex(self, s): s1 = binascii.b2a_hex(s); print s1; #测试用部分 if __name__ == '__main__': rt = ReadThread(); f = open(sendport.cfg, r) rt.sendport = f.read() f.close() try: if rt.start(): rt.waiting(); rt.stop(); else: pass; except Exception,se: print str(se); if rt.alive: rt.stop(); print 'End OK .'; del rt;

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片