利用python发出rs232信号

发布时间:2019-07-31 09:38:42编辑:auto阅读(3052)

    最近接的一个项目涉及到用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之间电压,此时电压为零。

关键字