python Console menu
I just finished a demo which is to provide an easy way to control hardware resources of A sample. The communication between PC and A sample is UART. The PC software is written by Python.
Python can implement features very soon and has a rich libraries. I used two libraries, one is console-menu, and another is pyserial.
pip install console-menu
https://pypi.org/project/console-menu/
pip install pyserial
https://pypi.org/project/pyserial/
When startup, a prompt input will display:

Input the COM number what you want. And then the operation window will display.

You can select the menu for future operation, e.g. Alarm,

I attached the source code here for your reference.
from consolemenu import ConsoleMenu
from consolemenu.items import FunctionItem, SubmenuItem, CommandItem
from consolemenu import Screen
import time
import Serial class GPIOOperator(object):
def __init__(self, UART, menu, cmd, text):
self._uart = UART
self._cmd = cmd
self._state = 0
submenu = ConsoleMenu(text, show_exit_option=True)
function_item = FunctionItem("ON", self.OnTrunOnClick, should_exit=False)
submenu.append_item(function_item)
function_item = FunctionItem("OFF", self.OnOnTurnOffClick, should_exit = False)
submenu.append_item(function_item)
submenu_item = SubmenuItem(text, submenu, menu=menu, should_exit = True)
menu.append_item(submenu_item) def _GenData(self):
data = (self._cmd << 4) | (self._stat << 1)
parity = 0
for index in range(0, 8):
if (data & 1 << index):
parity = parity + 1 if (parity % 2 == 0):
data = data | 1;
return data; def OnTrunOnClick(self):
self._stat = 1
data = self._GenData() if (self._uart.isOpen()):
self._uart.write(data) def OnOnTurnOffClick(self):
self._stat = 0
data = self._GenData() if (self._uart.isOpen()):
self._uart.write(data) class GPIOOperators(object):
def __init__(self):
self._menu = ConsoleMenu("FPC 220 firmware == PC Test Software")
self._uart = Serial.UART()
self._CMD_ALARM = 0
self._STR_ALARM = "Alarm"
self._alarm = GPIOOperator(self._uart, self._menu, self._CMD_ALARM, self._STR_ALARM) self._CMD_ALARM_LED = 1
self._STR_ALARM_LED = "Alarm LED"
self._alarm = GPIOOperator(self._uart, self._menu, self._CMD_ALARM_LED, self._STR_ALARM_LED) self._CMD_PATTERN = 2
self._STR_PATTERN = "Pattern"
self._alarm = GPIOOperator(self._uart, self._menu, self._CMD_PATTERN, self._STR_PATTERN) self._CMD_TROUBLE = 3
self._STR_TROUBLE = "Trouble"
self._alarm = GPIOOperator(self._uart, self._menu, self._CMD_TROUBLE, self._STR_TROUBLE) self._CMD_GREEN_LED = 4
self._STR_GREEN_LED = "Green LED"
self._alarm = GPIOOperator(self._uart, self._menu, self._CMD_GREEN_LED, self._STR_GREEN_LED) self._CMD_CLEANME = 5
self._STR_CLEANME = "Clean me"
self._alarm = GPIOOperator(self._uart, self._menu, self._CMD_CLEANME, self._STR_CLEANME) FunctionItem("Input COM", self.OnComInput(), should_exit=False) def OnComInput(self):
ret = Screen().input("Set the COM number:");
self._uartnum = ret def run(self):
Screen().clear()
while(1):
'''if (self._uart.isOpen() == False):
self._uart.open(self._uartnum)
if (self._uart.isOpen() == False):
print("Cannot Open the UART!")
time.sleep(1)
else:
self._menu.show()
'''
self._menu.show()
if self._menu.is_selected_item_exit() == True:
break self._uart.close() if __name__ == "__main__":
GPIOOperations = GPIOOperators()
GPIOOperations.run()
python Console menu的更多相关文章
- 不能在Python Console中运行pytest
在Python Console中运行pytest发现报错了 这是为什么?因为Python Console已经是进入python之后的环境,就像在python自带的IDLE中运行pytest pytes ...
- Pycharm中Python Console与Terminal的区别
1.Python Console是Python交互式模式,可以直接输入代码,然后执行,并立刻得到结果 2.Terminal是命令行模式,与系统的CMD(命令提示符)一样,可以运行各种系统命令
- pycharm Python Console调试 & django 调试
1.设置断点,然后debug 2.如果在运行中想修改变量,可以直接在pycharm中修改 如将列表的 13改成3,然后选中 Excuting Selection in console ...
- python console
print(sys.stdout.encoding, locale.getpreferredencoding ()) windows console : chcp 65001; 在设置了这个环境变量时 ...
- python之menu
只有主菜单没有二级菜单的例子: from tkinter import * root=Tk() root.wm_title('同济大学财务管理系统') menubar=Menu(root)#指定菜单实 ...
- Python Tkinter Menu
本人想开发一个简易的搜图GUI,基于此,选择用Tkinter模块开发. 需要开发出菜单栏 1 from Tkinter import * 2 3 4 root = Tk() 5 root.title( ...
- color the python console text
//install termcolor module cd \ cd python27 cd scripts pip install termcolor pip install colorama // ...
- QGis 利用Python Console编写脚本进行批量处理
前言 这篇文章里,我们要完成一些数据的合并,计算等操作. 准备工作 首先要了解Qgis的编程模型,具体参考文章<QGIS里的编程模型>及<Qgis里的查询过滤>.了解了Qgis ...
- python console 设立快捷键 学习源码 用到英语
arbitrary---随意 iterable----迭代 invalid syntax -----无效的语法 subscriptable ----可索引访问的
随机推荐
- sass 变量的声明 嵌套
sass 的默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式也很简单,只需要在默认变量之前重新声明下变量即可. $baseLineHeight: 2; $baseLineHeight: ...
- Cracking The Coding Interview5.1
//You are given two 32-bit numbers, N and M, and two bit positions, i and j. Write a method to set a ...
- js正则学习
一直对正则很纠结也很畏惧,以前感觉花时间理解一个个奇奇怪怪的符号,还不如直接百度谷歌之. 但知其然不知其所以然也是种痛苦,所以花了两天稍微学了一下,虽然没学很深入彻底,但也比之前进步不少,特此笔记. ...
- DevExpress WinForms v18.2新版亮点(二)
行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v1 ...
- Java基础-语法定义
Java三个体系 Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Ja ...
- 四则运算 来源:一位热心的网友 http://www.tqcto.com/article/software/336297.html
功能:实现真分数的四则运算 语言:Java 平台:JDK下的eclipse github地址:https://github.com/yeershao/hello-world/commit/9920a ...
- [Paper] LCS: An Efficient Data Eviction Strategy for Spark
Abstract Classical strategies do not aware of recovery cost, which could cause system performance de ...
- Appium Python API
1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的 ...
- MySql:触发器
触发器 一.触发器的定义: 触发器是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定的事件发生时,就会被M ...
- 创建vue项目
1.创建项目 vue creat 项目名 // 要提前进入目标目录(项目应该创建在哪个目录下) // 选择自定义方式创建项目,选取Router, Vuex插件 2.启动/停止项目 npm run se ...