对讲视频图片数据接收渲染
This commit is contained in:
parent
c2823155b4
commit
adcb097205
@ -20,22 +20,23 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return SizedBox(
|
||||||
width: 1.sw,
|
width: 1.sw,
|
||||||
height: 1.sh,
|
height: 1.sh,
|
||||||
color: Colors.white,
|
// color: Colors.transparent,
|
||||||
child: Column(
|
child: Stack(
|
||||||
children: [
|
|
||||||
Stack(
|
|
||||||
// alignment: Alignment.bottomCenter,
|
// alignment: Alignment.bottomCenter,
|
||||||
children: [
|
children: [
|
||||||
state.listData.value.isEmpty ? Image.asset("images/icon_test20231113.png", width: 1.sw, height: 1.sh, fit: BoxFit.cover) :
|
// state.listData.value.isEmpty ? Image.asset("images/icon_test20231113.png", width: 1.sw, height: 1.sh, fit: BoxFit.cover) :
|
||||||
Image.memory(
|
Obx(() =>
|
||||||
Uint8List.fromList(state.listData.value),
|
state.listData.value.isEmpty
|
||||||
width: 1.sw,
|
? Container(color: Colors.red)
|
||||||
height: 1.sh,
|
:Image.memory(
|
||||||
fit: BoxFit.cover,
|
Uint8List.fromList(state.listData.value),
|
||||||
),
|
width: 1.sw,
|
||||||
|
height: 1.sh,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
)),
|
||||||
Positioned(
|
Positioned(
|
||||||
top: ScreenUtil().statusBarHeight + 30.h,
|
top: ScreenUtil().statusBarHeight + 30.h,
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
@ -79,8 +80,6 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
|
|||||||
))
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,8 @@
|
|||||||
|
|
||||||
|
|
||||||
import '../../../../tools/baseGetXController.dart';
|
import '../../../../tools/baseGetXController.dart';
|
||||||
import '../../../../tools/storage.dart';
|
import '../../../../tools/storage.dart';
|
||||||
import 'demoModeLockDetail_state.dart';
|
|
||||||
|
|
||||||
class DemoModeLockDetailLogic extends BaseGetXController {
|
class DemoModeLockDetailLogic extends BaseGetXController {
|
||||||
DemoModeLockDetailState state = DemoModeLockDetailState();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
|
|||||||
@ -19,7 +19,7 @@ class DemoModeLockDetailPage extends StatefulWidget {
|
|||||||
|
|
||||||
class _DemoModeLockDetailPageState extends State<DemoModeLockDetailPage> {
|
class _DemoModeLockDetailPageState extends State<DemoModeLockDetailPage> {
|
||||||
final logic = Get.put(DemoModeLockDetailLogic());
|
final logic = Get.put(DemoModeLockDetailLogic());
|
||||||
final state = Get.find<DemoModeLockDetailLogic>().state;
|
// final state = Get.find<DemoModeLockDetailLogic>().state;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
|||||||
@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
class DemoModeLockDetailState {
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'dart:typed_data';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:pull_to_refresh/pull_to_refresh.dart';
|
import 'package:pull_to_refresh/pull_to_refresh.dart';
|
||||||
import 'package:star_lock/talk/udp/udp_senderManage.dart';
|
import 'package:star_lock/talk/udp/udp_senderManage.dart';
|
||||||
|
|||||||
@ -1,11 +1,8 @@
|
|||||||
|
|
||||||
import '../../../../tools/baseGetXController.dart';
|
import '../../../../tools/baseGetXController.dart';
|
||||||
import 'lockAddress_state.dart';
|
|
||||||
|
|
||||||
class LockAddressLogic extends BaseGetXController {
|
class LockAddressLogic extends BaseGetXController {
|
||||||
|
|
||||||
final LockAddressState state = LockAddressState();
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
// TODO: implement onReady
|
// TODO: implement onReady
|
||||||
|
|||||||
@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
class LockAddressState {
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,9 +1,6 @@
|
|||||||
|
|
||||||
|
|
||||||
import '../tools/baseGetXController.dart';
|
import '../tools/baseGetXController.dart';
|
||||||
import 'navState.dart';
|
|
||||||
|
|
||||||
class NavLogic extends BaseGetXController {
|
class NavLogic extends BaseGetXController {
|
||||||
final NavState state = NavState();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
class NavState{
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,4 +1,5 @@
|
|||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:convert/convert.dart';
|
import 'package:convert/convert.dart';
|
||||||
import 'package:flutter_sound/flutter_sound.dart';
|
import 'package:flutter_sound/flutter_sound.dart';
|
||||||
// import 'package:just_audio/just_audio.dart';
|
// import 'package:just_audio/just_audio.dart';
|
||||||
@ -9,6 +10,7 @@ import 'package:star_lock/talk/call/iFrameInfo.dart';
|
|||||||
import '../../tools/eventBusEventManage.dart';
|
import '../../tools/eventBusEventManage.dart';
|
||||||
|
|
||||||
class CallTalk {
|
class CallTalk {
|
||||||
|
static CallTalk? _manager;
|
||||||
static int POS_iframe_index = 63;
|
static int POS_iframe_index = 63;
|
||||||
static int POS_alen = 65;
|
static int POS_alen = 65;
|
||||||
static int POS_blen = 73;
|
static int POS_blen = 73;
|
||||||
@ -19,10 +21,23 @@ class CallTalk {
|
|||||||
static int FIRSTINDEX = 1;
|
static int FIRSTINDEX = 1;
|
||||||
|
|
||||||
int status = 0; // 假设有这个成员变量
|
int status = 0; // 假设有这个成员变量
|
||||||
IframeInfo iframe = IframeInfo(); // 假设有这个成员变量
|
IframeInfo? iframe; // 假设有这个成员变量
|
||||||
|
var growableList;
|
||||||
LockMonitoringPage callOut = const LockMonitoringPage();
|
LockMonitoringPage callOut = const LockMonitoringPage();
|
||||||
late FlutterSoundPlayer _player;
|
late FlutterSoundPlayer _player;
|
||||||
|
|
||||||
|
CallTalk._init() {
|
||||||
|
iframe = IframeInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
static CallTalk _share() {
|
||||||
|
_manager ??= CallTalk._init();
|
||||||
|
return _manager!;
|
||||||
|
}
|
||||||
|
|
||||||
|
factory CallTalk() => _share();
|
||||||
|
CallTalk get manager => _share();
|
||||||
|
|
||||||
Future<void> getAVData(Uint8List bb, int len) async {
|
Future<void> getAVData(Uint8List bb, int len) async {
|
||||||
//视频数据
|
//视频数据
|
||||||
// String hexData =
|
// String hexData =
|
||||||
@ -46,44 +61,88 @@ class CallTalk {
|
|||||||
}
|
}
|
||||||
// 视频数据
|
// 视频数据
|
||||||
else {
|
else {
|
||||||
int bagLen = getShortFromByte(bb, POS_blen + 2);
|
// 音视频数据开始下标
|
||||||
int getIframeIndex = getShortFromByte(bb, POS_iframe_index);
|
var bagLen = bb[POS_blen + 2] + bb[POS_blen + 3] * 256;
|
||||||
int alen = getShortFromByte(bb, POS_alen);
|
// print('音视频数据开始下标 bagLen:$bagLen');
|
||||||
int blen = getShortFromByte(bb, POS_blen);
|
|
||||||
int getBagIndex = bb[POS_bag_index] & 0xff;
|
|
||||||
int getBagNum = bb[POS_bag_num] & 0xff;
|
|
||||||
|
|
||||||
if (getIframeIndex != iframe.iframeIndex) {
|
// 获取帧序号 63
|
||||||
|
int getIframeIndex =
|
||||||
|
bb[POS_iframe_index] + bb[POS_iframe_index + 1] * 256;
|
||||||
|
print('获取帧序号 getIframeIndex:$getIframeIndex');
|
||||||
|
// 获取帧长度 65
|
||||||
|
// int alen = bb[POS_alen] & 0xff;
|
||||||
|
// var alenList = bb.sublist(POS_alen, POS_alen + 4);
|
||||||
|
// int alen = ((0xff & alenList[(0)]) << 24 |
|
||||||
|
// (0xff & alenList[1]) << 16 |
|
||||||
|
// (0xff & alenList[2]) << 8 |
|
||||||
|
// (0xFF & alenList[3]));
|
||||||
|
// print('获取帧长度 alen:$alen');
|
||||||
|
|
||||||
|
// 当前包号 71
|
||||||
|
int getBagIndex = bb[POS_bag_index] & 0xff;
|
||||||
|
print('当前包号 getBagIndex:$getBagIndex');
|
||||||
|
// 总包数 69
|
||||||
|
int getBagNum = bb[POS_bag_num] & 0xff;
|
||||||
|
print('总包数 getBagNum:$getBagNum');
|
||||||
|
// 数据长度 73
|
||||||
|
int blen = bb[POS_blen] + bb[POS_blen + 1] * 256;
|
||||||
|
print('数据长度 blen:$blen');
|
||||||
|
|
||||||
|
// 这里判断是否是同一帧,如果不是同一帧就重新创建一个 IframeInfo
|
||||||
|
if (getIframeIndex != iframe!.iframeIndex) {
|
||||||
iframe = IframeInfo();
|
iframe = IframeInfo();
|
||||||
iframe.iframeIndex = getIframeIndex;
|
// print('11111111change getIframeIndex:$getIframeIndex ');
|
||||||
iframe.bagNum = getBagNum;
|
// print('11111111change iframe.iframeIndex: ${iframe!.iframeIndex}');
|
||||||
iframe.cur_len = alen;
|
iframe!.iframeIndex = getIframeIndex;
|
||||||
iframe.bb = Uint8List(alen);
|
iframe!.bagNum = getBagNum;
|
||||||
|
// iframe!.cur_len = alen;
|
||||||
|
// iframe!.bb = Uint8List(alen);
|
||||||
|
growableList = iframe!.bb!.toList(growable: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
iframe.bagReceive++;
|
iframe!.bagReceive++;
|
||||||
int start = bagLen * (getBagIndex - FIRSTINDEX);
|
// int start = bagLen * (getBagIndex - FIRSTINDEX);
|
||||||
int end = start + blen;
|
// int end = start + blen;
|
||||||
|
|
||||||
// 确保 iframe!.bb 不为 null,并且足够长
|
// 确保 iframe!.bb 不为 null,并且足够长
|
||||||
if (iframe.bb == null || iframe.bb!.length < end) {
|
// if (iframe.bb == null || iframe.bb!.length < end) {
|
||||||
iframe.bb = Uint8List(end);
|
// iframe.bb = Uint8List(end);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// print('22222222change getIframeIndex:$getIframeIndex ');
|
||||||
|
|
||||||
|
// 如果是同一帧就添加起来
|
||||||
|
if (getIframeIndex == iframe!.iframeIndex) {
|
||||||
|
// print('33333333change iframe.iframeIndex: ${iframe!.iframeIndex}');
|
||||||
|
var getList = bb.sublist(77, bb.length);
|
||||||
|
print('getList:${getList}');
|
||||||
|
growableList.addAll(getList);
|
||||||
|
// print('growableList: $growableList');
|
||||||
}
|
}
|
||||||
|
|
||||||
print('bbbbbb111: ${bb}');
|
|
||||||
iframe.bb!.addAll(bb.sublist(76, bb.length));
|
|
||||||
|
|
||||||
// copyBytes(iframe!.bb!, start, bb, POS_data, blen);
|
// copyBytes(iframe!.bb!, start, bb, POS_data, blen);
|
||||||
// 打印输出看看字节数组的内容
|
// 打印输出看看字节数组的内容
|
||||||
print('Copied Bytes: ${iframe.bb}');
|
|
||||||
|
|
||||||
if(iframe.bagNum == iframe.bagReceive){
|
print(
|
||||||
Uint8List data = iframe.bb!.sublist(0, iframe.cur_len);
|
'iframe.bagNum: ${iframe!.bagNum} iframe.bagReceive: ${iframe!.bagReceive}');
|
||||||
print('播放第%d帧:${iframe.iframeIndex} 一帧图片的Data: $data');
|
|
||||||
eventBus.fire(GetTVDataRefreshUI(data));
|
// 如果收到的包数等于总包数,说明这一帧数据已经接收完毕
|
||||||
|
if (iframe!.bagNum == iframe!.bagReceive) {
|
||||||
|
// List<int> data = iframe!.bb!.sublist(0, iframe!.cur_len);
|
||||||
|
print('播放第${iframe!.iframeIndex}帧 一帧图片的Data: $growableList');
|
||||||
|
String hexString =
|
||||||
|
uint8ListToHexString(Uint8List.fromList(growableList));
|
||||||
|
// print('播放第${iframe!.iframeIndex}帧 hexStringLength:${hexString.length} 一帧图片的hexStringData: $hexString'); // 输出: 0a141e28
|
||||||
|
|
||||||
|
// if (iframe!.iframeIndex == 1) {
|
||||||
|
print('下面就是你要的');
|
||||||
|
printByteArray('播放第${iframe!.iframeIndex}帧 一帧图片的hexStringData: ',
|
||||||
|
Uint8List.fromList(growableList));
|
||||||
|
eventBus.fire(GetTVDataRefreshUI(growableList));
|
||||||
|
// }
|
||||||
|
// eventBus.fire(GetTVDataRefreshUI(growableList));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Get.toNamed(Routers.lockMonitoringPage, arguments: {
|
// Get.toNamed(Routers.lockMonitoringPage, arguments: {
|
||||||
// "lockId": "111"
|
// "lockId": "111"
|
||||||
// });
|
// });
|
||||||
@ -92,6 +151,24 @@ class CallTalk {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void printByteArray(String printTitle, Uint8List byteArray) {
|
||||||
|
final int chunkSize = byteArray.length; // 每行显示的字节数
|
||||||
|
int length = byteArray.length;
|
||||||
|
|
||||||
|
for (int i = 0; i < length; i += chunkSize) {
|
||||||
|
int end = (i + chunkSize < length) ? i + chunkSize : length;
|
||||||
|
Uint8List chunk = byteArray.sublist(i, end);
|
||||||
|
|
||||||
|
String hexString =
|
||||||
|
chunk.map((byte) => byte.toRadixString(16).padLeft(2, '0')).join(' ');
|
||||||
|
debugPrint(hexString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String uint8ListToHexString(Uint8List uint8List) {
|
||||||
|
return hex.encode(uint8List);
|
||||||
|
}
|
||||||
|
|
||||||
int getShortFromByte(Uint8List bb, int pos) {
|
int getShortFromByte(Uint8List bb, int pos) {
|
||||||
ByteData byteData = ByteData.sublistView(bb, pos, pos + 2);
|
ByteData byteData = ByteData.sublistView(bb, pos, pos + 2);
|
||||||
return byteData.getInt16(0, Endian.little);
|
return byteData.getInt16(0, Endian.little);
|
||||||
|
|||||||
@ -17,6 +17,6 @@ class IframeInfo {
|
|||||||
bagReceive = 0;
|
bagReceive = 0;
|
||||||
isFull = false;
|
isFull = false;
|
||||||
cur_len = 0;
|
cur_len = 0;
|
||||||
bb = Uint8List(512);
|
bb = Uint8List(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import '../../tools/toast.dart';
|
import '../../tools/toast.dart';
|
||||||
@ -6,30 +5,28 @@ import '../call/callTalk.dart';
|
|||||||
import 'udp_talkClass.dart';
|
import 'udp_talkClass.dart';
|
||||||
|
|
||||||
class CommandUDPReciverManager {
|
class CommandUDPReciverManager {
|
||||||
|
|
||||||
static void appDataReceive(List<int> data) async {
|
static void appDataReceive(List<int> data) async {
|
||||||
///解析数据
|
///解析数据
|
||||||
if(data.isEmpty){
|
if (data.isEmpty) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int dataSize = data.length;
|
int dataSize = data.length;
|
||||||
if(dataSize < 4){
|
if (dataSize < 4) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
print("appDataReceiveData:$data");
|
print("appDataReceiveData:$data");
|
||||||
|
|
||||||
Uint8List data1 = Uint8List.fromList(data);
|
Uint8List data1 = Uint8List.fromList(data);
|
||||||
if(data1.length==1){
|
if (data1.length == 1) {
|
||||||
if(data[0]==0x30 || data[0]==0x31){
|
if (data[0] == 0x30 || data[0] == 0x31) {
|
||||||
print("p2p打洞");
|
print("p2p打洞");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data[6] == 4) {
|
if (data[6] == 4) {
|
||||||
if(data[7] == 2){
|
if (data[7] == 2) {
|
||||||
// print("心跳包反馈 在线状态");
|
// print("心跳包反馈 在线状态");
|
||||||
} else if(data[7]==3) {
|
} else if (data[7] == 3) {
|
||||||
[Toast.show(msg: "您已在其他设备登录")];
|
[Toast.show(msg: "您已在其他设备登录")];
|
||||||
}
|
}
|
||||||
} else if (data[6] == 150) {
|
} else if (data[6] == 150) {
|
||||||
@ -42,77 +39,78 @@ class CommandUDPReciverManager {
|
|||||||
var beiCallType = data[8] & 0xff;
|
var beiCallType = data[8] & 0xff;
|
||||||
print("被呼叫类型$beiCallType");
|
print("被呼叫类型$beiCallType");
|
||||||
switch (beiCallType) {
|
switch (beiCallType) {
|
||||||
case 1:{
|
case 1:
|
||||||
|
{
|
||||||
//被叫
|
//被叫
|
||||||
UDPTalkClass().beCallW(data: data);
|
UDPTalkClass().beCallW(data: data);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 6:{
|
case 6:
|
||||||
|
{
|
||||||
//接听
|
//接听
|
||||||
if((data[7] & 0x3) == 2){//被叫 接听反馈
|
if ((data[7] & 0x3) == 2) {
|
||||||
|
//被叫 接听反馈
|
||||||
print("接听反馈");
|
print("接听反馈");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
case 8:{//音视频数据
|
case 8:
|
||||||
print("音视频数据");
|
{
|
||||||
|
//音视频数据
|
||||||
|
// print("音视频数据");
|
||||||
CallTalk cllTalk = CallTalk();
|
CallTalk cllTalk = CallTalk();
|
||||||
cllTalk.getAVData(data1, data1.length);
|
cllTalk.getAVData(data1, data1.length);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 9:{
|
case 9:
|
||||||
if((data[7] & 0x3) == 1){//对方保持连接
|
{
|
||||||
|
if ((data[7] & 0x3) == 1) {
|
||||||
|
//对方保持连接
|
||||||
//print("对方保持连接");
|
//print("对方保持连接");
|
||||||
data[7] = 2;
|
data[7] = 2;
|
||||||
|
} else {
|
||||||
} else{
|
|
||||||
//print("保持连接反馈");
|
//print("保持连接反馈");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 10:{
|
case 10:
|
||||||
|
{
|
||||||
//开门反馈
|
//开门反馈
|
||||||
if((data[7] & 0x3) == 2){
|
if ((data[7] & 0x3) == 2) {
|
||||||
print("开门成功");
|
print("开门成功");
|
||||||
|
} else {}
|
||||||
}
|
|
||||||
else{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 30:{
|
case 30:
|
||||||
|
{
|
||||||
//开门反馈
|
//开门反馈
|
||||||
if((data[7] & 0x3) == 1){
|
if ((data[7] & 0x3) == 1) {
|
||||||
//对方结束对讲
|
//对方结束对讲
|
||||||
print("对方结束对讲");
|
print("对方结束对讲");
|
||||||
|
} else {
|
||||||
} else{
|
|
||||||
//结束对讲反馈
|
//结束对讲反馈
|
||||||
print("结束对讲反馈");
|
print("结束对讲反馈");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 140:{
|
case 140:
|
||||||
|
{
|
||||||
// p2p测试
|
// p2p测试
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 141:{
|
case 141:
|
||||||
|
{
|
||||||
// p2p测试
|
// p2p测试
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 142:{
|
case 142:
|
||||||
|
{
|
||||||
// p2p测试
|
// p2p测试
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 143:{
|
case 143:
|
||||||
|
{
|
||||||
//p2p测试 NSAsk
|
//p2p测试 NSAsk
|
||||||
print("p2pNSAskNSAsk");
|
print("p2pNSAskNSAsk");
|
||||||
}
|
}
|
||||||
@ -123,65 +121,60 @@ class CommandUDPReciverManager {
|
|||||||
} else if (data[6] == 152) {
|
} else if (data[6] == 152) {
|
||||||
// 监视命令
|
// 监视命令
|
||||||
switch (data[8] & 0xff) {
|
switch (data[8] & 0xff) {
|
||||||
case 2:{
|
case 2:
|
||||||
//被叫
|
{
|
||||||
print("对方忙");
|
//被叫
|
||||||
}
|
print("对方忙");
|
||||||
break;
|
}
|
||||||
case 4:{
|
break;
|
||||||
//监视成功
|
case 4:
|
||||||
print("监视成功");
|
{
|
||||||
|
//监视成功
|
||||||
}
|
print("监视成功");
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
case 8:{//音视频数据
|
case 8:
|
||||||
//print("音视频数据");
|
{
|
||||||
|
//音视频数据
|
||||||
}
|
//print("音视频数据");
|
||||||
break;
|
|
||||||
case 9:{
|
|
||||||
//保持连接
|
|
||||||
if((data[7] & 0x3) == 1){//对方保持连接
|
|
||||||
//print("对方保持连接");
|
|
||||||
data[7] = 2;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else{
|
break;
|
||||||
//print("保持连接反馈");
|
case 9:
|
||||||
|
{
|
||||||
|
//保持连接
|
||||||
|
if ((data[7] & 0x3) == 1) {
|
||||||
|
//对方保持连接
|
||||||
|
//print("对方保持连接");
|
||||||
|
data[7] = 2;
|
||||||
|
} else {
|
||||||
|
//print("保持连接反馈");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
break;
|
case 10:
|
||||||
case 10:{
|
{
|
||||||
//开门反馈
|
//开门反馈
|
||||||
if((data[7] & 0x3) == 2){
|
if ((data[7] & 0x3) == 2) {
|
||||||
print("开门成功");
|
print("开门成功");
|
||||||
|
} else {}
|
||||||
}
|
}
|
||||||
else{
|
break;
|
||||||
|
case 30:
|
||||||
|
{
|
||||||
|
// 监视结束
|
||||||
|
if ((data[7] & 0x3) == 1) {
|
||||||
|
// 对方结束监视
|
||||||
|
print("对方结束监视");
|
||||||
|
} else {
|
||||||
|
//结束对讲反馈
|
||||||
|
print("结束监视反馈");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
break;
|
|
||||||
case 30:{
|
|
||||||
// 监视结束
|
|
||||||
if((data[7] & 0x3) == 1){
|
|
||||||
// 对方结束监视
|
|
||||||
print("对方结束监视");
|
|
||||||
|
|
||||||
} else{
|
|
||||||
//结束对讲反馈
|
|
||||||
print("结束监视反馈");
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user