gocomma r9设备控制的异步模块

pygocomma的Python项目详细描述


pygocomma

使用Asyncio(单线程事件循环)使用Python3控制GOComma R9设备。 使用你需要的设备ID和密钥的库。您可以使用任何those方法获取它们。

用法

importsysimportloggingfrompygocomma.r9importR9importasyncioimportbinasciifrompygocommaimport_LOGGERasyncdeftestFake(n):foriinrange(n):_LOGGER.debug("Counter is %d",i)awaitasyncio.sleep(1)asyncdefping_test(*args):a=R9((args[2],DEFAULT_PORT),args[3],args[4])rv=awaita.ping()ifrv:_LOGGER.info("Ping OK %s",binascii.hexlify(rv))else:_LOGGER.warning("Ping failed")awaita.destroy_connection()asyncdefask_last_test(*args):a=R9((args[2],DEFAULT_PORT),args[3],args[4])rv=awaita.ask_last()ifrv:_LOGGER.info("Ask last OK %s",rv)else:_LOGGER.warning("Ask last failed")awaita.destroy_connection()asyncdefdiscovery_test(*args):rv=awaitR9.discovery(int(args[2]))ifrv:_LOGGER.info("Discovery OK %s",rv)else:_LOGGER.warning("Discovery failed")asyncdefemit_test(*args):importremo=re.search('^[a-fA-F0-9]+$',args[5])ifmo:payload=binascii.unhexlify(args[5])else:payload=b64decode(args[5])a=R9((args[2],DEFAULT_PORT),args[3],args[4])rv=awaita.emit_ir(payload)ifrv:_LOGGER.info("Emit OK %s",binascii.hexlify(rv).decode('utf-8'))else:_LOGGER.warning("Emit failed")awaita.destroy_connection()asyncdeflearn_test(*args):a=R9((args[2],DEFAULT_PORT),args[3],args[4])rv=awaita.enter_learning_mode()ifrv:_LOGGER.info("Entered learning mode (%s): please press key",rv)rv=awaita.get_learned_key()ifrv:_LOGGER.info("Obtained %s",binascii.hexlify(rv).decode('utf-8'))else:_LOGGER.warning("No key pressed")rv=awaita.exit_learning_mode()ifrv:_LOGGER.info("Exit OK %s",rv)else:_LOGGER.warning("Exit failed")else:_LOGGER.warning("Enter learning failed")awaita.destroy_connection()_LOGGER.setLevel(logging.DEBUG)handler=logging.StreamHandler(sys.stderr)handler.setLevel(logging.DEBUG)formatter=logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)_LOGGER.addHandler(handler)loop=asyncio.get_event_loop()try:asyncio.ensure_future(testFake(150))ifsys.argv[1]=="learn":loop.run_until_complete(learn_test(*sys.argv))elifsys.argv[1]=="discovery":loop.run_until_complete(discovery_test(*sys.argv))elifsys.argv[1]=="ping":loop.run_until_complete(ping_test(*sys.argv))elifsys.argv[1]=="asklast":loop.run_until_complete(ask_last_test(*sys.argv))elifsys.argv[1]=="pingst":foriinrange(int(sys.argv[5])):loop.run_until_complete(ping_test(*sys.argv))else:loop.run_until_complete(emit_test(*sys.argv))exceptBaseExceptionasex:_LOGGER.error("Test error %s",str(ex))traceback.print_exc()except:_LOGGER.error("Test error")traceback.print_exc()finally:loop.close()

贡献

欢迎拉取请求。

免责声明

在任何方面都不属于gocomma。

相关项目

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

推荐PyPI第三方库


热门话题
java Selenium Web驱动程序。负载策略不稳定   JAVAsql。SQLException:没有合适的驱动程序无法创建“oracle”类的JDBC驱动程序。jdbc。驾驶员用于连接URL的OracleDriver   java谷歌地图“优化路径点”如何解决旅行推销员的问题?   java这段代码可能会造成潜在的内存泄漏吗?   java更改JCombobox的高度   java如何清除jtable中的数据   JavaHadoop:错误安全性。UserGroupInformation:MapReduce程序中的PriviledgedActionException   java如何将sonarlint添加到gradle任务中?   性能为什么Java排序优于原语计数排序   java Spring属性PlaceHolderConfigure从数据库加载   java从泛型获取类不起作用   java Spring@Transactional传播属性   java试图拥有主菜单和子菜单类   XSL的java后处理步骤   java第一个字母和最后一个字母、第二个字母和倒数第二个字母之间的差值之和,依此类推,直到单词的中心   switch语句在Java中的下一个出发点   java 安卓如何在OnBackpress()时设置viewpager的特定项目位置?