最近接的一个项目涉及到用PC机的usb口收发rs232信号。为此,我写了一个简单的python程序,向usb口发送信号,然后通过一个usb转232线缆将信号转为rs232的。最后用万用表检查rs232端有无输出。
硬件:一个usb转rs232的线缆、一块面包板、若干杜邦线、万用表
软件:从http://rj.baidu.com/soft/detail/25282.html?ald下载python2.7;下载pyserial-2.6(忘记从 哪里下载pyserial了,可以在我的上传资源里找)
步骤:
1)从http://rj.baidu.com/soft/detail/25282.html?ald下载exe文件,双击之,自动开始安装python2.7;
2)安装完后,从我的资源里下载pyserial,并解压。我把它放在F:\programming\python\pyserial-2.6\
3)启动python IDLE,
4)安装pyserial,步骤如下:
>>import sys, os
>>os.chdir("F:\programming\python\pyserial-2.6")
>>print os.getcwd()
>>import setup.py
>>execfile('setup.py')
假如执行命令后,IDLE没有弹出任何红色告警,就说明pyserial正确安装了
注意:以后每次载入serial模块,都要先把当前路径设为os.chdir("F:\programming\python\pyserial-2.6")。
5)将USB线的usb端插入PC
6)假如是第一次使用usb线,PC机会自动安装它的驱动。这个过程可能比较长,达到十几分钟
7)安装完成后,PC的设备管理器会显示出usb线对应的端口号。在我的计算机上是COM15
8)回到python IDLE,载入pyserial
>>import serial
9)此时可以将rs232这端的信号引出来。我的线缆的232端是母口
9针母口的排列如下:
有的网站http://blog.sina.com.cn/s/blog_72dba9a2010197yh.html说,端口的左右排列是反的。这是因为该网站展示的是公头。两者并不矛盾。
在我的线缆里,5口代表信号地。2口代表信号发射端。
10)打开端口:
>>ser = serial.Serial("COM15", 9600)
11)令端口持续发射acsii字符'a'
>>while True:
s = 'a'
ser.write(s)
12)用万用表测量2口和5口之间电压,显示电压约为-8伏,说明python可以控制usb口的发射。按理说,应该用示波器观察发射的信号。但是我没有示波器,只能将就。在日后的博客中,我会给出更有说服力的观察办法。
13)ctrl+c,终止发射。然后在IDLE输入
>>ser.close()
14)再次测量2-5之间电压,此时电压为零。