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

2024-09-27 21:32:12 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是这个项目的一些背景知识。我正在尝试编写一个脚本,它将在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()

Tags: 文件内存代码脚本机器portserialpi
1条回答
网友
1楼 · 发布于 2024-09-27 21:32:12

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

@reboot  python /path/to/script.py

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

2)将上面的脚本放入while循环中,这样它就会运行,然后再次启动

相关问题 更多 >

    热门问题