使用Python串口

jackxiang 2010-10-7 11:29 | |
Python打开串口的代码:
http://lvxinwei.sinaapp.com/1045.html
下载地址:http://sourceforge.net/projects/pyserial/files/

直接下载地址:
http://downloads.sourceforge.net/project/pyserial/pyserial/2.5/pyserial-2.5.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpyserial%2Ffiles%2Fpyserial%2F2.5%2F&ts=1344675974&use_mirror=nchc
安装方法:
python setup.py install
easy_install pyserial
是否安装成功:
import serial

ghostwwl -- 补充一点点 那个串口的pyserial模块到http://sourceforge.net/project/showfiles.php?group_id=46487去下 不然会no model named .....
Border -- 从 http://pyserial.cvs.sourceforge.net/pyserial/pyserial/ 得到些例子。

Python 串口设备应用,多线程:http://www.cnblogs.com/dainiao01/archive/2010/09/15/2250195.html

关于python 向串口发送命令(16进制)

import serial_port
port = serial_port.create('COM1', 9600, 8, 'none', 1, 0)

port.write('\x02\x00\x00\x00\x00\x02')


很神奇 ^ ^,串口终端程序 = vte + serial,实际上就是重写了vte的commit信号响应函数,再把串口的输入输出到vte上...



#!/usr/bin/env python
import gtk
import vte
from serial import Serial
import gobject
    
def WriteSerial(self, data, size):
    if ser.isOpen(): ser.write(data)
def ReadSerial(dev, conf):
    data = ser.read(1024)
    if not data:
        print "not data"
    v.feed(data)
    return True

if __name__ == '__main__':
    global ser
    ser = Serial(port='/dev/ttyUSB0', baudrate=115200)
    ser.setTimeout(0)
    v = vte.Terminal ()
    v.connect ("child-exited", lambda term: gtk.main_quit())
    v.connect("commit", WriteSerial)
    gobject.io_add_watch(ser, gobject.IO_IN, ReadSerial)
    window = gtk.Window()
    window.add(v)
    window.connect('delete-event', lambda window, event: gtk.main_quit())
    window.show_all()
    gtk.main()




这段代码发送的16进制是以ASCII码发送的还是UNICODE码发送的??

如果是前一种,那么后一种方式应该怎么实现?



如果你在Python实际应用的过程中仍然不清楚Python串口是如何使用时,你可以参考以下的文章对Python串口的使用有一个正确的了解,以下就是文章的相关内容的介绍,望你会有所收获。

为了使用Python串口,首先需要下载相关模块:


1. pyserial   2. pywin32 (http://sourceforge.net/projects/pywin32/)  

google “Python串口 操作”关键字,找到相关python代码,发送数据可用chr和pack组装处理,如:


snd = '' snd += chr(97)  data = 0x12345678 snd += pack.('i', data)  snd += chr(0x64)  self.l_serial.write(snd);  
#发送的数据是(16进制):61 78 56 34 12 64接收的数据用ord函数,将字节内容变为整数,进行判断处理。如:

if ord(recv[2])== 0x01:  
判断recv[2]是否是0x01.注意:不能这样比较


if recv[2] == 'a':  pass  
也不能这样比较


if recv[2] == 0x97:  pass  

以上的文章就是对Python串口 的使用的部分介绍。

参考:http://blog.csdn.net/asmc51/article/details/3068950

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/3611/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-1-29 23:22
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]