使用Python等待特定串口输入后发送串口输出
这个项目的背景是这样的。我想写一个脚本,让它在树莓派启动时自动运行,并且只要树莓派开着,它就一直运行。这个脚本需要通过rs232端口输出一个文本文件,但只有在接收到来自数控机床的chr17(ASCII码)时才会输出。chr17我认为也是软件流控制的xon代码。
所以,当机器请求输入时,树莓派就会输出脚本指定的文件内容。当机器发出请求时,它会输出chr17。而当输出完文件的最后一行时,它会输出chr18来表示结束。
关于树莓派的内存,我不太清楚执行这个脚本的最有效方法,我觉得使用while循环可能会占用太多内存。不过我也不太确定。
如果有人能帮我写这个脚本,我会非常感激。
目前这个代码在机器请求输入后执行是有效的。但我需要它能够持续运行,然后一旦看到机器请求输入,就应该输出文件。
这是我现在的代码,如果你觉得有需要修改的地方,随意改动,或者如果不太有用的话可以完全从头开始,哈哈。
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
1) 把脚本放到定时任务(crontab)里,设置成在系统启动时自动运行:
@reboot python /path/to/script.py
http://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/
2) 把上面的脚本放进一个 while
循环里,这样它就会运行完后再重新开始。