Compare commits
	
		
			No commits in common. "a9cdc3c552868113dde79ee7ba8fefba857368d0" and "6e1c80cb04bd04321c0409fb413f26341f6caf59" have entirely different histories.
		
	
	
		
			a9cdc3c552
			...
			6e1c80cb04
		
	
		
@ -1,17 +1,18 @@
 | 
				
			|||||||
import systemTime from '@ohos.systemDateTime';
 | 
					import systemTime from '@ohos.systemDateTime';
 | 
				
			||||||
 | 
					import { timeSynchronization } from '../../api';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// export function isSevenDaysAgo(date, days = 2) {
 | 
					export function isSevenDaysAgo(date, days = 2) {
 | 
				
			||||||
//   const today = new Date(); // 当前日期
 | 
					  const today = new Date(); // 当前日期
 | 
				
			||||||
//   const target = new Date(date); // 需要判断的日期
 | 
					  const target = new Date(date); // 需要判断的日期
 | 
				
			||||||
//   console.info("listFile succeed1", JSON.stringify(target));
 | 
					  console.info("listFile succeed1", JSON.stringify(target));
 | 
				
			||||||
//
 | 
					
 | 
				
			||||||
//   const diff = today.getTime() - target.getTime(); // 计算两个日期之间的毫秒数差异
 | 
					  const diff = today.getTime() - target.getTime(); // 计算两个日期之间的毫秒数差异
 | 
				
			||||||
//   const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数
 | 
					  const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数
 | 
				
			||||||
//   console.info("listFile succeed2", JSON.stringify(diffDays));
 | 
					  console.info("listFile succeed2", JSON.stringify(diffDays));
 | 
				
			||||||
//   // 如果差异天数正好是2,则原日期是当前日期的前2天
 | 
					  // 如果差异天数正好是2,则原日期是当前日期的前2天
 | 
				
			||||||
//   console.log('diffDays', diffDays, days)
 | 
					  console.log('diffDays', diffDays, days)
 | 
				
			||||||
//   return diffDays >= (Number(days));
 | 
					  return diffDays >= (Number(days));
 | 
				
			||||||
// }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// export async function writeLog(path,param){
 | 
					// export async function writeLog(path,param){
 | 
				
			||||||
//   return
 | 
					//   return
 | 
				
			||||||
@ -61,15 +62,15 @@ export function dateFormat(t) {
 | 
				
			|||||||
  return year + "-" + fill(month) + "-" + fill(day) + " " + fill(hours) + ":" + fill(minutes) + ":" + fill(seconds);
 | 
					  return year + "-" + fill(month) + "-" + fill(day) + " " + fill(hours) + ":" + fill(minutes) + ":" + fill(seconds);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// export function dateVersionFormat(t) {
 | 
					export function dateVersionFormat(t) {
 | 
				
			||||||
//   let year = t.getFullYear()
 | 
					  let year = t.getFullYear()
 | 
				
			||||||
//   let month = t.getMonth() + 1
 | 
					  let month = t.getMonth() + 1
 | 
				
			||||||
//   let day = t.getDate()
 | 
					  let day = t.getDate()
 | 
				
			||||||
//   let hours = t.getHours()
 | 
					  let hours = t.getHours()
 | 
				
			||||||
//   let minutes = t.getMinutes()
 | 
					  let minutes = t.getMinutes()
 | 
				
			||||||
//   let seconds = t.getSeconds()
 | 
					  let seconds = t.getSeconds()
 | 
				
			||||||
//   return year + "." + fill(month) + "." + fill(day) + "." + fill(hours);
 | 
					  return year + "." + fill(month) + "." + fill(day) + "." + fill(hours);
 | 
				
			||||||
// }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//同步时时间
 | 
					//同步时时间
 | 
				
			||||||
@ -133,40 +134,40 @@ export async function getCurrentTime(type?: timeType): Promise<string> {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//获取时分秒毫秒
 | 
					//获取时分秒毫秒
 | 
				
			||||||
// export async function getCurrentHourTime(): Promise<string> {
 | 
					export async function getCurrentHourTime(): Promise<string> {
 | 
				
			||||||
//
 | 
					
 | 
				
			||||||
//   const date = await systemTime.getDate();
 | 
					  const date = await systemTime.getDate();
 | 
				
			||||||
//   const year = date.getFullYear();
 | 
					  const year = date.getFullYear();
 | 
				
			||||||
//   let month = date.getMonth() + 1;
 | 
					  let month = date.getMonth() + 1;
 | 
				
			||||||
//   let h = date.getHours();
 | 
					  let h = date.getHours();
 | 
				
			||||||
//   h = h < 10 ? '0' + h : h;
 | 
					  h = h < 10 ? '0' + h : h;
 | 
				
			||||||
//   let m = date.getMinutes();
 | 
					  let m = date.getMinutes();
 | 
				
			||||||
//   m = m < 10 ? '0' + m : m;
 | 
					  m = m < 10 ? '0' + m : m;
 | 
				
			||||||
//   let s = date.getSeconds();
 | 
					  let s = date.getSeconds();
 | 
				
			||||||
//   s = s < 10 ? '0' + s : s;
 | 
					  s = s < 10 ? '0' + s : s;
 | 
				
			||||||
//   let ss = date.getMilliseconds();
 | 
					  let ss = date.getMilliseconds();
 | 
				
			||||||
//   let nowSS = ''
 | 
					  let nowSS = ''
 | 
				
			||||||
//   if (ss < 10) {
 | 
					  if (ss < 10) {
 | 
				
			||||||
//     nowSS = '00' + ss
 | 
					    nowSS = '00' + ss
 | 
				
			||||||
//   }
 | 
					  }
 | 
				
			||||||
//   if (ss >= 10 && ss < 100) {
 | 
					  if (ss >= 10 && ss < 100) {
 | 
				
			||||||
//     nowSS = '0' + s
 | 
					    nowSS = '0' + s
 | 
				
			||||||
//   }
 | 
					  }
 | 
				
			||||||
//   return `${h}${m}${s}${nowSS || ss}`
 | 
					  return `${h}${m}${s}${nowSS || ss}`
 | 
				
			||||||
// }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//时间戳转日期
 | 
					//时间戳转日期
 | 
				
			||||||
// export function formatTime(time: number): string {
 | 
					export function formatTime(time: number): string {
 | 
				
			||||||
//   const h = parseInt(time / 3600)
 | 
					  const h = parseInt(time / 3600)
 | 
				
			||||||
//   const minute = parseInt(time / 60 % 60)
 | 
					  const minute = parseInt(time / 60 % 60)
 | 
				
			||||||
//   const second = Math.ceil(time % 60)
 | 
					  const second = Math.ceil(time % 60)
 | 
				
			||||||
//
 | 
					
 | 
				
			||||||
//   const hours = h < 10 ? '0' + h : h
 | 
					  const hours = h < 10 ? '0' + h : h
 | 
				
			||||||
//   const formatSecond = second > 59 ? 59 : second
 | 
					  const formatSecond = second > 59 ? 59 : second
 | 
				
			||||||
//   return `${hours > 0 ? `${hours}:` : `${hours}:`}${minute < 10 ? '0' + minute : minute}:${formatSecond < 10 ?
 | 
					  return `${hours > 0 ? `${hours}:` : `${hours}:`}${minute < 10 ? '0' + minute : minute}:${formatSecond < 10 ?
 | 
				
			||||||
//     '0' + formatSecond : formatSecond}`
 | 
					    '0' + formatSecond : formatSecond}`
 | 
				
			||||||
//
 | 
					
 | 
				
			||||||
// }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 根据指定个数分割数组
 | 
					// 根据指定个数分割数组
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,3 @@
 | 
				
			|||||||
export const DbTag = '[DBTag]';
 | 
					export const DbTag = '[DBTag]';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const SerialPortTag = '[SerialPortTag]';
 | 
					export const SerialPortTag = '[SerialPortTag]';
 | 
				
			||||||
 | 
					 | 
				
			||||||
// usb tag
 | 
					 | 
				
			||||||
export const UsbTag = '[UsbTag]';
 | 
					 | 
				
			||||||
@ -46,7 +46,6 @@ import {
 | 
				
			|||||||
  User
 | 
					  User
 | 
				
			||||||
} from '../model';
 | 
					} from '../model';
 | 
				
			||||||
import { GetSyncData } from '../utils/table/Operation';
 | 
					import { GetSyncData } from '../utils/table/Operation';
 | 
				
			||||||
import dayTs from '../utils/Date';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Entry
 | 
					@Entry
 | 
				
			||||||
@Component
 | 
					@Component
 | 
				
			||||||
@ -163,8 +162,8 @@ struct Index {
 | 
				
			|||||||
    this.singlePlay = AppStorage.get('singlePlay')
 | 
					    this.singlePlay = AppStorage.get('singlePlay')
 | 
				
			||||||
    this.startTime = time.split(' ')[1]
 | 
					    this.startTime = time.split(' ')[1]
 | 
				
			||||||
    this.startFullTime = await getCurrentTime(1);
 | 
					    this.startFullTime = await getCurrentTime(1);
 | 
				
			||||||
    // this.startHourTime = await getCurrentHourTime()
 | 
					    this.startHourTime = await getCurrentHourTime()
 | 
				
			||||||
    this.startTime = dayTs().format("HHmmssSSS")
 | 
					
 | 
				
			||||||
    this.startExamTime = time
 | 
					    this.startExamTime = time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    setInterval(async () => {
 | 
					    setInterval(async () => {
 | 
				
			||||||
@ -709,11 +708,10 @@ struct Index {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                Row() {
 | 
					                Row() {
 | 
				
			||||||
                  Text('考试用时:').fontColor('#E5CCA1').fontSize(this.FONTSIZE)
 | 
					                  Text('考试用时:').fontColor('#E5CCA1').fontSize(this.FONTSIZE)
 | 
				
			||||||
                  // Text(formatTime(this.examTime)).fontColor('#FFF').fontSize(this.FONTSIZE)
 | 
					                  Text(formatTime(this.examTime)).fontColor('#FFF').fontSize(this.FONTSIZE)
 | 
				
			||||||
                  Text(dayTs(this.examTime).format("YYYY-MM-DD HH:mm:ss")).fontColor('#FFF').fontSize(this.FONTSIZE)
 | 
					 | 
				
			||||||
                }.margin({ bottom: 10 })
 | 
					                }.margin({ bottom: 10 })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (this.examSubject == "3") {
 | 
					                if (this.examSubject == 3) {
 | 
				
			||||||
                  Row() {
 | 
					                  Row() {
 | 
				
			||||||
                    if (this.judgeConfigObj['375'] == '0') {
 | 
					                    if (this.judgeConfigObj['375'] == '0') {
 | 
				
			||||||
                      Text(`应行驶:${this.examMileage}m`)
 | 
					                      Text(`应行驶:${this.examMileage}m`)
 | 
				
			||||||
 | 
				
			|||||||
@ -40,7 +40,6 @@ import {
 | 
				
			|||||||
import { BusinessError } from '@ohos.base';
 | 
					import { BusinessError } from '@ohos.base';
 | 
				
			||||||
import { GetSyncData } from '../utils/table/Operation';
 | 
					import { GetSyncData } from '../utils/table/Operation';
 | 
				
			||||||
import { GetCurrentUserKeyValue } from './UserInfo/utils';
 | 
					import { GetCurrentUserKeyValue } from './UserInfo/utils';
 | 
				
			||||||
import dayTs from '../utils/Date';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Entry
 | 
					@Entry
 | 
				
			||||||
@Component
 | 
					@Component
 | 
				
			||||||
@ -1005,8 +1004,7 @@ struct UserInfo {
 | 
				
			|||||||
  async beginExam(): Promise<BeginExamRequest> {
 | 
					  async beginExam(): Promise<BeginExamRequest> {
 | 
				
			||||||
    // const { examSubject, plateNo } = this.carInfo;
 | 
					    // const { examSubject, plateNo } = this.carInfo;
 | 
				
			||||||
    const date = new Date()
 | 
					    const date = new Date()
 | 
				
			||||||
    // const startHourTime = await getCurrentHourTime()
 | 
					    const startHourTime = await getCurrentHourTime()
 | 
				
			||||||
    const startHourTime = dayTs().format("HHmmssSSS")
 | 
					 | 
				
			||||||
    AppStorage.setOrCreate('startHourTime', startHourTime)
 | 
					    AppStorage.setOrCreate('startHourTime', startHourTime)
 | 
				
			||||||
    const photoBase64 = await this.getPhoto();
 | 
					    const photoBase64 = await this.getPhoto();
 | 
				
			||||||
    if (photoBase64 == '') {
 | 
					    if (photoBase64 == '') {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										120
									
								
								entry/src/main/ets/service/usbService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								entry/src/main/ets/service/usbService.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,120 @@
 | 
				
			|||||||
 | 
					// 导入USB接口api包。
 | 
				
			||||||
 | 
					import usb from '@ohos.usbManager';
 | 
				
			||||||
 | 
					const LOGTAG = 'USBSERVICES'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//字符串转字节
 | 
				
			||||||
 | 
					function stringToArr(str){
 | 
				
			||||||
 | 
					  var arr = [];
 | 
				
			||||||
 | 
					  for (var i = 0, j = str.length; i < j; ++i) {
 | 
				
			||||||
 | 
					    arr.push(str.charCodeAt(i));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return arr
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//plc数据转成无锡科研所usb字节数据
 | 
				
			||||||
 | 
					function plcStrToWXCodeArr(wuXiDataStr){
 | 
				
			||||||
 | 
					  const arr = stringToArr(wuXiDataStr);
 | 
				
			||||||
 | 
					  //数据包总长度 有效长度
 | 
				
			||||||
 | 
					  let packetSize = 65,maxDataSize = 63;
 | 
				
			||||||
 | 
					  let packetArr = []
 | 
				
			||||||
 | 
					  const loop =  Math.ceil(arr.length / maxDataSize)
 | 
				
			||||||
 | 
					  for(let i = 0; i< loop; i++){
 | 
				
			||||||
 | 
					    const thisPacket = arr.slice(i * maxDataSize,(i + 1) * maxDataSize)
 | 
				
			||||||
 | 
					    const oSize = maxDataSize - thisPacket.length;
 | 
				
			||||||
 | 
					    //补齐0x00
 | 
				
			||||||
 | 
					    if(oSize > 0){
 | 
				
			||||||
 | 
					      let oSizeArr = []
 | 
				
			||||||
 | 
					      for(let j  = 0;j < oSize;j++){oSizeArr.push(0x00)}
 | 
				
			||||||
 | 
					      packetArr.push([thisPacket.length].concat(thisPacket).concat(oSizeArr));
 | 
				
			||||||
 | 
					    }else{
 | 
				
			||||||
 | 
					      packetArr.push([thisPacket.length].concat(thisPacket));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return packetArr
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class UsbService{
 | 
				
			||||||
 | 
					  private  devicepipe : usb.USBDevicePipe
 | 
				
			||||||
 | 
					  private  outEndpoint: usb.USBEndpoint
 | 
				
			||||||
 | 
					  public  isWXUSBDevice:Boolean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor() {
 | 
				
			||||||
 | 
					    //是否是无锡检测设备
 | 
				
			||||||
 | 
					    this.isWXUSBDevice = false
 | 
				
			||||||
 | 
					    this.devicepipe
 | 
				
			||||||
 | 
					    this.init()
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  init = async()=>{
 | 
				
			||||||
 | 
					    // 获取设备列表。
 | 
				
			||||||
 | 
					    let deviceList : Array<usb.USBDevice> = usb.getDevices();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    deviceList.forEach(async (device:usb.USBDevice) => {
 | 
				
			||||||
 | 
					      const {vendorId,productId} = device;
 | 
				
			||||||
 | 
					      console.log(LOGTAG,JSON.stringify(device));
 | 
				
			||||||
 | 
					      //无锡所检测设备接入
 | 
				
			||||||
 | 
					      if(vendorId === 6790 && productId === 58409){
 | 
				
			||||||
 | 
					        // if(vendorId === 2385 && productId === 5734){
 | 
				
			||||||
 | 
					        // 申请操作指定的device的操作权限。
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					          let bool = usb.hasRight(device.name);
 | 
				
			||||||
 | 
					          console.info(LOGTAG,'bool =>' + bool)
 | 
				
			||||||
 | 
					          const isExit = await usb.requestRight(device.name);
 | 
				
			||||||
 | 
					          console.info(LOGTAG,'isExit =>' + isExit)
 | 
				
			||||||
 | 
					          if(isExit){
 | 
				
			||||||
 | 
					            let devicepipe : usb.USBDevicePipe = usb.connectDevice(device);
 | 
				
			||||||
 | 
					            let interfaces = device.configs[0].interfaces[0];
 | 
				
			||||||
 | 
					            let ret = usb.claimInterface(devicepipe, interfaces,true);
 | 
				
			||||||
 | 
					            console.info(LOGTAG,'ret =>' + ret);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(ret === 0 ){
 | 
				
			||||||
 | 
					              let outEndpoint : usb.USBEndpoint = interfaces.endpoints[1];
 | 
				
			||||||
 | 
					              let inEndpoint : usb.USBEndpoint = interfaces.endpoints[0];
 | 
				
			||||||
 | 
					              this.isWXUSBDevice = true;
 | 
				
			||||||
 | 
					              this.devicepipe = devicepipe
 | 
				
			||||||
 | 
					              this.outEndpoint = outEndpoint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }else{
 | 
				
			||||||
 | 
					              console.info(LOGTAG,'usb claimInterface failed')
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          }else{
 | 
				
			||||||
 | 
					            console.info(LOGTAG,'isExit =>' +'false')
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } catch (e) {
 | 
				
			||||||
 | 
					          console.info(LOGTAG,'e=>' + JSON.stringify(e))
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sendUSB =async (wuXiDataStr) => {
 | 
				
			||||||
 | 
					    console.info(LOGTAG,'正在发送数据')
 | 
				
			||||||
 | 
					    const {devicepipe,isWXUSBDevice,outEndpoint} = this;
 | 
				
			||||||
 | 
					    console.info(LOGTAG,'正在发送数据')
 | 
				
			||||||
 | 
					    if(isWXUSBDevice){
 | 
				
			||||||
 | 
					      console.info(LOGTAG,wuXiDataStr)
 | 
				
			||||||
 | 
					      const codeArr = plcStrToWXCodeArr(wuXiDataStr);
 | 
				
			||||||
 | 
					      for(let i = 0; i < codeArr.length;i++){
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					          console.info(LOGTAG,'正在发送数据')
 | 
				
			||||||
 | 
					          const f = await usb.bulkTransfer(devicepipe, outEndpoint, new Uint8Array(codeArr[i]))
 | 
				
			||||||
 | 
					          console.info(LOGTAG,'发送成功数据长度为:' + f)
 | 
				
			||||||
 | 
					        } catch (e) {
 | 
				
			||||||
 | 
					          console.info(LOGTAG,JSON.stringify(e))
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }else{
 | 
				
			||||||
 | 
					      console.info(LOGTAG,'usb设备初始化失败')
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// export default initUsbServicesFn
 | 
				
			||||||
@ -1,13 +1,13 @@
 | 
				
			|||||||
import photoAccessHelper from '@ohos.file.photoAccessHelper';
 | 
					import photoAccessHelper from '@ohos.file.photoAccessHelper';
 | 
				
			||||||
import dataSharePredicates from '@ohos.data.dataSharePredicates';
 | 
					import dataSharePredicates from '@ohos.data.dataSharePredicates';
 | 
				
			||||||
import { dateFormat, getCurrentTime } from '../common/utils/tools';
 | 
					import { dateFormat, getCurrentTime, isSevenDaysAgo } from '../common/utils/tools';
 | 
				
			||||||
 | 
					// import rtsp_server from '@ohos.rtsprecord';
 | 
				
			||||||
import record from '@ohos.rtsprecord';
 | 
					import record from '@ohos.rtsprecord';
 | 
				
			||||||
import { FileHelper } from '../common/service/FileHelper';
 | 
					import { FileHelper } from '../common/service/FileHelper';
 | 
				
			||||||
import FileUtil from '../common/utils/File';
 | 
					import FileUtil from '../common/utils/File';
 | 
				
			||||||
import { GlobalConfig } from '../config';
 | 
					import { GlobalConfig } from '../config';
 | 
				
			||||||
import promptAction from '@ohos.promptAction';
 | 
					import promptAction from '@ohos.promptAction';
 | 
				
			||||||
import common from '@ohos.app.ability.common';
 | 
					import common from '@ohos.app.ability.common';
 | 
				
			||||||
import { IsDaysAgo } from './Common';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
const rtsp_server = record.createServer();
 | 
					const rtsp_server = record.createServer();
 | 
				
			||||||
//开始录屏
 | 
					//开始录屏
 | 
				
			||||||
@ -50,6 +50,7 @@ export async function startRecordVideo(param, td, context, dir, path?, index?) {
 | 
				
			|||||||
        fileName = `${date}_${path}_${index || num}.mp4`
 | 
					        fileName = `${date}_${path}_${index || num}.mp4`
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // @ts-ignore
 | 
				
			||||||
      var recordResult = rtsp_server.startRecordVideo(context, video_uri, fileName, date, dir);
 | 
					      var recordResult = rtsp_server.startRecordVideo(context, video_uri, fileName, date, dir);
 | 
				
			||||||
      const handleId = recordResult.dataInt;
 | 
					      const handleId = recordResult.dataInt;
 | 
				
			||||||
      reslove(handleId)
 | 
					      reslove(handleId)
 | 
				
			||||||
@ -67,6 +68,7 @@ export async function endRecordVideo(record_handleObj) {
 | 
				
			|||||||
  for (let key in record_handleObj) {
 | 
					  for (let key in record_handleObj) {
 | 
				
			||||||
    if (rtsp_server != null && record_handleObj[key] > 0) {
 | 
					    if (rtsp_server != null && record_handleObj[key] > 0) {
 | 
				
			||||||
      console.log(`Rtsprecord endRecordVideo begin`);
 | 
					      console.log(`Rtsprecord endRecordVideo begin`);
 | 
				
			||||||
 | 
					      // @ts-ignore
 | 
				
			||||||
      var recordResult = rtsp_server.endRecordVideo(record_handleObj[key]);
 | 
					      var recordResult = rtsp_server.endRecordVideo(record_handleObj[key]);
 | 
				
			||||||
      console.log(`Rtsprecord endRecordVideo record_handle` + record_handleObj[key].dataInt + ` filename:` +
 | 
					      console.log(`Rtsprecord endRecordVideo record_handle` + record_handleObj[key].dataInt + ` filename:` +
 | 
				
			||||||
      record_handleObj[key].fileName);
 | 
					      record_handleObj[key].fileName);
 | 
				
			||||||
@ -142,7 +144,7 @@ export async function getUserAlbumItemByDisplayName(displayName: string, day?,
 | 
				
			|||||||
      const albums = await fetchResult.getLastObject();
 | 
					      const albums = await fetchResult.getLastObject();
 | 
				
			||||||
      console.log('get getUserAlbumItemByDisplayName album111', albums.albumName)
 | 
					      console.log('get getUserAlbumItemByDisplayName album111', albums.albumName)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (IsDaysAgo(albums.albumName, day)) {
 | 
					      if (isSevenDaysAgo(albums.albumName, day)) {
 | 
				
			||||||
        deleteAllFileByPiC(albums.albumName, type)
 | 
					        deleteAllFileByPiC(albums.albumName, type)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      console.log('get getUserAlbumItemByDisplayName album',)
 | 
					      console.log('get getUserAlbumItemByDisplayName album',)
 | 
				
			||||||
@ -202,7 +204,7 @@ export async function delPic(day: number, type: number) {
 | 
				
			|||||||
    let albumName = albums[i].albumName
 | 
					    let albumName = albums[i].albumName
 | 
				
			||||||
    // isSevenDaysAgo(albumName, day)
 | 
					    // isSevenDaysAgo(albumName, day)
 | 
				
			||||||
    console.log('albumNamealbumName', albumName)
 | 
					    console.log('albumNamealbumName', albumName)
 | 
				
			||||||
    if (IsDaysAgo(albumName, day) && albumName != 'jt' && albumName != 'pz') {
 | 
					    if (isSevenDaysAgo(albumName, day) && albumName != 'jt' && albumName != 'pz') {
 | 
				
			||||||
      deleteAllFileByPiC(albumName, type)
 | 
					      deleteAllFileByPiC(albumName, type)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -218,6 +220,7 @@ export async function takePhoto(param, context, dir, flag = 1, callback?) {
 | 
				
			|||||||
  console.log('baoyihubaoyihu', video_uri, flag)
 | 
					  console.log('baoyihubaoyihu', video_uri, flag)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  console.log(`baoyihu Rtsprecord baohaowen getVideoSnapshot fileName:` + fileName);
 | 
					  console.log(`baoyihu Rtsprecord baohaowen getVideoSnapshot fileName:` + fileName);
 | 
				
			||||||
 | 
					  // @ts-ignore
 | 
				
			||||||
  // var snapResult = rtsp_server.getVideoSnapshot(context, video_uri, '', dir);
 | 
					  // var snapResult = rtsp_server.getVideoSnapshot(context, video_uri, '', dir);
 | 
				
			||||||
  if (flag == 0) {
 | 
					  if (flag == 0) {
 | 
				
			||||||
    rtsp_server.detectVideoSnapshotSize(video_uri, fileName, (err, snapResult) => {
 | 
					    rtsp_server.detectVideoSnapshotSize(video_uri, fileName, (err, snapResult) => {
 | 
				
			||||||
@ -1,10 +1,8 @@
 | 
				
			|||||||
import media from '@ohos.multimedia.media';
 | 
					import media from '@ohos.multimedia.media';
 | 
				
			||||||
import { BusinessError } from '@ohos.base';
 | 
					import App from '@system.app';
 | 
				
			||||||
 | 
					 | 
				
			||||||
type AVPlayerCallback = (status: string, val?: string) => void;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class voiceService {
 | 
					export class voiceService {
 | 
				
			||||||
  private avPlayer: media.AVPlayer = null;
 | 
					  private avPlayer: any = null;
 | 
				
			||||||
  private fileSize: number = -1;
 | 
					  private fileSize: number = -1;
 | 
				
			||||||
  private fd: number = 0;
 | 
					  private fd: number = 0;
 | 
				
			||||||
  private playerName: string = '';
 | 
					  private playerName: string = '';
 | 
				
			||||||
@ -12,7 +10,7 @@ export class voiceService {
 | 
				
			|||||||
  private endFlag: Boolean = false;
 | 
					  private endFlag: Boolean = false;
 | 
				
			||||||
  private mediaArray: Array<any> = [];
 | 
					  private mediaArray: Array<any> = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(callBack: AVPlayerCallback) {
 | 
					  constructor(callBack) {
 | 
				
			||||||
    // 创建avPlayer实例对象
 | 
					    // 创建avPlayer实例对象
 | 
				
			||||||
    media.createAVPlayer().then(video => {
 | 
					    media.createAVPlayer().then(video => {
 | 
				
			||||||
      this.avPlayer = video
 | 
					      this.avPlayer = video
 | 
				
			||||||
@ -23,11 +21,11 @@ export class voiceService {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 注册avplayer回调函数
 | 
					  // 注册avplayer回调函数
 | 
				
			||||||
  setAVPlayerCallback(callBack: AVPlayerCallback) {
 | 
					  setAVPlayerCallback(callBack) {
 | 
				
			||||||
    console.log('jiangsong avPlayerFdSrc setAVPlayerCallback begin')
 | 
					    console.log('jiangsong avPlayerFdSrc setAVPlayerCallback begin')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // error回调监听函数,当avPlayer在操作过程中出现错误时调用reset接口触发重置流程
 | 
					    // error回调监听函数,当avPlayer在操作过程中出现错误时调用reset接口触发重置流程
 | 
				
			||||||
    this.avPlayer.on('error', (err: BusinessError) => {
 | 
					    this.avPlayer.on('error', (err) => {
 | 
				
			||||||
      console.error(`Invoke avPlayer failed, code is ${err.code}, message is ${err.message}`);
 | 
					      console.error(`Invoke avPlayer failed, code is ${err.code}, message is ${err.message}`);
 | 
				
			||||||
      this.avPlayer.reset(); // 调用reset重置资源,触发idle状态
 | 
					      this.avPlayer.reset(); // 调用reset重置资源,触发idle状态
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
@ -54,7 +52,7 @@ export class voiceService {
 | 
				
			|||||||
          console.info('jiangsong AVPlayerstate initialized called.');
 | 
					          console.info('jiangsong AVPlayerstate initialized called.');
 | 
				
			||||||
          this.avPlayer.prepare().then(() => {
 | 
					          this.avPlayer.prepare().then(() => {
 | 
				
			||||||
            console.info('jiangsong AVPlayer prepare succeeded.');
 | 
					            console.info('jiangsong AVPlayer prepare succeeded.');
 | 
				
			||||||
          }, (err: BusinessError) => {
 | 
					          }, (err) => {
 | 
				
			||||||
            console.error(`jiangsong Invoke prepare failed, code is ${err.code}, message is ${err.message}`);
 | 
					            console.error(`jiangsong Invoke prepare failed, code is ${err.code}, message is ${err.message}`);
 | 
				
			||||||
          });
 | 
					          });
 | 
				
			||||||
          callBack('initialized');
 | 
					          callBack('initialized');
 | 
				
			||||||
@ -4,7 +4,6 @@ enum timeType {
 | 
				
			|||||||
  fulltime = 1
 | 
					  fulltime = 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 获取当前时间
 | 
					 | 
				
			||||||
export function GetCurrentTime(type?: timeType): string {
 | 
					export function GetCurrentTime(type?: timeType): string {
 | 
				
			||||||
  if (type === 1) {
 | 
					  if (type === 1) {
 | 
				
			||||||
    return dayTs().format("YYYYMMDDHHmmss")
 | 
					    return dayTs().format("YYYYMMDDHHmmss")
 | 
				
			||||||
@ -12,26 +11,3 @@ export function GetCurrentTime(type?: timeType): string {
 | 
				
			|||||||
    return dayTs().format("YYYY-MM-DD HH:mm:ss")
 | 
					    return dayTs().format("YYYY-MM-DD HH:mm:ss")
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
//是否是多少天前
 | 
					 | 
				
			||||||
export function IsDaysAgo(date: string | number | Date, days: number = 2): boolean {
 | 
					 | 
				
			||||||
  const today = dayTs(); // 当前日期
 | 
					 | 
				
			||||||
  const target = dayTs(date).format("YYYY-MM-DD HH:mm:ss.SSS"); // 需要判断的日期
 | 
					 | 
				
			||||||
  // 计算两个日期之间的差异天数
 | 
					 | 
				
			||||||
  const diffDays = today.diff(target, 'day');
 | 
					 | 
				
			||||||
  // 如果差异天数大于等于指定天数,则返回 true
 | 
					 | 
				
			||||||
  return diffDays >= days;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 字符串转字节数组
 | 
					 | 
				
			||||||
 * @param str
 | 
					 | 
				
			||||||
 * @returns
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
export function StringToBytes(str: string): Uint8Array {
 | 
					 | 
				
			||||||
  const bytes = new Uint8Array(str.length);
 | 
					 | 
				
			||||||
  for (let i = 0; i < str.length; i++) {
 | 
					 | 
				
			||||||
    bytes[i] = str.charCodeAt(i);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  return bytes;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,119 +0,0 @@
 | 
				
			|||||||
// 导入USB接口api包。
 | 
					 | 
				
			||||||
import usb from '@ohos.usbManager';
 | 
					 | 
				
			||||||
import { UsbTag } from '../config';
 | 
					 | 
				
			||||||
import { StringToBytes } from './Common';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//plc数据转成无锡科研所usb字节数据
 | 
					 | 
				
			||||||
function plcStrToWXCodeArr(wuXiDataStr: string) {
 | 
					 | 
				
			||||||
  // const arr = stringToArr(wuXiDataStr);
 | 
					 | 
				
			||||||
  const arr = StringToBytes(wuXiDataStr);
 | 
					 | 
				
			||||||
  // 数据包总长度和有效长度
 | 
					 | 
				
			||||||
  const maxDataSize: number = 63;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // 存储所有数据包的数组
 | 
					 | 
				
			||||||
  const packetArr: number[][] = [];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // 计算需要的数据包数量
 | 
					 | 
				
			||||||
  const loop: number = Math.ceil(arr.length / maxDataSize);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  for (let i = 0; i < loop; i++) {
 | 
					 | 
				
			||||||
    // 截取当前数据包的数据
 | 
					 | 
				
			||||||
    const thisPacket: number[] = Array.from(arr.slice(i * maxDataSize, (i + 1) * maxDataSize));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 计算需要补齐的长度
 | 
					 | 
				
			||||||
    const oSize: number = maxDataSize - thisPacket.length;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 创建当前数据包
 | 
					 | 
				
			||||||
    const packet: number[] = [thisPacket.length, ...thisPacket];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 如果需要补齐,则填充 0x00
 | 
					 | 
				
			||||||
    if (oSize > 0) {
 | 
					 | 
				
			||||||
      packet.push(...new Array(oSize).fill(0x00));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 将当前数据包添加到结果数组中
 | 
					 | 
				
			||||||
    packetArr.push(packet);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return packetArr;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default class UsbService {
 | 
					 | 
				
			||||||
  public isWXUSBDevice: Boolean
 | 
					 | 
				
			||||||
  private devicepipe: usb.USBDevicePipe
 | 
					 | 
				
			||||||
  private outEndpoint: usb.USBEndpoint
 | 
					 | 
				
			||||||
  sendUSB = async (wuXiDataStr: string) => {
 | 
					 | 
				
			||||||
    console.info(UsbTag, '正在发送数据')
 | 
					 | 
				
			||||||
    console.info(UsbTag, '正在发送数据')
 | 
					 | 
				
			||||||
    if (this.isWXUSBDevice) {
 | 
					 | 
				
			||||||
      console.info(UsbTag, wuXiDataStr)
 | 
					 | 
				
			||||||
      const codeArr = plcStrToWXCodeArr(wuXiDataStr);
 | 
					 | 
				
			||||||
      for (let i = 0; i < codeArr.length; i++) {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
          console.info(UsbTag, '正在发送数据')
 | 
					 | 
				
			||||||
          const f = await usb.bulkTransfer(this.devicepipe, this.outEndpoint, new Uint8Array(codeArr[i]))
 | 
					 | 
				
			||||||
          console.info(UsbTag, '发送成功数据长度为:' + f)
 | 
					 | 
				
			||||||
        } catch (e) {
 | 
					 | 
				
			||||||
          console.info(UsbTag, JSON.stringify(e))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      console.info(UsbTag, 'usb设备初始化失败')
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  init = async () => {
 | 
					 | 
				
			||||||
    // 获取设备列表。
 | 
					 | 
				
			||||||
    let deviceList: Array<usb.USBDevice> = usb.getDevices();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    deviceList.forEach(async (device: usb.USBDevice) => {
 | 
					 | 
				
			||||||
      console.log(UsbTag, JSON.stringify(device));
 | 
					 | 
				
			||||||
      //无锡所检测设备接入
 | 
					 | 
				
			||||||
      if (device.vendorId === 6790 && device.productId === 58409) {
 | 
					 | 
				
			||||||
        // if(vendorId === 2385 && productId === 5734){
 | 
					 | 
				
			||||||
        // 申请操作指定的device的操作权限。
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
          let bool = usb.hasRight(device.name);
 | 
					 | 
				
			||||||
          console.info(UsbTag, 'bool =>' + bool)
 | 
					 | 
				
			||||||
          const isExit = await usb.requestRight(device.name);
 | 
					 | 
				
			||||||
          console.info(UsbTag, 'isExit =>' + isExit)
 | 
					 | 
				
			||||||
          if (isExit) {
 | 
					 | 
				
			||||||
            let devicepipe: usb.USBDevicePipe = usb.connectDevice(device);
 | 
					 | 
				
			||||||
            let interfaces = device.configs[0].interfaces[0];
 | 
					 | 
				
			||||||
            let ret = usb.claimInterface(devicepipe, interfaces, true);
 | 
					 | 
				
			||||||
            console.info(UsbTag, 'ret =>' + ret);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (ret === 0) {
 | 
					 | 
				
			||||||
              let outEndpoint: usb.USBEndpoint = interfaces.endpoints[1];
 | 
					 | 
				
			||||||
              this.isWXUSBDevice = true;
 | 
					 | 
				
			||||||
              this.devicepipe = devicepipe
 | 
					 | 
				
			||||||
              this.outEndpoint = outEndpoint
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
              console.info(UsbTag, 'usb claimInterface failed')
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          } else {
 | 
					 | 
				
			||||||
            console.info(UsbTag, 'isExit =>' + 'false')
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } catch (e) {
 | 
					 | 
				
			||||||
          console.info(UsbTag, 'e=>' + JSON.stringify(e))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  constructor() {
 | 
					 | 
				
			||||||
    //是否是无锡检测设备
 | 
					 | 
				
			||||||
    this.isWXUSBDevice = false
 | 
					 | 
				
			||||||
    this.devicepipe
 | 
					 | 
				
			||||||
    this.init()
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// export default initUsbServicesFn
 | 
					 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user