fix: 轨迹黑屏问题优化,防止进入车检页面再进考试界面黑屏问题
This commit is contained in:
		
							parent
							
								
									829cb9e576
								
							
						
					
					
						commit
						4f76c81429
					
				| @ -5,9 +5,9 @@ | |||||||
|         "name": "default", |         "name": "default", | ||||||
|         "material": { |         "material": { | ||||||
|           "certpath": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.cer", |           "certpath": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.cer", | ||||||
|           "storePassword": "0000001BC64885799C5237EE8F4A1DD2F6A02E9E9ECDF000224536FC73A97B0762A9DE3DA53E12989713A5", |           "storePassword": "0000001B3C172BE457130742FD9398569777C93BBF9F9BBC9FA403F3FD8E06D5893F3D14B1789DF6E0F242", | ||||||
|           "keyAlias": "debugKey", |           "keyAlias": "debugKey", | ||||||
|           "keyPassword": "0000001B4C1141AC4B73DF3FB5112EDFA2017F07BD680B5ACEC3FAA37E9C84DD4B8DA0C9EBBB4605A7DAD4", |           "keyPassword": "0000001BEB9FF05D2B1A12791F121AFD8768580FD640018F6A394C3992EF05F73C2CEFAA130DE40703DFE8", | ||||||
|           "profile": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.p7b", |           "profile": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.p7b", | ||||||
|           "signAlg": "SHA256withECDSA", |           "signAlg": "SHA256withECDSA", | ||||||
|           "storeFile": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.p12" |           "storeFile": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.p12" | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ import { PerLane } from '../../../model/index' | |||||||
| import { dConsole } from '../../../utils/LogWorker' | import { dConsole } from '../../../utils/LogWorker' | ||||||
| import SignalDisplayComponent from '../../compontents/SignalDisplay' | import SignalDisplayComponent from '../../compontents/SignalDisplay' | ||||||
| import TabComponent from '../../compontents/Tab' | import TabComponent from '../../compontents/Tab' | ||||||
|  | import TrajectoryViewComponent from '../../compontents/TrajectoryView' | ||||||
| 
 | 
 | ||||||
| @CustomDialog | @CustomDialog | ||||||
| export default struct SignalTrajectoryDialog { | export default struct SignalTrajectoryDialog { | ||||||
| @ -38,10 +39,16 @@ export default struct SignalTrajectoryDialog { | |||||||
| 
 | 
 | ||||||
|       Scroll() { |       Scroll() { | ||||||
|         Column() { |         Column() { | ||||||
|  |           if (this.active !== 2) { | ||||||
|             SignalDisplayComponent({ |             SignalDisplayComponent({ | ||||||
|               active: this.active, |               active: this.active, | ||||||
|  |             }) | ||||||
|  |           } else { | ||||||
|  |             TrajectoryViewComponent({ | ||||||
|               laneSignal: this.laneSignal |               laneSignal: this.laneSignal | ||||||
|             }) |             }) | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|         }.height(890) |         }.height(890) | ||||||
|       }.width("100%") |       }.width("100%") | ||||||
|       .height(700) |       .height(700) | ||||||
|  | |||||||
| @ -45,7 +45,6 @@ struct SignDisplayPage { | |||||||
| 
 | 
 | ||||||
|       SignalDisplayComponent({ |       SignalDisplayComponent({ | ||||||
|         active: this.active, |         active: this.active, | ||||||
|         laneSignal: this.laneSignal |  | ||||||
|       }) |       }) | ||||||
|     } |     } | ||||||
|     .width('100%') |     .width('100%') | ||||||
|  | |||||||
							
								
								
									
										25
									
								
								entry/src/main/ets/pages/compontents/Block.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								entry/src/main/ets/pages/compontents/Block.ets
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | @Component | ||||||
|  | export default struct BlockComponent { | ||||||
|  |   @State label: string = "发送次数" | ||||||
|  |   @Prop value: string = "1" | ||||||
|  |   @State widthNum: number = 130 | ||||||
|  |   @State heightNum: number = 70 | ||||||
|  |   @State color: string = "#FDF5E7" | ||||||
|  | 
 | ||||||
|  |   build() { | ||||||
|  |     Row() { | ||||||
|  |       Row() { | ||||||
|  |         Text(this.label + ":").fontColor(this.color).fontSize(14) | ||||||
|  |       }.width(this.widthNum).justifyContent(FlexAlign.End) | ||||||
|  | 
 | ||||||
|  |       Row() { | ||||||
|  |         Text(this.value).fontColor(this.color) | ||||||
|  |       }.width(80).justifyContent(FlexAlign.Start).margin({ | ||||||
|  |         left: 20 | ||||||
|  |       }) | ||||||
|  |     } | ||||||
|  |     .height(this.heightNum) | ||||||
|  |     .justifyContent(FlexAlign.Center) | ||||||
|  |     .alignItems(VerticalAlign.Center) | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								entry/src/main/ets/pages/compontents/Coordinate.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								entry/src/main/ets/pages/compontents/Coordinate.ets
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | import { SignalDataType } from '../../model' | ||||||
|  | import BlockComponent from './Block' | ||||||
|  | 
 | ||||||
|  | @Component | ||||||
|  | export default struct CoordinateComponent { | ||||||
|  |   @Prop data: Array<SignalDataType> | ||||||
|  |   @State isItHorizontal: boolean = true | ||||||
|  |   @State heightNum: number = 65 | ||||||
|  | 
 | ||||||
|  |   build() { | ||||||
|  |     Flex({ | ||||||
|  |       direction: FlexDirection.Column, | ||||||
|  |       alignItems: ItemAlign.Center | ||||||
|  |     }) { | ||||||
|  |       Text("GPS坐标").fontColor("#FFB433").fontSize(20).margin({ | ||||||
|  |         top: 10 | ||||||
|  |       }) | ||||||
|  |       Flex({ | ||||||
|  |         wrap: FlexWrap.Wrap, | ||||||
|  |         direction: this.isItHorizontal ? FlexDirection.Row : FlexDirection.Column | ||||||
|  |       }) { | ||||||
|  |         ForEach(this.data, (item: SignalDataType) => { | ||||||
|  |           BlockComponent({ | ||||||
|  |             heightNum: this.heightNum, | ||||||
|  |             color: "#FFB433", | ||||||
|  |             label: item.key, | ||||||
|  |             value: item.value | ||||||
|  |           }) | ||||||
|  |         }) | ||||||
|  |       }.width("100%") | ||||||
|  |     } | ||||||
|  |     .width("100%") | ||||||
|  |     .height(this.isItHorizontal ? 210 : "100%") | ||||||
|  |     .backgroundColor("#1A1A1A") | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,17 +1,11 @@ | |||||||
| import { GPSData, SignalData } from '../../mock'; | import { GPSData, SignalData } from '../../mock'; | ||||||
| import { | import { EnvironmentConfigurationType, SignalDataType, WorkerBackMessage, WorkerBackMessageType } from '../../model'; | ||||||
|   EnvironmentConfigurationType, |  | ||||||
|   PerLane, |  | ||||||
|   RoadDataType, |  | ||||||
|   SignalDataType, |  | ||||||
|   WorkerBackMessage, |  | ||||||
|   WorkerBackMessageType |  | ||||||
| } from '../../model'; |  | ||||||
| 
 | 
 | ||||||
| import { DifferentialAndSignal } from '../../utils/business/DifferentialAndSignalWorker'; | import { DifferentialAndSignal } from '../../utils/business/DifferentialAndSignalWorker'; | ||||||
| import { examJudgeMapSetDrawing, examJudgeMapSetScaling } from '../Judge/JudgeUtils'; |  | ||||||
| import { dConsole } from '../../utils/LogWorker'; | import { dConsole } from '../../utils/LogWorker'; | ||||||
| import { SignDisplayTag } from '../../config'; | import { SignDisplayTag } from '../../config'; | ||||||
|  | import CoordinateComponent from './Coordinate'; | ||||||
|  | import BlockComponent from './Block'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @Component | @Component | ||||||
| @ -26,12 +20,6 @@ export default struct SignalDisplayComponent { | |||||||
|   @Prop active: number = 0 |   @Prop active: number = 0 | ||||||
|   // 原始数据 |   // 原始数据 | ||||||
|   @State rawData: string = "$GPS,,,,,,,,,,,,,,,,,,,,,,,,,,,,," |   @State rawData: string = "$GPS,,,,,,,,,,,,,,,,,,,,,,,,,,,,," | ||||||
|   // 车道信息 |  | ||||||
|   @Link @Watch("laneSignalChange") laneSignal: PerLane |  | ||||||
| 
 |  | ||||||
|   laneSignalChange() { |  | ||||||
|     dConsole.log("车道信号变化333", this.laneSignal) |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   aboutToAppear(): void { |   aboutToAppear(): void { | ||||||
|     DifferentialAndSignal.onMsg(this.getMsg) |     DifferentialAndSignal.onMsg(this.getMsg) | ||||||
| @ -128,28 +116,6 @@ export default struct SignalDisplayComponent { | |||||||
|           Column() { |           Column() { | ||||||
|             Text(this.rawData).fontSize(20).fontColor("#fff") |             Text(this.rawData).fontSize(20).fontColor("#fff") | ||||||
|           }.backgroundColor("#282828").width("100%").height("100%") |           }.backgroundColor("#282828").width("100%").height("100%") | ||||||
|         } else { |  | ||||||
|           // 轨迹查看 |  | ||||||
|           Flex() { |  | ||||||
|             Column() { |  | ||||||
|               CoordinateComponent({ |  | ||||||
|                 isItHorizontal: false, |  | ||||||
|                 heightNum: 40, |  | ||||||
|                 data: this.GPSColum |  | ||||||
|               }) |  | ||||||
|             }.width("20%") |  | ||||||
| 
 |  | ||||||
|             Column() { |  | ||||||
|               LaneComponent({ |  | ||||||
|                 laneSignal: this.laneSignal |  | ||||||
|               }) |  | ||||||
|             }.width("20%") |  | ||||||
| 
 |  | ||||||
|             Column() { |  | ||||||
|               trajectoryComponent() |  | ||||||
|             }.height("100%").width("60%") |  | ||||||
| 
 |  | ||||||
|           }.backgroundColor("#282828").width("100%").height("100%") |  | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       .width("100%") |       .width("100%") | ||||||
| @ -161,122 +127,6 @@ export default struct SignalDisplayComponent { | |||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @Component |  | ||||||
| struct trajectoryComponent { |  | ||||||
|   @State scaleNum: number = 100 |  | ||||||
|   scaleFn = async (num: number) => { |  | ||||||
|     console.log("缩放传入数据", num.toString()) |  | ||||||
|     const scaleNum = this.scaleNum |  | ||||||
|     if (scaleNum > 0 && scaleNum < 5000) { |  | ||||||
|       this.scaleNum += num; |  | ||||||
|     } |  | ||||||
|     if (scaleNum === 0 && num > 0) { |  | ||||||
|       this.scaleNum += num; |  | ||||||
|     } |  | ||||||
|     if (scaleNum > 5000 && num < 0) { |  | ||||||
|       this.scaleNum += num; |  | ||||||
|     } |  | ||||||
|     console.log("缩放数据", this.scaleNum.toString()) |  | ||||||
|     await examJudgeMapSetScaling(this.scaleNum); |  | ||||||
|   } |  | ||||||
|   getScaleNum = (): number => { |  | ||||||
|     const scaleNum = this.scaleNum; |  | ||||||
|     if (scaleNum < 200) return 10; |  | ||||||
|     if (scaleNum < 400) return 30; |  | ||||||
|     if (scaleNum < 600) return 50; |  | ||||||
|     if (scaleNum < 800) return 70; |  | ||||||
|     if (scaleNum < 1000) return 100; |  | ||||||
|     if (scaleNum < 2000) return 500; |  | ||||||
|     return 1000; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   build() { |  | ||||||
|     Stack({ |  | ||||||
|       alignContent: Alignment.TopEnd |  | ||||||
|     }) { |  | ||||||
|       XComponent({ |  | ||||||
|         id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变 |  | ||||||
|         type: 'surface', |  | ||||||
|         // libraryname: 'JudgeSdk' |  | ||||||
|         libraryname: 'judgesdk' |  | ||||||
|       }) |  | ||||||
|         .width("100%") |  | ||||||
|         .height("100%") |  | ||||||
|         .onLoad(() => { |  | ||||||
|           dConsole.log("开始绘制") |  | ||||||
|           examJudgeMapSetDrawing(true) |  | ||||||
|         }) |  | ||||||
|         .onDestroy(() => { |  | ||||||
|           dConsole.log("结束绘制") |  | ||||||
|           examJudgeMapSetDrawing(false) |  | ||||||
|         }) |  | ||||||
|       Row() { |  | ||||||
|         Image($rawfile('judge/big.png')).width(60).onClick(() => { |  | ||||||
|           this.scaleFn(-this.getScaleNum()) |  | ||||||
|         }) |  | ||||||
|         Image($rawfile('judge/small.png')).width(60).onClick(() => { |  | ||||||
|           this.scaleFn(this.getScaleNum()) |  | ||||||
|         }).margin({ left: 20 }) |  | ||||||
|       }.align(Alignment.TopEnd) |  | ||||||
|     }.width("100%").height("100%") |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @Component |  | ||||||
| struct LaneComponent { |  | ||||||
|   @Link laneSignal: PerLane |  | ||||||
|   private RoadData: Array<RoadDataType> = [ |  | ||||||
|     { name: '路段组号', key: 'MapRoad_Code_No' }, |  | ||||||
|     { name: '路段编码', key: 'MapRoad_Name' }, |  | ||||||
|     { name: '车轮压线', key: ['TouchLineType', 'TouchDir'] }, |  | ||||||
|     { name: '车身碰线', key: ['TouchLineTypeCS', 'TouchLineDirCS'] }, |  | ||||||
|     { name: '基准车道', key: ['BasePointInLaneNo', 'BaseLaneCount'] }, |  | ||||||
|     { name: '前点车道', key: ['FrontPointLaneNo', 'FrontPointLaneCount'] }, |  | ||||||
|     { name: '后车点道', key: ['BackPointLaneNo', 'BackPointLaneCount'] }, |  | ||||||
|     { name: '左前/后车身距离', key: ['Body_LF_ToLeftEdge', 'Body_LB_ToLeftEdge'] }, |  | ||||||
|     { name: '右前/后车身距离', key: ['Body_RF_ToRightEdge', 'Body_RB_ToRightEdge'] }, |  | ||||||
|     { name: '右前/后车身边线', key: ['Body_RF_ToBaseLine', 'Body_RB_ToBaseLine'] }, |  | ||||||
|     { name: '右前/后轮距离', key: ['Wheel_RF_ToRightEdge', 'Wheel_RB_ToRightEdge'] }, |  | ||||||
|     { name: '右前/后轮边线', key: ['Wheel_RF_ToBaseLine', 'Wheel_RB_ToBaseLine'] }, |  | ||||||
|     { name: '左前/后轮距离', key: ['Wheel_LF_ToRightEdge', 'Wheel_LB_ToRightEdge'] }, |  | ||||||
|     { name: '左前/后轮边线', key: ['Wheel_LF_ToBaseLine', 'Wheel_LB_ToBaseLine'] }, |  | ||||||
|     { name: '车道属性', key: ['BasePointInLaneDir', 'CrossLineAttr', 'DirInverse'] }, |  | ||||||
|     { name: '形状', key: ['InShapeAttr', 'ShapeNo', 'ShapeNoWheel'] }, |  | ||||||
|     { name: '路段点', key: ['CrossPointNo'] }, |  | ||||||
|   ] |  | ||||||
| 
 |  | ||||||
|   getValues(roadColumn: RoadDataType) { |  | ||||||
|     dConsole.log(SignDisplayTag, "车道信息", this.laneSignal) |  | ||||||
|     let key = roadColumn.key; |  | ||||||
|     let str = '' |  | ||||||
|     if (Array.isArray(key)) { |  | ||||||
|       key.forEach((k, index) => { |  | ||||||
|         str += (Reflect.get(this.laneSignal, k) === undefined ? '' : Reflect.get(this.laneSignal, k)) + (index == key.length - 1 ? '' : '/') |  | ||||||
|       }) |  | ||||||
|     } else { |  | ||||||
|       str = Reflect.get(this.laneSignal, key) === undefined ? '' : Reflect.get(this.laneSignal, key) |  | ||||||
|     } |  | ||||||
|     return str |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   build() { |  | ||||||
|     Column() { |  | ||||||
|       Text("车道信息").fontSize(20).fontColor("#FFB433").margin({ |  | ||||||
|         top: 20 |  | ||||||
|       }) |  | ||||||
|       ForEach(this.RoadData, (item: RoadDataType) => { |  | ||||||
|         blockComponent({ |  | ||||||
|           color: "#FFB433", |  | ||||||
|           heightNum: 40, |  | ||||||
|           label: item.name, |  | ||||||
|           value: this.getValues(item) |  | ||||||
|         }) |  | ||||||
|       }) |  | ||||||
|     }.width("100%") |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| @Component | @Component | ||||||
| struct GPSComponent { | struct GPSComponent { | ||||||
| @ -299,59 +149,59 @@ struct GPSComponent { | |||||||
|     Flex({ |     Flex({ | ||||||
|       wrap: FlexWrap.Wrap |       wrap: FlexWrap.Wrap | ||||||
|     }) { |     }) { | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "发送次数", |         label: "发送次数", | ||||||
|         value: this.data[49] || "-" |         value: this.data[49] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "固件版本", |         label: "固件版本", | ||||||
|         value: this.data[54] || "-" |         value: this.data[54] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "方向盘类型", |         label: "方向盘类型", | ||||||
|         value: this.data[50] || "-" |         value: this.data[50] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "按键数值", |         label: "按键数值", | ||||||
|         value: this.data[55] || "-" |         value: this.data[55] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "GPS错误次数", |         label: "GPS错误次数", | ||||||
|         value: this.data[60] || "-" |         value: this.data[60] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "汽车类型", |         label: "汽车类型", | ||||||
|         value: this.data[51] || "-" |         value: this.data[51] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "GPS板卡类型", |         label: "GPS板卡类型", | ||||||
|         value: this.data[56] || "-" |         value: this.data[56] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "本机IP", |         label: "本机IP", | ||||||
|         value: this.ip |         value: this.ip | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "接口心跳", |         label: "接口心跳", | ||||||
|         value: this.data[52] || "-" |         value: this.data[52] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "GPS板卡软件版本", |         label: "GPS板卡软件版本", | ||||||
|         value: this.data[57] || "-" |         value: this.data[57] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "改正数次数/改正数大小", |         label: "改正数次数/改正数大小", | ||||||
|         value: this.data[58] || "-" |         value: this.data[58] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "已工作时长/设定工作时长", |         label: "已工作时长/设定工作时长", | ||||||
|         value: this.data[61] || "-" |         value: this.data[61] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "GPS数据次数/数据长度", |         label: "GPS数据次数/数据长度", | ||||||
|         value: this.data[59] || "-" |         value: this.data[59] || "-" | ||||||
|       }) |       }) | ||||||
|       blockComponent({ |       BlockComponent({ | ||||||
|         label: "改正数据长度*数据长度-基准站RTCM改正数类型", |         label: "改正数据长度*数据长度-基准站RTCM改正数类型", | ||||||
|         value: this.data[62] || "-" |         value: this.data[62] || "-" | ||||||
|       }) |       }) | ||||||
| @ -368,7 +218,7 @@ struct CarComponent { | |||||||
|       wrap: FlexWrap.Wrap |       wrap: FlexWrap.Wrap | ||||||
|     }) { |     }) { | ||||||
|       ForEach(this.data, (item: SignalDataType) => { |       ForEach(this.data, (item: SignalDataType) => { | ||||||
|         blockComponent({ |         BlockComponent({ | ||||||
|           label: item.key, |           label: item.key, | ||||||
|           value: item.value |           value: item.value | ||||||
|         }) |         }) | ||||||
| @ -377,62 +227,4 @@ struct CarComponent { | |||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @Component |  | ||||||
| struct CoordinateComponent { |  | ||||||
|   @Prop data: Array<SignalDataType> |  | ||||||
|   @State isItHorizontal: boolean = true |  | ||||||
|   @State heightNum: number = 65 |  | ||||||
| 
 | 
 | ||||||
|   build() { |  | ||||||
|     Flex({ |  | ||||||
|       direction: FlexDirection.Column, |  | ||||||
|       alignItems: ItemAlign.Center |  | ||||||
|     }) { |  | ||||||
|       Text("GPS坐标").fontColor("#FFB433").fontSize(20).margin({ |  | ||||||
|         top: 10 |  | ||||||
|       }) |  | ||||||
|       Flex({ |  | ||||||
|         wrap: FlexWrap.Wrap, |  | ||||||
|         direction: this.isItHorizontal ? FlexDirection.Row : FlexDirection.Column |  | ||||||
|       }) { |  | ||||||
|         ForEach(this.data, (item: SignalDataType) => { |  | ||||||
|           blockComponent({ |  | ||||||
|             heightNum: this.heightNum, |  | ||||||
|             color: "#FFB433", |  | ||||||
|             label: item.key, |  | ||||||
|             value: item.value |  | ||||||
|           }) |  | ||||||
|         }) |  | ||||||
|       }.width("100%") |  | ||||||
|     } |  | ||||||
|     .width("100%") |  | ||||||
|     .height(this.isItHorizontal ? 210 : "100%") |  | ||||||
|     .backgroundColor("#1A1A1A") |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| @Component |  | ||||||
| struct blockComponent { |  | ||||||
|   @State label: string = "发送次数" |  | ||||||
|   @Prop value: string = "1" |  | ||||||
|   @State widthNum: number = 130 |  | ||||||
|   @State heightNum: number = 70 |  | ||||||
|   @State color: string = "#FDF5E7" |  | ||||||
| 
 |  | ||||||
|   build() { |  | ||||||
|     Row() { |  | ||||||
|       Row() { |  | ||||||
|         Text(this.label + ":").fontColor(this.color).fontSize(14) |  | ||||||
|       }.width(this.widthNum).justifyContent(FlexAlign.End) |  | ||||||
| 
 |  | ||||||
|       Row() { |  | ||||||
|         Text(this.value).fontColor(this.color) |  | ||||||
|       }.width(80).justifyContent(FlexAlign.Start).margin({ |  | ||||||
|         left: 20 |  | ||||||
|       }) |  | ||||||
|     } |  | ||||||
|     .height(this.heightNum) |  | ||||||
|     .justifyContent(FlexAlign.Center) |  | ||||||
|     .alignItems(VerticalAlign.Center) |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										194
									
								
								entry/src/main/ets/pages/compontents/TrajectoryView.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								entry/src/main/ets/pages/compontents/TrajectoryView.ets
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,194 @@ | |||||||
|  | import { SignDisplayTag } from '../../config' | ||||||
|  | import { GPSData } from '../../mock' | ||||||
|  | import { PerLane, RoadDataType, SignalDataType, WorkerBackMessage, WorkerBackMessageType } from '../../model' | ||||||
|  | import { DifferentialAndSignal } from '../../utils/business/DifferentialAndSignalWorker' | ||||||
|  | import { dConsole } from '../../utils/LogWorker' | ||||||
|  | import { examJudgeMapSetDrawing, examJudgeMapSetScaling } from '../Judge/JudgeUtils' | ||||||
|  | import BlockComponent from './Block' | ||||||
|  | import CoordinateComponent from './Coordinate' | ||||||
|  | 
 | ||||||
|  | @Component | ||||||
|  | export default struct TrajectoryViewComponent { | ||||||
|  |   // GPS信号 | ||||||
|  |   @State GPSColum: Array<SignalDataType> = GPSData | ||||||
|  |   // 车道信息 | ||||||
|  |   @Link @Watch("laneSignalChange") laneSignal: PerLane | ||||||
|  | 
 | ||||||
|  |   laneSignalChange() { | ||||||
|  |     dConsole.log("车道信号变化333", this.laneSignal) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   aboutToAppear(): void { | ||||||
|  |     DifferentialAndSignal.onMsg(this.getMsg) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   aboutToDisappear(): void { | ||||||
|  |     DifferentialAndSignal.offMsg(this.getMsg) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   getMsg = (data: string) => { | ||||||
|  |     const result: WorkerBackMessage = JSON.parse(data) | ||||||
|  |     dConsole.log(SignDisplayTag, "wzj", data) | ||||||
|  |     if (result.type === WorkerBackMessageType.ObtainUdpData) { | ||||||
|  |       this.getSignal(result.data as string) | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   getSignal = (msg: string) => { | ||||||
|  |     const newArr = msg.split(',') | ||||||
|  |     if (newArr[0] != '#DN_GD') { | ||||||
|  |       return | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     let t = 0 | ||||||
|  |     for (let i = 83; i <= 97; i++) { | ||||||
|  |       this.GPSColum[t].value = newArr[i] | ||||||
|  |       t++ | ||||||
|  |     } | ||||||
|  |     this.GPSColum[14].value = ((Number((newArr[97] || 0)) * 1.852).toFixed(2)).toString() | ||||||
|  |     this.GPSColum[10].value = newArr[93] | ||||||
|  | 
 | ||||||
|  |     this.GPSColum = JSON.parse(JSON.stringify((this.GPSColum))) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   build() { | ||||||
|  |     Column() { | ||||||
|  |       Flex() { | ||||||
|  |         Column() { | ||||||
|  |           CoordinateComponent({ | ||||||
|  |             isItHorizontal: false, | ||||||
|  |             heightNum: 40, | ||||||
|  |             data: this.GPSColum | ||||||
|  |           }) | ||||||
|  |         }.width("20%") | ||||||
|  | 
 | ||||||
|  |         Column() { | ||||||
|  |           LaneComponent({ | ||||||
|  |             laneSignal: this.laneSignal | ||||||
|  |           }) | ||||||
|  |         }.width("20%") | ||||||
|  | 
 | ||||||
|  |         Column() { | ||||||
|  |           trajectoryComponent() | ||||||
|  |         }.height("100%").width("60%") | ||||||
|  |       }.backgroundColor("#282828").width("100%").height("100%").borderRadius(10) | ||||||
|  |     }.width("100%").height("100%").backgroundColor("#fff").padding(10) | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @Component | ||||||
|  | struct LaneComponent { | ||||||
|  |   @Link laneSignal: PerLane | ||||||
|  |   private RoadData: Array<RoadDataType> = [ | ||||||
|  |     { name: '路段组号', key: 'MapRoad_Code_No' }, | ||||||
|  |     { name: '路段编码', key: 'MapRoad_Name' }, | ||||||
|  |     { name: '车轮压线', key: ['TouchLineType', 'TouchDir'] }, | ||||||
|  |     { name: '车身碰线', key: ['TouchLineTypeCS', 'TouchLineDirCS'] }, | ||||||
|  |     { name: '基准车道', key: ['BasePointInLaneNo', 'BaseLaneCount'] }, | ||||||
|  |     { name: '前点车道', key: ['FrontPointLaneNo', 'FrontPointLaneCount'] }, | ||||||
|  |     { name: '后车点道', key: ['BackPointLaneNo', 'BackPointLaneCount'] }, | ||||||
|  |     { name: '左前/后车身距离', key: ['Body_LF_ToLeftEdge', 'Body_LB_ToLeftEdge'] }, | ||||||
|  |     { name: '右前/后车身距离', key: ['Body_RF_ToRightEdge', 'Body_RB_ToRightEdge'] }, | ||||||
|  |     { name: '右前/后车身边线', key: ['Body_RF_ToBaseLine', 'Body_RB_ToBaseLine'] }, | ||||||
|  |     { name: '右前/后轮距离', key: ['Wheel_RF_ToRightEdge', 'Wheel_RB_ToRightEdge'] }, | ||||||
|  |     { name: '右前/后轮边线', key: ['Wheel_RF_ToBaseLine', 'Wheel_RB_ToBaseLine'] }, | ||||||
|  |     { name: '左前/后轮距离', key: ['Wheel_LF_ToRightEdge', 'Wheel_LB_ToRightEdge'] }, | ||||||
|  |     { name: '左前/后轮边线', key: ['Wheel_LF_ToBaseLine', 'Wheel_LB_ToBaseLine'] }, | ||||||
|  |     { name: '车道属性', key: ['BasePointInLaneDir', 'CrossLineAttr', 'DirInverse'] }, | ||||||
|  |     { name: '形状', key: ['InShapeAttr', 'ShapeNo', 'ShapeNoWheel'] }, | ||||||
|  |     { name: '路段点', key: ['CrossPointNo'] }, | ||||||
|  |   ] | ||||||
|  | 
 | ||||||
|  |   getValues(roadColumn: RoadDataType) { | ||||||
|  |     dConsole.log(SignDisplayTag, "车道信息", this.laneSignal) | ||||||
|  |     let key = roadColumn.key; | ||||||
|  |     let str = '' | ||||||
|  |     if (Array.isArray(key)) { | ||||||
|  |       key.forEach((k, index) => { | ||||||
|  |         str += (Reflect.get(this.laneSignal, k) === undefined ? '' : Reflect.get(this.laneSignal, k)) + (index == key.length - 1 ? '' : '/') | ||||||
|  |       }) | ||||||
|  |     } else { | ||||||
|  |       str = Reflect.get(this.laneSignal, key) === undefined ? '' : Reflect.get(this.laneSignal, key) | ||||||
|  |     } | ||||||
|  |     return str | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   build() { | ||||||
|  |     Column() { | ||||||
|  |       Text("车道信息").fontSize(20).fontColor("#FFB433").margin({ | ||||||
|  |         top: 20 | ||||||
|  |       }) | ||||||
|  |       ForEach(this.RoadData, (item: RoadDataType) => { | ||||||
|  |         BlockComponent({ | ||||||
|  |           color: "#FFB433", | ||||||
|  |           heightNum: 40, | ||||||
|  |           label: item.name, | ||||||
|  |           value: this.getValues(item) | ||||||
|  |         }) | ||||||
|  |       }) | ||||||
|  |     }.width("100%") | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @Component | ||||||
|  | struct trajectoryComponent { | ||||||
|  |   @State scaleNum: number = 100 | ||||||
|  |   scaleFn = async (num: number) => { | ||||||
|  |     console.log("缩放传入数据", num.toString()) | ||||||
|  |     const scaleNum = this.scaleNum | ||||||
|  |     if (scaleNum > 0 && scaleNum < 5000) { | ||||||
|  |       this.scaleNum += num; | ||||||
|  |     } | ||||||
|  |     if (scaleNum === 0 && num > 0) { | ||||||
|  |       this.scaleNum += num; | ||||||
|  |     } | ||||||
|  |     if (scaleNum > 5000 && num < 0) { | ||||||
|  |       this.scaleNum += num; | ||||||
|  |     } | ||||||
|  |     console.log("缩放数据", this.scaleNum.toString()) | ||||||
|  |     await examJudgeMapSetScaling(this.scaleNum); | ||||||
|  |   } | ||||||
|  |   getScaleNum = (): number => { | ||||||
|  |     const scaleNum = this.scaleNum; | ||||||
|  |     if (scaleNum < 200) return 10; | ||||||
|  |     if (scaleNum < 400) return 30; | ||||||
|  |     if (scaleNum < 600) return 50; | ||||||
|  |     if (scaleNum < 800) return 70; | ||||||
|  |     if (scaleNum < 1000) return 100; | ||||||
|  |     if (scaleNum < 2000) return 500; | ||||||
|  |     return 1000; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   build() { | ||||||
|  |     Stack({ | ||||||
|  |       alignContent: Alignment.TopEnd | ||||||
|  |     }) { | ||||||
|  |       XComponent({ | ||||||
|  |         id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变 | ||||||
|  |         type: 'surface', | ||||||
|  |         // libraryname: 'JudgeSdk' | ||||||
|  |         libraryname: 'judgesdk' | ||||||
|  |       }) | ||||||
|  |         .width("100%") | ||||||
|  |         .height("100%") | ||||||
|  |         .onLoad(() => { | ||||||
|  |           dConsole.log("开始绘制") | ||||||
|  |           examJudgeMapSetDrawing(true) | ||||||
|  |         }) | ||||||
|  |         .onDestroy(() => { | ||||||
|  |           dConsole.log("结束绘制") | ||||||
|  |           examJudgeMapSetDrawing(false) | ||||||
|  |         }) | ||||||
|  |       Row() { | ||||||
|  |         Image($rawfile('judge/big.png')).width(60).onClick(() => { | ||||||
|  |           this.scaleFn(-this.getScaleNum()) | ||||||
|  |         }) | ||||||
|  |         Image($rawfile('judge/small.png')).width(60).onClick(() => { | ||||||
|  |           this.scaleFn(this.getScaleNum()) | ||||||
|  |         }).margin({ left: 20 }) | ||||||
|  |       }.align(Alignment.TopEnd) | ||||||
|  |     }.width("100%").height("100%") | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @ -23,8 +23,7 @@ export default class FileModel { | |||||||
| 
 | 
 | ||||||
|   constructor(context: common.UIAbilityContext) { |   constructor(context: common.UIAbilityContext) { | ||||||
|     (async () => { |     (async () => { | ||||||
|       const fileUtil = new FileUtils(context) |       this.fileUtil = new FileUtils(context) | ||||||
|       this.fileUtil = fileUtil |  | ||||||
|     })() |     })() | ||||||
| 
 | 
 | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -339,9 +339,9 @@ export const GetPhotoBase64 = async (context: common.UIAbilityContext): Promise< | |||||||
|   } else { |   } else { | ||||||
|     try { |     try { | ||||||
|       dConsole.info(JudgeTag, '拍照开始') |       dConsole.info(JudgeTag, '拍照开始') | ||||||
|       const res = await takePhoto(videoConfig, context, 'pz/', 2); |       const res = await takePhoto(videoConfig!, context, 'pz/', 2); | ||||||
|       dConsole.info(JudgeTag, '拍照完成') |       dConsole.info(JudgeTag, '拍照完成') | ||||||
|       return res.base64 |       return res.base64 || "" | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       dConsole.error(JudgeTag, '拍照异常' + JSON.stringify(e)) |       dConsole.error(JudgeTag, '拍照异常' + JSON.stringify(e)) | ||||||
|       Prompt.showToast({ |       Prompt.showToast({ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user