- 浏览: 271488 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
f002489:
我用Python爬了4400条淘宝商品数据,竟发现了这些“潜规 ...
爬取千万淘宝商品的python脚本 -
f002489:
java职业分析与技能图谱
java职业发展所应具有的技能。 学习路线图 -
f002489:
C#调用C++类库的几种方式C#委托实现C++ Dll中的回调 ...
C#中直接操作内存的方法 -
f002489:
如何测量C#代码的运行时间 :(1)用Datatime和Tme ...
C#中直接操作内存的方法 -
f002489:
使用c语言调用python小结
Python与C/C++相互调用
http://wiki.woodpecker.org.cn/moin/PySerial
http://www.ej38.com/showinfo/Python-147052.html
http://hi.baidu.com/258qq/blog/item/b82e10954e70060e7bf4805e.html
1.1. 线程轮寻
-- 分享
就是打开串口后,启动一个线程来监听串口数据的进入,有数据时,就做数据的处理(也可以发送一个事件,并携带接收到的数据)。
#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\n');
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\n %s\r\n' % 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\n');
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\n');
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\n');
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\n %s\r\n' % 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\n');
if not self.log is None:
self.log.info(u'开始接收数据');
self.output.WriteText(u'===================================\r\n');
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\n' % 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;
2. 反馈
ghostwwl -- 补充一点点 那个串口的pyserial模块到
http://sourceforge.net/project/showfiles.php?group_id=46487 or
http://sourceforge.net/projects/pyserial/files/去下 不然会no model named .....
Border -- 从 http://pyserial.cvs.sourceforge.net/pyserial/pyserial/ 得到些例子。
发表评论
-
爬取千万淘宝商品的python脚本
2018-03-26 12:09 874importtime import leveldb fro ... -
Python与C/C++相互调用
2017-10-23 11:45 796Python实例浅谈之三Python与C/C++相互调用 -
教你阅读Python开源项目代码
2017-02-24 16:28 886教你阅读Python开源项目代码 https://zhuanl ... -
python执行shell命令的四种方法
2016-12-28 22:36 1036#!/usr/bin/env python # -* ... -
Python 多进程应用示例
2016-12-06 00:01 506python中threading模块详解(一) http:/ ... -
Python多线程应用示例
2016-12-06 00:02 639import threading commonlist=r ... -
Python 字符串操作方法大全
2016-12-05 23:11 413http://www.jb51.net/article/479 ... -
python字符串连接的N种方式总结
2016-12-05 23:05 602python中有很多字符串连接方式,今天在写代码,顺便总结一下 ... -
Python常见格式化字符串方法小结【百分号与format方法】
2016-12-05 23:05 1368【方式一】百分号(%)方式,类C的printf,需要分别不 ... -
python 遍历文件夹 目录 文件
2016-12-03 17:26 1045http://www.cnblogs.com/kaituore ... -
人民币小写转大写程序,支持到万亿
2011-04-26 14:45 1692# -*- coding: gbk -*- #-------- ... -
用python正则表达式提取网页的url
2011-04-22 10:40 1593http://edu.codepub.com/2010/042 ... -
python中的三个读read(),readline()和readlines()
2011-04-21 18:07 17518我们谈到“文本处理”时,我们通常是指处理的内容。Pytho ... -
Python运算符重载__类常用的内置方法
2011-04-18 10:06 2423http://xukaizijian.blog.1 ... -
python对文件及文件夹的一些操作
2011-04-13 15:46 1805http://www.cnblogs.com/phoebus0 ... -
使用xlrd模块时对Excel
2011-04-13 15:44 0import xlrd def getExcelData(f ... -
Python异常处理
2011-04-13 15:34 1753http://www.cnblogs.com/phoebus0 ... -
使用xlrd模块时对Excel的日期处理
2011-04-02 11:54 2890http://blog.donews.com/limodou/ ... -
一个Python程序员的进化
2011-03-28 22:46 954http://developer.51cto.com/art/ ... -
年度黑马Python 自省指南(1)
2011-03-28 22:44 1301http://developer.51cto.com/art/ ...
相关推荐
用户界面通常包括串口选择控件、波特率设置、数据位、停止位以及校验位等配置选项,这些参数可以根据不同的串口设备和通信协议进行调整。此外,还会包含发送和接收区域,以便实时查看和分析通信数据。 串口调试助手...
本项目“python串口接收源码可以实时绘图”结合了这两个工具,旨在实现串口数据接收并实时可视化显示。 项目的核心是通过Python的`pyserial`库来处理串口通信。`pyserial`库提供了一系列API,使得开发者可以方便地...
下面我们将详细探讨Python串口通信的基本概念、常用库以及如何实现串口收发。 1. **Python串口通信基础** Python中的串口通信主要依赖于第三方库`pyserial`。`pyserial`提供了丰富的API来操作串口,包括打开、关闭...
这个“python串口源代码”很可能是为了演示如何在Python中实现串口通信而编写的。下面将详细介绍Python中进行串口操作的基本概念和关键知识点。 1. **pySerial库**: Python中处理串口通信的主要库是`pySerial`,...
7. **自定义修改**:由于每个串口通信的应用场景都有其独特性,Python串口助手的源码往往允许用户根据实际需求进行修改,例如添加特定的协议解析、数据加密解密功能等。 通过了解和掌握以上知识点,你将能够有效地...
Python串口升级工具是一种利用Python编程语言开发的实用程序,专为设备的固件更新而设计。这个工具具有用户界面(UI),使得操作更加直观和便捷。它允许用户选择要应用的升级文件,指定版本号,并能清晰地展示升级...
Python串口工具是一种基于Python语言开发的用于串行通信的应用程序。这个工具具有源码以及编译后的.exe可执行文件,方便在不安装Python环境的Windows系统上直接运行。通过这个工具,用户可以进行串口数据的收发,...
Python串口日志小工具是一种基于Python编程语言开发的实用程序,主要用于与硬件设备通过串行接口进行通信,实现数据的收发以及日志记录功能。在嵌入式系统、物联网(IoT)项目或者需要与外部设备进行交互的场景中,...
通过这样的组合,开发者可以创建出一个功能完善的串口通信上位机应用,用户可以通过简单的操作控制和监控与串口设备的数据交换。对于初学者来说,这个项目提供了一个很好的实践机会,了解如何将Python与GUI库和硬件...
Python串口测试工具是一款强大的应用程序,它允许用户在多种操作系统平台上进行串行通信的测试和调试,包括Windows、macOS和Linux。这个工具的核心是利用Python语言的强大功能,特别是其跨平台的特性,使得开发者...
这个工具可以帮助工程师和开发者在进行硬件测试、数据采集或者控制系统设计时,方便地监控串口设备输出的数据。 首先,我们要了解Python中的串口通信。Python有许多库可以实现串口通信,例如`pyserial`,它是Python...
Python作为一种高级编程语言,凭借其丰富的库支持和易用性,在串口通信方面有着广泛的应用。本文将详细介绍如何利用Python进行串口读写操作,并通过一个简单的示例来演示具体的实现步骤。 #### 1. 安装pyserial库 ...
1. **Python串口通信**:Python提供了`pyserial`库来处理串口通信。通过创建`Serial`对象,设置波特率、校验位、数据位和停止位等参数,可以打开串口并与连接的设备进行数据交换。例如,`ser = serial.Serial(port='...
通过这个串口工具,用户可以轻松地与各种串口设备交互,例如Arduino、ESP8266等微控制器,进行数据传输、设备调试等工作。它不仅是一个实用的工具,也是学习Python GUI编程和串口通信的绝佳实例。学习和理解这个项目...
### Python串口编程知识点详解 #### 一、Python串口编程概述 串口通信是一种常见的数据传输方式,广泛应用于各种设备之间的小规模数据...通过这些示例,可以帮助读者快速上手Python串口编程,并应用于实际项目中。
总的来说,这个"python3+qt4+pyserial 串口调试助手 串口波形显示"项目结合了Python3的编程能力,Qt4的界面设计,以及pyserial的串口通信功能,提供了一个实用的工具,帮助开发者和工程师更高效地进行串口设备的调试...
"Python实现的串口工具"就是这样一个应用实例,它允许开发者调试和测试与串口连接的硬件设备。 串口通信是计算机通信的一种方式,广泛应用于嵌入式系统、工业设备以及一些DIY项目中。通过串口,设备间可以传输数据...
在“python串口上传文本”这个场景下,我们主要关注如何将一个TXT文本文件通过串口发送到指定设备。描述中提到的例子是使用COM1口来上传名为“test.txt”的文本文件。在Python中,你可以这样实现: ```python ...