hyzp_ybqx-Commit054:已经初步实现球机上下方向控制
This commit is contained in:
@@ -54,6 +54,12 @@ import 'UserInfo.dart';
|
|||||||
const serviceUrl_ybqx = 'http://125.64.218.67:9909';
|
const serviceUrl_ybqx = 'http://125.64.218.67:9909';
|
||||||
// 区县的违章图片和视频地址前缀:http://125.64.218.67:9912/
|
// 区县的违章图片和视频地址前缀:http://125.64.218.67:9912/
|
||||||
const serviceUrl_ybqx_media = 'http://125.64.218.67:9912/';
|
const serviceUrl_ybqx_media = 'http://125.64.218.67:9912/';
|
||||||
|
//5、球机方向控制接口说明:
|
||||||
|
// 接口地址:http://125.64.218.67:9906/api/ptz/{通道ID}/{球机ID}
|
||||||
|
// static const String setSphericalCameraUrl = 'http://125.64.218.67:9906/api/ptz/'; //球机方向控制接口
|
||||||
|
// 区县球机方向控制:
|
||||||
|
// http://125.64.218.67:9914/?type=publish&dwip=172.16.3.21&topic=camera&dataType=PTZ&cmdCode=23&to=456&speed=40
|
||||||
|
const String setSphericalCameraUrl = 'http://125.64.218.67:9914/'; //球机方向控制接口
|
||||||
|
|
||||||
// 511502、翠屏区
|
// 511502、翠屏区
|
||||||
// int qxdm = 511502;
|
// int qxdm = 511502;
|
||||||
|
|||||||
+96
-24
@@ -25,21 +25,73 @@ import 'commonFun.dart';
|
|||||||
// horizonSpeed 说明:横向位移速度
|
// horizonSpeed 说明:横向位移速度
|
||||||
// verticalSpeed说明:垂直位移速度
|
// verticalSpeed说明:垂直位移速度
|
||||||
// zoomSpeed说明:变焦速度
|
// zoomSpeed说明:变焦速度
|
||||||
|
|
||||||
|
// 区县球机方向控制接口:
|
||||||
|
// 通过http协议向服务器发送POST数据,数据格式如下:
|
||||||
|
// http://125.64.218.67:9914/?type=publish&dwip=172.16.3.21&topic=camera&dataType=PTZ&cmdCode=23&to=456&speed=40
|
||||||
|
//
|
||||||
|
// -----------------------------------------------
|
||||||
|
// 云台控制代码:
|
||||||
|
// 1:停止动作
|
||||||
|
// 3:启动雨刷
|
||||||
|
// 11:焦距变大
|
||||||
|
// 12:焦距变小
|
||||||
|
// 21:上移
|
||||||
|
// 22:下移
|
||||||
|
// 23:左移
|
||||||
|
// 24:右移
|
||||||
|
// 25:左上移动
|
||||||
|
// 26:右上移动
|
||||||
|
// 27:左下移动
|
||||||
|
// 28:右下移动
|
||||||
Future setSphericalCameraDio(
|
Future setSphericalCameraDio(
|
||||||
{@required int id,
|
{@required int id,
|
||||||
|
@required String dwip,
|
||||||
@required int cmdCode,
|
@required int cmdCode,
|
||||||
int horizonSpeed = 120,
|
String move_type = "publish",
|
||||||
int verticalSpeed = 120,
|
String topic_type = "camera",
|
||||||
int zoomSpeed = 120}) async {
|
String data_type = "PTZ",
|
||||||
|
// int horizonSpeed = 120,
|
||||||
|
// int verticalSpeed = 120,
|
||||||
|
// int zoomSpeed = 120}) async {
|
||||||
|
int speed = 120}) async {
|
||||||
|
// ---------------------------------------------------
|
||||||
|
// 参数说明:
|
||||||
|
// type:动作类型,publish表示向设备发送指令
|
||||||
|
// dwip:点位IP,向哪个点位的设备发送指令
|
||||||
|
// topic:设备主题类型,camera表示向球机设备发送
|
||||||
|
// dataType:控制类型,PTZ表示控制球机云台
|
||||||
|
// cmdCode:球机云台的控制代码,整数,如21表示上,22表示下,详情见下方
|
||||||
|
// to:客户端ID,暂不用,输入任意整数即可
|
||||||
|
// speed:暂不用,输入任意整数即可
|
||||||
|
|
||||||
|
// ---------------------------------------------------
|
||||||
|
// http://125.64.218.67:9914/?
|
||||||
|
// type=publish&
|
||||||
|
// dwip=172.16.3.21&
|
||||||
|
// topic=camera&
|
||||||
|
// dataType=PTZ&
|
||||||
|
// cmdCode=23&
|
||||||
|
// to=456&
|
||||||
|
// speed=40
|
||||||
Map map = {
|
Map map = {
|
||||||
|
"type": move_type,
|
||||||
|
"dwip": dwip,
|
||||||
|
"topic": topic_type,
|
||||||
|
"dataType": data_type,
|
||||||
"cmdCode": cmdCode.toString(),
|
"cmdCode": cmdCode.toString(),
|
||||||
"horizonSpeed": horizonSpeed.toString(),
|
"to": id.toString(),
|
||||||
"verticalSpeed": verticalSpeed.toString(),
|
"speed": speed.toString(),
|
||||||
"zoomSpeed": zoomSpeed.toString(),
|
// "horizonSpeed": horizonSpeed.toString(),
|
||||||
|
// "verticalSpeed": verticalSpeed.toString(),
|
||||||
|
// "zoomSpeed": zoomSpeed.toString(),
|
||||||
};
|
};
|
||||||
var api = getSphericalCameraApi(id, map);
|
var api = getSphericalCameraApi(map);
|
||||||
print('api = ${api}');
|
print('api = ${api}');
|
||||||
//I/flutter (28351): api = http://125.64.218.67:9906/api/ptz/34020000001320001016/34020000001320001016?cmdCode=8&horizonSpeed=60&verticalSpeed=60&zoomSpeed=60
|
// api =
|
||||||
|
// OK: http://125.64.218.67:9914/?type=publish&dwip=172.16.3.21&topic=topic&dataType=dataType&cmdCode=21&to=1&speed=120
|
||||||
|
// bug01: http://125.64.218.67:9914/?type=publish&dwip=172.16.3.21&topic=camera&dataType=PTZ&cmdCode=23&to=456&speed=40
|
||||||
|
// api = http://125.64.218.67:9914/?type=publish&dwip=172.16.3.21&topic=camera&dataType=PTZ&cmdCode=21&to=1&speed=120
|
||||||
|
|
||||||
try {
|
try {
|
||||||
print('开始处理网络请求...');
|
print('开始处理网络请求...');
|
||||||
@@ -55,16 +107,16 @@ Future setSphericalCameraDio(
|
|||||||
print('${api} 球机移动网络请求过程正常完成');
|
print('${api} 球机移动网络请求过程正常完成');
|
||||||
|
|
||||||
///处理球机停止移动
|
///处理球机停止移动
|
||||||
map["cmdCode"] = '0';
|
// map["cmdCode"] = '0';
|
||||||
api = getSphericalCameraApi(id, map);
|
// api = getSphericalCameraApi(map);
|
||||||
print('api = ${api}');
|
// print('api = ${api}');
|
||||||
//I/flutter (28351): api = http://125.64.218.67:9906/api/ptz/34020000001320001016/34020000001320001016?cmdCode=0&horizonSpeed=60&verticalSpeed=60&zoomSpeed=60
|
// //I/flutter (28351): api = http://125.64.218.67:9906/api/ptz/34020000001320001016/34020000001320001016?cmdCode=0&horizonSpeed=60&verticalSpeed=60&zoomSpeed=60
|
||||||
|
//
|
||||||
response = await dio.post(api);
|
// response = await dio.post(api);
|
||||||
print('response = ${response.toString()}');
|
// print('response = ${response.toString()}');
|
||||||
if (response.statusCode == 200) {
|
// if (response.statusCode == 200) {
|
||||||
print('${api} 球机停止移动网络请求过程正常完成');
|
// print('${api} 球机停止移动网络请求过程正常完成');
|
||||||
}
|
// }
|
||||||
} else {
|
} else {
|
||||||
throw Exception('${api} 后端接口出现异常,请检测代码和服务器情况.........');
|
throw Exception('${api} 后端接口出现异常,请检测代码和服务器情况.........');
|
||||||
}
|
}
|
||||||
@@ -84,16 +136,35 @@ Future setSphericalCameraDio(
|
|||||||
// zoomSpeed:60
|
// zoomSpeed:60
|
||||||
// 上述调用可以一次性书写为:
|
// 上述调用可以一次性书写为:
|
||||||
// http://125.64.218.67:9906/api/ptz/34020000001320002016/34020000001320002016?cmdCode=8&horizonSpeed=60&verticalSpeed=60&zoomSpeed=60
|
// http://125.64.218.67:9906/api/ptz/34020000001320002016/34020000001320002016?cmdCode=8&horizonSpeed=60&verticalSpeed=60&zoomSpeed=60
|
||||||
String getSphericalCameraApi(int id, Map map) {
|
// String getSphericalCameraApi(int id, Map map) {
|
||||||
var api = ServicePath.setSphericalCameraUrl +
|
// // var api = ServicePath.setSphericalCameraUrl +
|
||||||
getSphericalCameraID(id) +
|
// var api = setSphericalCameraUrl + getSphericalCameraID(id) + '/' + getSphericalCameraID(id) + '?';
|
||||||
'/' +
|
// map.forEach((key, value) {
|
||||||
getSphericalCameraID(id) +
|
// //print("$key : $value");
|
||||||
'?';
|
// api += (key + '=' + value + '&');
|
||||||
|
// });
|
||||||
|
// api = api.substring(0, api.length - 1); // 删除末尾字符
|
||||||
|
//
|
||||||
|
// return api;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 兴文县:
|
||||||
|
String getSphericalCameraApi(Map map) {
|
||||||
|
// Map map = {
|
||||||
|
// "type": move_type,
|
||||||
|
// "dwip": dwip,
|
||||||
|
// "topic": topic_type,
|
||||||
|
// "dataType": data_type,
|
||||||
|
// "cmdCode": cmdCode.toString(),
|
||||||
|
// "to": id.toString(),
|
||||||
|
// "speed": speed,
|
||||||
|
// };
|
||||||
|
// http://125.64.218.67:9914/?type=publish&dwip=172.16.3.21&topic=camera&dataType=PTZ&cmdCode=23&to=456&speed=40
|
||||||
|
var api = setSphericalCameraUrl + '?';
|
||||||
map.forEach((key, value) {
|
map.forEach((key, value) {
|
||||||
//print("$key : $value");
|
//print("$key : $value");
|
||||||
api += (key + '=' + value + '&');
|
api += (key + '=' + value + '&');
|
||||||
|
// E/flutter (23744): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: type 'int' is not a subtype of type 'String' of 'other'
|
||||||
});
|
});
|
||||||
api = api.substring(0, api.length - 1); // 删除末尾字符
|
api = api.substring(0, api.length - 1); // 删除末尾字符
|
||||||
|
|
||||||
@@ -1951,6 +2022,7 @@ Future playUrl({@required int index, String url, BuildContext context}) {
|
|||||||
var ret = Navigator.of(context).push(MaterialPageRoute(
|
var ret = Navigator.of(context).push(MaterialPageRoute(
|
||||||
builder: (context) => SuperPlayerPage(
|
builder: (context) => SuperPlayerPage(
|
||||||
id: index + 1,
|
id: index + 1,
|
||||||
|
dwip: listDwinfoGetList2[index]['dwip'],
|
||||||
url: urlnew,
|
url: urlnew,
|
||||||
title: '点位视频\n${(index + 1)}、${listDwinfoGetList2[index]['dwmc']}',
|
title: '点位视频\n${(index + 1)}、${listDwinfoGetList2[index]['dwmc']}',
|
||||||
)));
|
)));
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ class ServicePath {
|
|||||||
|
|
||||||
//5、球机方向控制接口说明:
|
//5、球机方向控制接口说明:
|
||||||
// 接口地址:http://125.64.218.67:9906/api/ptz/{通道ID}/{球机ID}
|
// 接口地址:http://125.64.218.67:9906/api/ptz/{通道ID}/{球机ID}
|
||||||
static const String setSphericalCameraUrl = 'http://125.64.218.67:9906/api/ptz/'; //球机方向控制接口
|
// static const String setSphericalCameraUrl = 'http://125.64.218.67:9906/api/ptz/'; //球机方向控制接口
|
||||||
|
|
||||||
//6、获取 Apk 下载地址
|
//6、获取 Apk 下载地址
|
||||||
// api = http://sctastech.com/download/index.html
|
// api = http://sctastech.com/download/index.html
|
||||||
|
|||||||
@@ -22,10 +22,12 @@ class SuperPlayerPage extends StatefulWidget {
|
|||||||
SuperPlayerPage(
|
SuperPlayerPage(
|
||||||
{@required this.url,
|
{@required this.url,
|
||||||
this.id = -2, // 播放点位视频的点位编号,-2 表示播放违章视频
|
this.id = -2, // 播放点位视频的点位编号,-2 表示播放违章视频
|
||||||
|
this.dwip = '', // 点位IP,用于点位视频控制球机方向
|
||||||
this.loop = 1,
|
this.loop = 1,
|
||||||
this.title = 'Tencent Player',
|
this.title = 'Tencent Player',
|
||||||
Key key})
|
Key key})
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
|
String dwip;
|
||||||
String url;
|
String url;
|
||||||
String title;
|
String title;
|
||||||
int loop; //设置播放循环,默认播放器的循环次数是1, 即不循环播放。如果设置循环次数0,表示无限循环。
|
int loop; //设置播放循环,默认播放器的循环次数是1, 即不循环播放。如果设置循环次数0,表示无限循环。
|
||||||
@@ -284,44 +286,62 @@ class _SuperPlayerPageState extends State<SuperPlayerPage> with SuperPlayerListe
|
|||||||
/// status == -1 超出范围
|
/// status == -1 超出范围
|
||||||
/// status == 0 右
|
/// status == 0 右
|
||||||
case 0:
|
case 0:
|
||||||
setSphericalCameraDio(id: widget.id, cmdCode: 1);
|
setSphericalCameraDio(
|
||||||
|
id: widget.id, dwip: widget.dwip, cmdCode: 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/// status == 1 右上
|
/// status == 1 右上
|
||||||
case 1:
|
case 1:
|
||||||
setSphericalCameraDio(id: widget.id, cmdCode: 9);
|
setSphericalCameraDio(
|
||||||
|
id: widget.id, dwip: widget.dwip, cmdCode: 9);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
///三、球机位移接口方向代码说明:
|
///三、球机位移接口方向代码说明:
|
||||||
// 上:8 下:4 左:2 右:1 左上:10 左下:6 右上:9 右下:5
|
// 上:8 下:4 左:2 右:1 左上:10 左下:6 右上:9 右下:5
|
||||||
|
|
||||||
|
// 云台控制代码:1:停止动作、3:启动雨刷、11:焦距变大、12:焦距变小
|
||||||
|
// 21:上移
|
||||||
|
// 22:下移
|
||||||
|
// 23:左移
|
||||||
|
// 24:右移
|
||||||
|
// 25:左上移动
|
||||||
|
// 26:右上移动
|
||||||
|
// 27:左下移动
|
||||||
|
// 28:右下移动
|
||||||
/// status == 2 上
|
/// status == 2 上
|
||||||
case 2:
|
case 2:
|
||||||
setSphericalCameraDio(id: widget.id, cmdCode: 8);
|
setSphericalCameraDio(
|
||||||
|
id: widget.id, dwip: widget.dwip, cmdCode: 21);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/// status == 3 左上
|
/// status == 3 左上
|
||||||
case 3:
|
case 3:
|
||||||
setSphericalCameraDio(id: widget.id, cmdCode: 10);
|
setSphericalCameraDio(
|
||||||
|
id: widget.id, dwip: widget.dwip, cmdCode: 10);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/// status == 4 左
|
/// status == 4 左
|
||||||
case 4:
|
case 4:
|
||||||
setSphericalCameraDio(id: widget.id, cmdCode: 2);
|
setSphericalCameraDio(
|
||||||
|
id: widget.id, dwip: widget.dwip, cmdCode: 2);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/// status == 5 左下
|
/// status == 5 左下
|
||||||
case 5:
|
case 5:
|
||||||
setSphericalCameraDio(id: widget.id, cmdCode: 6);
|
setSphericalCameraDio(
|
||||||
|
id: widget.id, dwip: widget.dwip, cmdCode: 6);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/// status == 6 下
|
/// status == 6 下
|
||||||
case 6:
|
case 6:
|
||||||
setSphericalCameraDio(id: widget.id, cmdCode: 4);
|
setSphericalCameraDio(
|
||||||
|
id: widget.id, dwip: widget.dwip, cmdCode: 22);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/// status == 7 右下
|
/// status == 7 右下
|
||||||
case 7:
|
case 7:
|
||||||
setSphericalCameraDio(id: widget.id, cmdCode: 5);
|
setSphericalCameraDio(
|
||||||
|
id: widget.id, dwip: widget.dwip, cmdCode: 5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/// status == 8 还原
|
/// status == 8 还原
|
||||||
|
|||||||
Reference in New Issue
Block a user