为RT-Thread实现一个傻瓜式的工程向导工具(二)
2014-07-20 22:55
916 查看
在深入了解了scons创建目标工程的内部机制,按着导师的要求,先画整个工程的数据流图,对整个项目的实现有个总体的把握。
这段时间主要做了如下工作:
使用qt-designer做向导界面(暂时是demo)。
写脚本实现编译库的功能。
画出项目的数据流图。
暂时代码框架如下所示:用户最终的配置都写入_rtrc文件以及对应的相应功能单元的头文件中。
import os
import sys
import subprocess
import pickle
from log import *
from ui_wizard import Ui_MainWindow
from PyQt4 import QtGui
SETTINGS = {}
def userSetting():
global SETTINGS
SETTINGS['CC'] = 'armcc'
def storeSetting():
global SETTINGS
fp = open(os.path.join(SETTINGS['BSP_DIR'], "_rtrc"), "w")
pickle.dump(SETTINGS, fp)
fp.close()
class Ui(QtGui.QMainWindow):
def __init__(self, parent=None):
super(Ui, self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.toolPage.setLayout(self.ui.verticalLayout)
self.ui.MainWidget.setLayout(self.ui.horizontalLayout)
def changePage(self, pre, cur):
pass
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
widget = Ui()
widget.show()
sys.exit(app.exec_())
u
4000
serSetting()
'''
if os.getenv('RTT_ROOT'):
RTT_ROOT = os.getenv('RTT_ROOT')
else:
RTT_ROOT = SETTINGS['RTT_ROOT']
'''
#what we add here should be done through userSetting()
SETTINGS['RTT_ROOT'] = os.path.normpath('F:/rt-thread')
SETTINGS['BSP_DIR'] = os.path.normpath(SETTINGS['RTT_ROOT'] + '/bsp/stm32f20x')
SETTINGS['PROJECT_TYPE'] = 'mdk4'
SETTINGS['CROSS_TOOL'] = 'keil'
SETTINGS['STM32_TYPE'] = 'STM32F20X_CL'
#SETTINGS['DEVICE_DRIVERS'] = [':
sys.path = sys.path + [os.path.join(SETTINGS['RTT_ROOT'], 'tools'),
SETTINGS['BSP_DIR']]
logging.debug(SETTINGS['BSP_DIR'])
logging.debug(SETTINGS['RTT_ROOT'])
storeSetting()
#after configuration, use scons to construct project
os.chdir(SETTINGS["BSP_DIR"])
#subprocess.call('scons --target=' + SETTINGS['PROJECT_TYPE'] + ' -s', shell=True)
#subprocess.call('scons --target=' + SETTINGS['PROJECT_TYPE'], shell=True)
subprocess.call('scons --buildlib=Kernel', shell = True)
subprocess.call('scons --target=' + SETTINGS['PROJECT_TYPE'], shell=True)
最终实现的数据流图如图所示:
这段时间主要做了如下工作:
使用qt-designer做向导界面(暂时是demo)。
写脚本实现编译库的功能。
画出项目的数据流图。
暂时代码框架如下所示:用户最终的配置都写入_rtrc文件以及对应的相应功能单元的头文件中。
import os
import sys
import subprocess
import pickle
from log import *
from ui_wizard import Ui_MainWindow
from PyQt4 import QtGui
SETTINGS = {}
def userSetting():
global SETTINGS
SETTINGS['CC'] = 'armcc'
def storeSetting():
global SETTINGS
fp = open(os.path.join(SETTINGS['BSP_DIR'], "_rtrc"), "w")
pickle.dump(SETTINGS, fp)
fp.close()
class Ui(QtGui.QMainWindow):
def __init__(self, parent=None):
super(Ui, self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.toolPage.setLayout(self.ui.verticalLayout)
self.ui.MainWidget.setLayout(self.ui.horizontalLayout)
def changePage(self, pre, cur):
pass
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
widget = Ui()
widget.show()
sys.exit(app.exec_())
u
4000
serSetting()
'''
if os.getenv('RTT_ROOT'):
RTT_ROOT = os.getenv('RTT_ROOT')
else:
RTT_ROOT = SETTINGS['RTT_ROOT']
'''
#what we add here should be done through userSetting()
SETTINGS['RTT_ROOT'] = os.path.normpath('F:/rt-thread')
SETTINGS['BSP_DIR'] = os.path.normpath(SETTINGS['RTT_ROOT'] + '/bsp/stm32f20x')
SETTINGS['PROJECT_TYPE'] = 'mdk4'
SETTINGS['CROSS_TOOL'] = 'keil'
SETTINGS['STM32_TYPE'] = 'STM32F20X_CL'
#SETTINGS['DEVICE_DRIVERS'] = [':
sys.path = sys.path + [os.path.join(SETTINGS['RTT_ROOT'], 'tools'),
SETTINGS['BSP_DIR']]
logging.debug(SETTINGS['BSP_DIR'])
logging.debug(SETTINGS['RTT_ROOT'])
storeSetting()
#after configuration, use scons to construct project
os.chdir(SETTINGS["BSP_DIR"])
#subprocess.call('scons --target=' + SETTINGS['PROJECT_TYPE'] + ' -s', shell=True)
#subprocess.call('scons --target=' + SETTINGS['PROJECT_TYPE'], shell=True)
subprocess.call('scons --buildlib=Kernel', shell = True)
subprocess.call('scons --target=' + SETTINGS['PROJECT_TYPE'], shell=True)
最终实现的数据流图如图所示:
相关文章推荐
- 为RT-Thread实现一个傻瓜式的工程向导工具(三)
- 为RT-Thread实现一个傻瓜式的工程向导工具(末期总结)
- 为RT-Thread实现一个傻瓜式的工程向导工具(一)
- 为RT-Thread实现一个傻瓜式的工程向导工具(中期报告)
- 一个Java Web后台任务执行工具的设计与实现
- Visual Paradigm - 一个用于绘制UML的java实现的一个工具软件
- 一个简单的Thread缓冲池的实现
- 在一个ajax extender 工程中实现多个 ajax extender 控件的方法
- 是一个工具 想C 实现一下
- 一个简单Thread缓冲池的实现
- 在小工具中维护状态(在一个浏览器里同时登陆两个账号同时进行操作的实现)
- 一个简单的Thread缓冲池的实现
- 一个简单的Thread缓冲池的实现
- Excel Report 一个小巧实用基于java实现的Excel报表生成工具
- 【zt】一个用 Observer 模式实现的 Thread 线程文件搜索例子
- 我的本科毕业设计(非水文,设计了一个新算法):一种字符编码猜测工具的实现方法
- 一个简单的Thread缓冲池的实现
- 一个简单的Thread缓冲池的实现
- 一个用户SQL Server2000/2005的好工具_——数据库发布向导(Database Publishing Wizard)
- Java进阶:一个简单Thread缓冲池的实现