S.C.I.L.E.R.客户端库。

scclib的Python项目详细描述


用scclib开发

S.C.I.L.E.R.系统的客户端计算机库

这是一个库,用于创建与SCILER系统协同工作的设备

安装

  • 使用pip install scclib安装pip

使用此库

  • 使用from scclib.device import Device导入lib
创建一个扩展Device
  • 为此:
    • 实现getStatus(),它应该返回当前状态的字典
    • 实现performInstruction(action),它应该返回一个布尔值来判断指令是否可以执行,其中action有:
      • instruction:带有指令名称的字符串
      • value:具有特定于此指令的值的任何类型
      • component_id:带有指令所指组件名称的字符串(可以是未定义的)
    • 实现test()它什么也不返回,这个方法应该做一些可见的事情,这样操作员就可以测试这个设备是否正常工作
    • 实现reset()它不返回任何内容,此方法应使设备返回到其启动状态,以便可以再次启动逃生室
    • 创建一个构造函数,该构造函数使用super(config, logger)调用Device的构造函数,其中:
      • config是一个字典,它有以下键:
        • id:这是设备的标识。写在camelCase中,例如“controlBoard”。在
        • host:代理主机的IP地址,格式为字符串。在
        • port代理主机的端口,格式为数字。在
        • labels:这些是这个设备也应该订阅的标签,labels是一个字符串数组
      • logger是一个函数(日期、级别、消息),其中实现了自己的记录器,其中
        • date是一个日期对象
        • level是以下字符串之一:“debug”、“info”、“warn”、“error”、“fatal”
        • message是一个包含更多信息的自定义字符串
      • 它还应该为所有输入组件向GPIO添加事件侦听器。在
    • 实现main(),它应该使用可选的事件循环和结束函数调用start(loop, stop)。在
现在在实现Device
的类中
  • 您可以拨打:
    • log(level, message)使用Device中提供的记录器进行日志记录,其中级别为以下字符串之一:“debug”、“info”、“warn”、“error”、“fatal”和包含详细信息的消息自定义字符串
    • statusChanged()它可以被调用来向Device发出状态改变的信号,这将向SCILER发送一个新的状态
现在启动系统
  • 在主程序中初始化设备并调用device.main()

示例

importosfromscclib.deviceimportDeviceclassDisplay(Device):def__init__(self):two_up=os.path.abspath(os.path.join(__file__,".."))rel_path="display_config.json"abs_file_path=os.path.join(two_up,rel_path)abs_file_path=os.path.abspath(os.path.realpath(abs_file_path))config=open(file=abs_file_path)super().__init__(config)self.hint=""defget_status(self):return{"hint":self.hint}defperform_instruction(self,action):instruction=action.get("instruction")ifinstruction=="hint":self.show_hint(action)else:returnFalse,actionreturnTrue,Nonedeftest(self):self.hint="test"print(self.hint)self.status_changed()defshow_hint(self,data):self.hint=data.get("value")print(self.hint)self.status_changed()defreset(self):self.hint=""self.status_changed()defmain(self):self.start()if__name__=="__main__":device=Display()device.main()

其中display_config.json

^{pr2}$

具有循环和停止的main()示例:

defloop(self):previous=self.get_sliders_analog_reading()whileTrue:positions=self.get_sliders_analog_reading()ifprevious!=positions:self.status_changed()previous=positionsdefmain(self):self.setup_events()self.start(loop=self.loop,stop=GPIO.cleanup)

许可证

这个库是用GNU GPLv3授权的,请参阅LICENSE.md。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Cassandra docker无法通过JMX连接   java以编程方式在图片模式下启用图片   java访问json数组中的json数组   swing Java 2D API:空指针异常   java Storm 2.0.0内存不足   java为什么Splitter在Spring Integration中处理集合项时直接返回集合?   java Spring启动到Postgres数据库驱动程序问题   java如何将对象围绕其中心旋转90度?   无法返回变量。“java:找不到变量”   通过BigInteger进行Java基转换   在Java中获取日期格式   java构建具有依赖关系的jar并将其绑定到tar中。gz使用maven组装   java为什么Guice在main中从UncaughtExceptionHandler抛出$ComputeException?   spring升级到Java7时有哪些陷阱   java从JTable向数组获取值   java Android在启动新活动时会杀死多个以前的活动   postgresql是否可以在批处理过程中运行java命令?   安卓使用Java代码创建文件上传请求   java一些元素神奇地没有从ArrayList中删除