Python 使串行输出可供其他脚本访问

标签 python python-3.x xml-rpc pyserial

我目前有一个从串行设备获取提要的脚本。

feed.py

from serial import Serial
ser = Serial('COM27', 9600, timeout=5)

def scrape():
    while True:
        raw = ser.readline()
        raw = raw.decode('utf-8')
        if raw == "":
            pass
        else:
            print(raw)
    #print (raw.decode('utf-8'))
scrape()

我现在想做的是从其他 python 脚本访问该提要。 我确实尝试使用 SimpleXMLRPCServer 但无法获得输出

feed.py

from serial import Serial
from xmlrpc.server import SimpleXMLRPCServer
ser = Serial('COM27', 9600, timeout=5)

def scrape():
    while True:
        raw = ser.readline()
        raw = raw.decode('utf-8')
        if raw == "":
            pass
        else:
            print(raw)
try:
    server = SimpleXMLRPCServer(("localhost", 8000), allow_none=True)
    server.register_function(scrape)
    server.serve_forever()

except Exception as e:
    print(e)

监听器.py

import xmlrpc.client

feed = xmlrpc.client.ServerProxy('http://localhost:8000')

print(feed.scrape())

我没有从监听器脚本中得到任何输出

最佳答案

当一个函数被注册时,预计该函数会返回一个信息,而不仅仅是打印它,所以这就是逻辑失败的原因。

在这种情况下,最好注册 Serial 对象:

feed.py

from serial import Serial
from xmlrpc.server import SimpleXMLRPCServer

ser = Serial("COM27", 9600, timeout=5)

try:
    server = SimpleXMLRPCServer(("localhost", 8000), allow_none=True)
    server.register_instance(ser)
    server.serve_forever()

except Exception as e:
    print(e)

listener.py

import xmlrpc.client

ser = xmlrpc.client.ServerProxy("http://localhost:8000")

while True:
    raw = ser.readline()
    if raw:
        print(raw)

关于Python 使串行输出可供其他脚本访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57447597/

相关文章:

python - 3.4 枚举应该使用 UPPER_CASE_WITH_UNDERSCORES 吗?

ruby - Magento - 在单个 XML-RPC 调用中获取多个产品的详细信息

python - 有没有办法检查数据框中的尾列?

python - 列表小部件项数据对象上的槽从未被调用(在 PyQt 5.7 中)

Python警告我或阻止我使用全局变量

python - 多维Newton Raphson的同时优化/时间复杂度

python - 纺车功能并不总是退出

python - 属性错误: 'generator' object has no attribute 'connect' Pydle,异步

c# - XMLRPC c# 客户端到 python 客户端 - 方法不存在

java - 从 YANG 数据模型生成 XML RPC NETCONF 请求的标准方法是什么