在发送串行输出之前使用Python等待特定的串行输入

时间:2014-08-19 19:25:09

标签: python linux serial-port raspberry-pi

这是该项目的一些背景知识。我试图编写一个脚本,它将在树莓派的启动时运行,并且只要pi打开就会持续运行。脚本需要通过rs232端口输出文本文件,但只有当它从cnc机器接收chr17(ascii)时才需要。 chr17也是软件流控制的xon代码我相信。

因此,一旦机器请求输入,raspberry pi将输出脚本指向的任何文件。当机器请求输入时,它输出chr17。当它到达文件的最后一行时,它输出chr18以表示它已完成。

就pi上的内存而言,我不知道执行此脚本的最有效方法,我认为while循环可能会占用pi上太多的内存。我不确定。

如果有人可以帮我提出这个非常感谢的剧本。

截至目前,如果我在机器请求输入后执行此代码,则此代码有效。但我需要它连续运行,然后一看到机器请求输入,就应该输出文件。

这就是我所拥有的,随意修改你需要的东西,或者如果没有帮助就完全重新开始,哈哈。

import serial
port = serial.Serial("/dev/ttyAMA0", baudrate=4800, bytesize=7, parity='E')
machinenumber = "BND-2"
cncfile = "/home/pi/myNAS/myShare/e-matix/Machines/%s/Upload/9937.cnc" % machinenumber

try:
    port.open()
except Exception, e:
print "error opening serial port:" + str(e)
if port.isOpen():
    port.write(open(cncfile, "rb").read())
    print ("worked")
    print (open(cncfile, "rb").read())
else:
    print ("cannot open port")
    time.sleep(5)
port.close()

1 个答案:

答案 0 :(得分:0)

1)将脚本放在crontab中,设置为在启动时启动:

@reboot  python /path/to/script.py

http://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/

2)将上面的脚本放在while循环中,然后再运行