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 ----可索引访问的
随机推荐
- 数学软件Matlab的使用感受
在我一年前的暑假,我们的小学期学习了MATLAB软件.MATLAB是一款数学软件,可以用于算法计算.数据可视化.数据分析以及数据计算. 我们主要学习了MATLAB关于数学上的经常用的一些用法和算法,M ...
- ubuntu GUI程序开机自启设置
在 主目录下,即 $HOME路径下新建 或编辑 .gnomerc 文件,将开机启动脚本写在这里如下:gedit ~/.gnomerc#!/bin/bashcd /home/xxxx/openUI./o ...
- CKEditor编辑器的使用
<div class="form-group" id="infolink-edier-div"> <label for="" ...
- Asp.Net MVC3.0中防止跨站的POST
在Form中添加 @Html.AntiForgeryToken(); 在后台的Action中增加 [ValidateAntiForgeryToken] 这个方法还可以添加自定义的参数 @Html.An ...
- 代码改变世界 | 如何封装一个简单的 Koa
下面给大家带来:封装一个简单的 Koa Koa 是基于 Node.js 平台的下一代 web 开发框架 Koa 是一个新的 web 框架,可以快速而愉快地编写服务端应用程序,本文将跟大家一起学习:封装 ...
- elasticsearch学习笔记——安装,初步使用
前言 久仰elasticsearch大名,近年来,fackbook,baidu等大型网站的搜索功能均开始采用elasticsearch,足见其在处理大数据和高并发搜索中的卓越性能.不少其他网站也开始将 ...
- 30行python让图灵机器人和茉莉机器人无止尽的瞎扯蛋
首先注册申请图灵机器人的API: http://www.tuling123.com/ 查看一下API的格式,很简单: { "key": "APIKEY", &q ...
- diary of laravel
1. 修改数据库连接 初始化数据库: 首先: 修改 config- database.php 中的 数据库链接 其次:修改 .env 中数据库链接 创建表: php artisan migr ...
- sqlplus/rman登录报权限错误ORA-01031/ORA-04005/0RA-00554
安装Weblogic误操作对Oracle用户属组进行了修改 --本地sqlplus登录报错权限问题??? [oracle@enmo admin]$ sqlplus / as sysdba SQL*Pl ...
- 【02_258】Add Digits
Add Digits Total Accepted: 49702 Total Submissions: 104483 Difficulty: Easy Given a non-negative int ...