#星计划#梅科尔工作室 HOS—基于 OpenHarmony 的智能点胶系统 App 原创
一、项目介绍
本项目实现的是前后端分离,其中前端开发环境为 OpenHarmony3.2,项目致力于实现可视化 OpenHarmony App。
以 ArkTS 为开发语言,利用 OpenHarmony 组件中的 list-item,button,input,toolbar,tabs,element 等组件搭建前端界面,使其可够实现页面跳转,滑动翻页,输入查询,点击查看等功能。并且通过@system.fetch 与后端创建的 post 属性的 url 端口,实现了气压,电流,数据获取时间,点胶机启动情况等的数据实时查询,实现数据移动端可视化。
二、开发环境
工具版本:DevEco Device Tool 4.0 Release
环境:openharmony3.2
三、功能实现
3.1 登录页面开发
3.1.1 页面框架构建
以登录页面的实现为例,利用鸿蒙原生态语言 ArkTS 搭建界面,以其声明式编译方式利用 Column()、Row()、Text()、Image()、Line()组件搭建页面框架,在文件夹中创建 Home.ets 文件,然后进行相关代码编写。主要是设计登录页面中应有的软件标识信息,用户账号密码登录等。具体代码如下:
<!--Home.ets-->
build() {
Column() {
Column() {
Image($r('app.media.Title'))
Text($r('app.string.title'))
.fontSize(50).fontColor($r('app.color.zhuti'))
.fontWeight(FontWeight.Bold) .fontWeight(500)
Text(this.src)
.fontColor(Color.Orange)
}
.margin(50)
Column({space: 10}) {
TextInput({ placeholder: $r('app.string.TextInput_1')})
.maxLength(11)
.type(InputType.Number)
.onChange((value1: string) => {
this.account = value1;
})
Line({width:'80%',height:1})
.backgroundColor($r('app.color.line'))
TextInput({ placeholder: $r('app.string.TextInput_2') })
.maxLength(11)
.type(InputType.Password)
.onChange((value2: string) => {
this.password = value2;
})
Line({width:'80%',height:1})
.backgroundColor($r('app.color.line'))
Row(){
Text('验证码登录')
.fontColor($r('app.color.Input'))
.fontWeight(500)
Text('忘记密码')
.fontColor($r('app.color.Input'))
}
.justifyContent(FlexAlign.SpaceBetween)
Column() {
Button('登录')
.onClick(() => {
this.login();
})
Text('注册账号')
.fontSize(15).fontWeight(500)
.fontColor($r('app.color.Input'))
}
.margin(10)
if (this.isShowProgress) {
LoadingProgress()
.color('#182431').margin({ top: 20})
.width(30).height(30)
}
Blank()
Text('其他方式')
.opacity(0.5)
}
Row({space:35}){
Column() {
Button() {
Image($r('app.media.qq'))
.onClick(() => {
router.back();
})
}
Text('方式一')
.opacity(0.6)
}
Column() {
Button() {
Image($r('app.media.wechat'))
.onClick(() => {
router.back();
})
}
.width(40)
Text('方式二')
.opacity(0.6)
}
}
.height('20%')
.alignItems(VerticalAlign.Top)
}
}
}
3.1.2 登录事件设计
通过创建 login()函数,应用与按钮点击事件,实现密码验证与页面跳转。通过@system.prompt 与@ohos.router 修饰器达到跳转与提示框显示,具体代码如下:
<!--login()函数创建-->
import router from '@ohos.router';
import prompt from '@system.prompt';
@Entry
@Component
struct Home {
@State src: string = router.getParams()?.['src']
@State account: string = '';
@State password: string = '';
@State isShowProgress: boolean = false;
private timeOutId = null;
login() {
if (this.account === '' || this.password === '') {
prompt.showToast({
message: '输入不能为空',
duration: 2000,
})
} else {
this.isShowProgress = true;
if (this.timeOutId === null) {
this.timeOutId = setTimeout(() => {
this.isShowProgress = false;
this.timeOutId = null;
router.push({ url: 'pages/Page' });
}, 800);
}
}
}
aboutToDisappear() {
clearTimeout(this.timeOutId);
this.timeOutId = null;
}
3.1.3 页面效果展示
在编辑窗口右上角的侧边工具框点击 Previewer,打开浏览器。页面效果如下图所示:
图1 登录页面
3.2 导航栏开发
3.2.1 导航栏样式设计
首先创建并编写 page.ets 文件进行代码编写,通过自定义组件构建 tabbar,设置导航栏样式,进行函数封装,具体代码如下:
<!--TabBuilder()构建-->
@Builder TabBuilder(title: string,index: number, img_1: Resource, img_2: Resource){
Column(){
Image(this.onIndex == index ? img_2 : img_1)
.width(40)
.height(40)
Text(title)
.fontWeight(600)
.fontColor(this.onIndex === index ? '#ffffffff' : '#1698CE')
.fontSize(19)
}
.width(100)
.height(70)
.margin({left:20})
.backgroundColor(this.onIndex === index ? '#3899B8' : '#ff47474e')
.border({color:'005980',width:3})
.borderRadius(10)
.onClick(() => {
this.onIndex = index;
this.tabscontroller.changeIndex(this.onIndex);
})
}
3.2.2 动态导航栏设计
设置导航栏为底部,添加 Tabs 控制器,添加点击事件实现页面跳转,并导入导航栏所要跳转界面路径,代码如下:
<!--page.ets-->
build() {
Column() {
Tabs({barPosition:BarPosition.End, controller: this.tabscontroller}){
TabContent(){
Index_3()
}
.tabBar(this.TabBuilder(Tabbarlist[0].title,0 ,Tabbarlist[0].img_1,Tabbarlist[0].img_2))
TabContent(){
Index()
}
.tabBar(this.TabBuilder('工作参数',1 , $r('app.media.tab3_3'),$r('app.media.tab3')))
TabContent(){
Index_2()
}
.tabBar(this.TabBuilder('产出数据',2 , $r('app.media.tab2_2'),$r('app.media.tab2')))
}
.barWidth('105%')
.barHeight(70)
.barMode(BarMode.Fixed)
.vertical(false)
}
.width('100%')
.border({ width: 5 })
.borderColor(0x121328)
.backgroundColor(0x04061B)
}
}
3.2.3 页面效果展示
在编辑窗口右上角的侧边工具框点击 Previewer,打开浏览器。页面效果如下图所示:
图2 登录页面
四、总结
本项目旨在开发一个基于 OpenHarmony 3.2 的智能点胶系统 App。该系统实现了前后端分离的架构,其中前端专注于构建一个用户友好且直观的可视化界面,后端则负责处理数据和逻辑运算。项目的核心是为用户提供一个高效、易用的智能点胶解决方案,强调在 OpenHarmony 平台上的应用开发和集成。本项目的成功实施为未来在 OpenHarmony 平台上开发更为复杂和功能丰富的应用提供了坚实的基础。