注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风雨启示录

欢迎光临我的网店优优我心:http://uumyheart.taobao.com

 
 
 

日志

 
 

python读写串口经验分享  

2009-11-02 10:53:05|  分类: python学习笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一直想写了,但是没时间,过去的一个多月一直在和串口打交道。废话不多说,说说我的python是怎么样读写串口的吧。
一、读串口
由于需要 ,我的程序要不停的读写串口,因此,程序开始就要创建个串口线程。
class COMThread(threading.Thread):
    def __init__(self, name = 'COMThread'):  #初始化线程       
        threading.Thread.__init__(self, name = name)
        self._stopevent = threading.Event()
        self._sleepperiod = 1.0
        #将串口定义为”com1,比特率为19200,超时0.4秒“
        #edited by LIHF 090831, 参数10表示COM11
        self.ser = serial.Serial( well_config.com_config[0], well_config.com_config[1], timeout = well_config.com_config[2])       
        if self.ser is None:
            print '无法打开串口'
        self.parser = None       

    def run(self):       
        global flag_zhuan
        m = 0
        print "%s starts" % (self.getName())
        while not self._stopevent.isSet():
            try:
                x = self.ser.read(1)
            except serial.SerialException:
                print 'serial.SerialException ERROR'
                print traceback.format_exc()
                continue
            if len(x) > 0:             #接收到数据
               ************#数据解析部分省略
        self.ser.close()  #串口关闭
        print "%s ends" % (self.getName())

    #关闭串口线程
    def join(self, timeout = None):
        """ Stop the thread. """
        self._stopevent.set()
        print "COMThread.join()"
        threading.Thread.join(self, timeout)
注意:在定义串口对象的时候,timeout的意思是:
x = self.ser.read(1)       #超时时间到,执行下一条语句,如果不设置timeout,读不到数据,程序将死在这个地方。
self._stopevent.set()是用来结束run函数中的while循环的,方便结束线程,否则,程序退出时,线程没退出,可能会提示出错。

二、写串口
com_thread.ser.write(cmd)  #串口发送命令
cmd一般都是ASCII码,需要经过chr或者“%c”命令的转化
比如说串口发送: 03 03 00 00 04命令
cmd  = "%c" * 5 % (0x03, 0x03, 0, 0, 0x04)
python写串口还是很简单的,基本就是一句话搞定。


  评论这张
 
阅读(9224)| 评论(4)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017