简体   繁体   English

如何从PHP或Javascript调用python程序(具有命令行参数)?

[英]How do I call python program (which has command line arguments) from PHP or Javascript?

My Python Program is, 我的Python程序是

from xbee import ZigBee
import serial
import sys

sPort = serial.Serial("/dev/ttyAMA0", 9600)
xbee = ZigBee(sPort)

targStr = sys.argv[1]
data = str(targStr)
print (data)
destAdd = "\x00\x13\xa2\x00\x40\xa9\xcc\xad"
xbee.send("tx",dest_addr_long=destAdd,dest_addr="\xff\fe",data=data)
print ("Sent!")

When I execute this python program on linux shell, it works all great! 当我在linux shell上执行此python程序时,它的效果很好! How do execute this program on certain event from HTML Page (Either using Javascript, AJAX or PHP) ? 如何在HTML页面上的某些事件上执行该程序(使用Javascript,AJAX或PHP)?

You need to embed this code into some Python web server - for example Flask . 您需要将此代码嵌入到某些Python Web服务器中,例如Flask

See example bellow - xbee_test.py (it is very raw, don't use that in production environment): 请参阅示例波纹管-xbee_test.py(这很原始,请不要在生产环境中使用它):

from flask import Flask
app = Flask(__name__)

from xbee import ZigBee
import serial

sPort = serial.Serial("/dev/ttyAMA0", 9600)
xbee = ZigBee(sPort)

@app.route("/<data>")
def index(data):
    destAdd = "\x00\x13\xa2\x00\x40\xa9\xcc\xad"
    xbee.send("tx",dest_addr_long=destAdd,dest_addr="\xff\fe",data=data)
    return "Sent!"

if __name__ == "__main__":
    app.run()

Now, when you run this in Python and hit http //localhost:5000/test_data you get your code executed. 现在,当您在Python中运行此代码并点击http:// localhost:5000 / test_data时,您的代码将被执行。

Embedding this into HTML page as eg AJAX call is from this point on uncomplicated. 从此刻起,将其嵌入HTML页面(例如AJAX调用)就不复杂了。

Here is how to obtain Flask installation and run that: 这是获取Flask安装并运行该方法的方法:

$ pip install Flask
$ python xbee_test.py
 * Running on http://localhost:5000/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM