feat:usb调试
This commit is contained in:
parent
711e031fec
commit
489b470e83
@ -1,15 +1,9 @@
|
|||||||
// 导入USB接口api包。
|
// 导入USB接口api包。
|
||||||
import usb from '@ohos.usbManager';
|
import usb from '@ohos.usbManager';
|
||||||
|
const LOGTAG = 'USBSERVICES'
|
||||||
|
|
||||||
function stringToUint8Array(str){
|
|
||||||
var arr = [];
|
|
||||||
for (var i = 0, j = str.length; i < j; ++i) {
|
|
||||||
arr.push(str.charCodeAt(i));
|
|
||||||
}
|
|
||||||
var tmpUint8Array = new Uint8Array(arr);
|
|
||||||
return tmpUint8Array
|
|
||||||
}
|
|
||||||
|
|
||||||
|
//字符串转字节
|
||||||
function stringToArr(str){
|
function stringToArr(str){
|
||||||
var arr = [];
|
var arr = [];
|
||||||
for (var i = 0, j = str.length; i < j; ++i) {
|
for (var i = 0, j = str.length; i < j; ++i) {
|
||||||
@ -18,61 +12,81 @@ function stringToArr(str){
|
|||||||
return arr
|
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(0)}
|
||||||
|
// packetArr.push([0,thisPacket.length].concat(thisPacket).concat(oSizeArr));
|
||||||
|
}else{
|
||||||
|
packetArr.push([thisPacket.length].concat(thisPacket));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return packetArr
|
||||||
|
}
|
||||||
|
|
||||||
const initUsbServicesFn = () => {
|
const initUsbServicesFn = () => {
|
||||||
// 获取设备列表。
|
// 获取设备列表。
|
||||||
let deviceList : Array<usb.USBDevice> = usb.getDevices();
|
let deviceList : Array<usb.USBDevice> = usb.getDevices();
|
||||||
|
|
||||||
deviceList.forEach(async (device:usb.USBDevice) => {
|
deviceList.forEach(async (device:usb.USBDevice) => {
|
||||||
const {vendorId,productId} = device;
|
const {vendorId,productId} = device;
|
||||||
console.log('surenjun',JSON.stringify(device));
|
console.log(LOGTAG,JSON.stringify(device));
|
||||||
|
|
||||||
//无锡所检测设备接入
|
//无锡所检测设备接入
|
||||||
if(vendorId === 6790 && productId === 58409){
|
if(vendorId === 6790 && productId === 58409){
|
||||||
// if(vendorId === 2385 && productId === 5734){
|
// if(vendorId === 2385 && productId === 5734){
|
||||||
// 申请操作指定的device的操作权限。
|
// 申请操作指定的device的操作权限。
|
||||||
try {
|
try {
|
||||||
|
let bool = usb.hasRight(device.name);
|
||||||
|
console.info(LOGTAG,'bool =>' + bool)
|
||||||
const isExit = await usb.requestRight(device.name);
|
const isExit = await usb.requestRight(device.name);
|
||||||
console.info('surenjun',isExit)
|
console.info(LOGTAG,'isExit =>' + isExit)
|
||||||
if(isExit){
|
if(isExit){
|
||||||
let devicepipe : usb.USBDevicePipe = usb.connectDevice(device);
|
let devicepipe : usb.USBDevicePipe = usb.connectDevice(device);
|
||||||
let interfaces = device.configs[0].interfaces[0];
|
let interfaces = device.configs[0].interfaces[0];
|
||||||
let ret = usb.claimInterface(devicepipe, interfaces,true);
|
let ret = usb.claimInterface(devicepipe, interfaces,true);
|
||||||
console.info('surenjun',ret);
|
console.info(LOGTAG,'ret =>' + ret);
|
||||||
|
|
||||||
if(ret === 0 ){
|
if(ret === 0 ){
|
||||||
let outEndpoint : usb.USBEndpoint = interfaces.endpoints[0];
|
let outEndpoint : usb.USBEndpoint = interfaces.endpoints[1];
|
||||||
const outputData = new Uint8Array(65); // 要发送的数据包
|
let inEndpoint : usb.USBEndpoint = interfaces.endpoints[0];
|
||||||
setInterval(()=>{
|
setInterval(async ()=>{
|
||||||
const wuXiDataStr = '$KSXT,20240320134841021,118.27269490,32.20290610,46.5220,190.31,0.13,0,5,0.00,3,3,25,20,0,0,0,0,0,0,E046,0081,1308,0xFFFFFFFF*';
|
const wuXiDataStr = '$KSXT,20240320134841021,118.27269490,32.20290610,46.5220,190.31,0.13,0,5,0.00,3,3,25,20,0,0,0,0,0,0,E046,0081,1308,0xFFFFFFFF*';
|
||||||
// const wuXiDataStr = '$KSXT,19700101091317.10,117.13159937,31.80907367,24.973,269.4,0.91,,11.232,,4,,,,,,,,,,0005,0001,816,0xFFFFFFF'
|
const codeArr = plcStrToWXCodeArr(wuXiDataStr);
|
||||||
const arr = stringToArr(wuXiDataStr);
|
// console.info(LOGTAG,firstArr)
|
||||||
const firstArr = [0x00,63].concat(arr.slice(0,63));
|
// console.info(LOGTAG,secondArr)
|
||||||
const secondArr = [0x00,62].concat(arr.slice(64,127)).concat([0x00]);
|
|
||||||
// $KSXT,19700101091317.10,117.13159937,31.80907367,24.973,269.4,0.91,,11.232,,4,,,,,,,,,,00017,0010,816,0xFFFFFFF
|
for(let i = 0; i < codeArr.length;i++){
|
||||||
// $KSXT,20190719020615.80,117.12960038,31.80900947,23.8370,89.50,1.96,89.90,33.623,0.00,3,3,33,32,-1192.153,-2413.781,-30.162,,,,1.10,1.0,*BB
|
try {
|
||||||
if(wuXiDataStr){
|
console.info(LOGTAG,codeArr[i])
|
||||||
// 发送数据,在device信息中选取对应数据发送的endpoint来做数据传输。(endpoint.direction == 0)
|
const f = await usb.bulkTransfer(devicepipe, outEndpoint, new Uint8Array(codeArr[i]))
|
||||||
console.info('surenjun',firstArr.join(','))
|
console.info(LOGTAG,f)
|
||||||
let buffer = new Uint8Array(128);
|
} catch (e) {
|
||||||
usb.bulkTransfer(devicepipe, outEndpoint, buffer).then((dataLength : number) => {
|
console.info(LOGTAG,JSON.stringify(e))
|
||||||
if (dataLength >= 0) {
|
|
||||||
console.info("surenjun usb writeData result write length : " + dataLength);
|
|
||||||
} else {
|
|
||||||
console.info("surenjun writeData failed");
|
|
||||||
}
|
}
|
||||||
}).catch((error) => {
|
|
||||||
console.info(" surenjunusb writeData error : " + JSON.stringify(error));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
},200)
|
},2000)
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
console.info('surenjun','usb claimInterface failed')
|
console.info(LOGTAG,'usb claimInterface failed')
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
}else{
|
||||||
|
console.info(LOGTAG,'isExit =>' +'false')
|
||||||
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.info(LOGTAG,'e=>' + JSON.stringify(e))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -80,4 +94,5 @@ const initUsbServicesFn = () => {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default initUsbServicesFn
|
export default initUsbServicesFn
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user