一、pyserial_1.0(16years ago )

我看最新的pyserial代码发现看不懂~Σ( ° △ °|||)︴,尝试用跑跑看一看效果,debug跟一跟流程的方式来熟悉理解,发现·····特么~转太多弯啦~根本就hold不过来啊!脑容量跟基本功都不够啊!于是想着怎么从侧面来攻破这个堡垒............

然后在网上找学习经验,突然想到这个包当初肯定是有个起点的,起点是容易理解且不复杂的,解决一个单一问题的,就像我自己写框架一样(即先快速做出功能、原型,然后再反复迭代改进)。

然后就在github官网找到了它的各个版本:

各个发行版本

其中最底下三个貌似是有点问题的,比如release0_1和2是并口的文件,last-svn-state是无法运行的,因此从release1_0下手,


文件结构

_init_.py负责实现平台兼容,其实就是在导入这个包的时候根据平台来选择不同的处理类,我的是windows系统因此跑到serialwin32.py文件下去跟踪源码,第一行代码就是

import    win32file   #The base COM port and file IO functions.

win32file是个啥?包文件夹里面并没有这个文件,那么是在在哪导入的呢?

在这之前还得知道pyd是啥文件:(源自:http://proupy.com/news/33

DLL文件动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。打不开,不过可以使用反汇编;

PYD是一种PYTHON动态模块。实质上还是dll文件,只是改了后缀为PYD,pyd:

首先是我们最常见的.py文件。以.py扩展名的文件是源代码文件,由python.exe解释,可在控制台下运行。当然也可以用文本编辑器进

行修改。

接下来介绍的是.pyc文件。以.pyc为扩展名的是python的编译文件。.pyc文件是不能够用文本编辑器之类的进行编辑的,但是同样它的

优点在于.pyc文件的执行速度快于.py文件。至于为什么要有.pyc文件,这个需求太明显了,因为py文件是可以直接看到源码的,如果

你是开发商业软件的话,不可能把源码也泄漏出去吧?所以就需要编译为pyc后,再发布出去。

再接下来介绍的是.pyw文件。很多使用过.pyc文件的同学都知道,.pyc文件执行的时候桌面会出现黑糊糊的窗口,有的时候这是十分难

看的。于是.pyw文件就应运而生了。.pyw文件与.pyc文件本质上没有什么区别,只是.pyw执行的时候不会出现黑窗口。.pyw 格式主要

是被设计来运行开发完成的纯图形界面程序的。 纯图形界面程序的用户不需要看到控制台窗口。值得一提的是,开发纯图形界面程序

的时候,你可以暂时把 .pyw 改成 .py , 以便运行时能调出控制台窗口,看到所有错误信息,方便进行修改。

接下来介绍的是.pyo文件。pyo是优化编译后的程序。 python -O 源文件即可将源程序编译为pyo文件。同样.pyo文件也是不能用文

本编辑器编辑的。

最后介绍的是.pyd文件。.pyd文件并不是使用python编写而成,.pyd文件一般是其他语言编写的python扩展模块。(之前又在网上看到

过有关解释,.pyd文件是用D语言按照一定的格式编写,并处理成二进制文件。那么什么是D语言呢??它是c/c++的综合进化版,不仅

具有二者的全部优点,而且整体性能更佳,但是其抽象程度高。)

扩展模块,一般用C或C++编写,其实可以说是一种更优秀的D语言编写的。

总的来说,pywin32就是在python跟windows系统API之间建立一个桥梁,中间件,可以在python下直接windows编程。而win32file是其中的一个组成部分,因此我们追根究底追到这基本上就可以打住了(知道提供哪些API就行了),因为再往下的话就是windows系统编程了。

假如硬是有人要缺根径,一定要追的话,那估计再往下得到系统驱动层的api,再往下到bsp层的api,再往下到汇编测api,因此其实最底下的思路还不是就这样---封装(例如ATC上层无论你整的多么复杂多么多的api,我再最底层就是一个单片机通过串口交互些数据,因此只要把单片机的功能划分好定义好数据结构及api,以后的高楼大厦都是基于此的,因此懂就好,要跳出来,不求甚解,抓住轮廓,当然前提是我从底层的硬件设计、驱动程序到上位的程序都写过才会有这个理解,假如那些一直写上位机代码的人估计会对底层的运行机制心虚吧~)

http://blog.csdn.net/huiguixian/article/details/6968931

看到网上说的Pywin32可以像VC一样的形式来使用PYTHON开发win32应用,我就下载了个,但是不会使用,有基本的入门教程吗,或者谁给说说,比如说画界面什么的!

Python没有自带访问windows系统API的库的,需要下载第三方库。库的名称叫pywin32,可以从网上直接下载,下载链接:http://sourceforge.net/projects/pywin32/files%2Fpywin32/(下载适合的Python版本)

使用中如果出现ImportError: No module named win32api 或者出现 ImportError: No module named win32con,说明你的库没有安装好。

介绍这个库里面最重要的两个模块:win32api和win32con(也就是说在windows下安装win32all.exe之后会生成一个库,这个库里面就有win32api和win32con以及win32file,分别管不同的部分)

win32api顾名思义,就是用python对win32的本地api进行了封装;win32con个人理解为win32constant,即win32的常量定义。

这里是网上讨论API的一些言论:

首先,API的意思是Application Program Interface,应用程序接口.

实际上,只要是程序,都可以对外提供API,比如你写一个网站.然后对外提供API,任何人都可以通过你提供的API获取到对应的信息.例如你网站中的数据.

win32 API是windows系统提供的API,

.NET 也可以提供API

虽然提供的作用可能会有重合,但是不影响说,其实这是两个不同程序提供的API.

不能因为说windows提供了API,那么.NET就不能提供API了.

而且.NET的API虽然很多是对WINDOWS的封装,但是这样可以避免一个人要学习.NET.还必须要去学习WINDOWS的API.

在读源码的时候可以看到使用了一个:win32file.OVERLAPPED()

windows编程的API

Overlapped I/O是win32的一项技术,你可以要求操作系统为你传送数据,并且在传送完毕时通知你。这项技术使你的程序在I/O进行中仍然能够继续处理事物。Overlapped I/O的基本形式是以ReadFile和WriteFile函数完成的。

WaitCommEvent(handle, overlapped)

Waits for an event to occur for a specified communications device. The set of events that are monitored by this function is contained in the event mask associated with the device handle.


Return Value

The result is a tuple of (rc, mask_val), where rc is zero for success, or the result of calling GetLastError() otherwise.  The mask_val is the

new mask value once the function has returned, but if an Overlapped object is passed, this value will generally be meaningless.  See the

comments for more details.


从pycharm下下载pyserial后其结构如图所示:

结构图

我查看serial文件,发现里面有

稍微一查即可指导核心是serialwin32(win环境下)下的serial类,其继承自serialutil.py下的SerialBase类,同时还使用了win32.py文件,因此问题分解为win32是干什么的?SerialBase负责什么部分?serialutil要干哪些活?serial是如何将这些串起来的?

针对第一个问题:win32是干什么的?

win32下有一些DLL文件,那么DLL是啥?ctypes是啥?

然而动态链接库又是啥?跟静态链接库有啥区别?

ctypes是python的一个外部函数库,提供和C语言兼容的数据类型,可以直接调用动态链接库中的导出函数。

聊聊Python ctypes 模块

浅谈python中使用C/C++:ctypes

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容