package com.netsdk.demo.customize;
|
|
import java.io.File;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.Scanner;
|
|
import com.netsdk.demo.util.CaseMenu;
|
import com.netsdk.lib.ToolKits;
|
import com.sun.jna.Memory;
|
import com.sun.jna.Pointer;
|
import com.sun.jna.ptr.IntByReference;
|
|
public class HighDefinitionVideoStream {
|
static VPRLib vprlib = VPRLib.VPR_config;
|
private static int nHandle;
|
public void inti(){
|
int nType =1;
|
String sParas = "172.23.30.60,37777,admin,admin123";
|
nHandle=vprlib.VC_Init(nType, sParas);
|
if(nHandle>0) {
|
System.out.printf("Login Device Port Success!\n");
|
}
|
else {
|
System.out.printf("Login Device Port Fail.Last Error[%d]\n" , nHandle);
|
EndTest();
|
}
|
}
|
|
public void EndTest(){
|
System.out.println("End Test");
|
if( nHandle> 0)
|
{
|
vprlib.VC_Deinit(nHandle);
|
}
|
System.out.println("See You...");
|
System.exit(0);
|
}
|
//启动显示视频(windows)
|
public void StartDisplay(){
|
int nWidth=400;
|
int nHeight=400;
|
int nWinId=0;
|
int nRet=vprlib.VC_StartDisplay(nHandle, nWidth, nHeight, nWinId);
|
if(nRet==0){
|
System.out.println("VC_StartDisplay success.");
|
System.out.println("是否进行抓图?");
|
String choose;
|
Scanner in=new java.util.Scanner(System.in);
|
choose=in.next();
|
if(choose.equals("y")){
|
GetImage(); //获取图片
|
GetImageFile(); //获取图片文件
|
}
|
}else{
|
System.out.printf("VC_StartDisplay Fail.Last Error[0x%x]\n" , nRet);
|
}
|
}
|
/*//启动显示视频(linux)
|
public void StartDisplayEx(){
|
int nWidth=400;
|
int nHeight=400;
|
int nTop=0;
|
int nLeft=0;
|
int nRet=vprlib.VC_StartDisplayEx(nHandle, nWidth, nHeight, nTop, nLeft);
|
if(nRet==0){
|
System.out.println("VC_StartDisplayEx success.");
|
}else{
|
System.out.printf("VC_StartDisplayEx Fail.Last Error[0x%x]\n" , nRet);
|
}
|
}*/
|
//停止显示视频
|
public void StopDisplay(){
|
int nRet=vprlib.VC_StopDisplay(nHandle);
|
if(nRet==0){
|
System.out.println("VC_StartDisplayEx success.");
|
}else{
|
System.out.printf("VC_StartDisplayEx Fail.Last Error[0x%x]\n" , nRet);
|
}
|
}
|
//获取图片
|
public void GetImage(){
|
int nFormat=1;
|
IntByReference nLength=new IntByReference(100);
|
Pointer sImage=new Memory(100);
|
int nRet=vprlib.VC_GetImage(nHandle, nFormat, sImage, nLength);
|
if(nRet==0){
|
File path = new File("D:/EventPicture/");
|
if (!path.exists()) {
|
path.mkdir();
|
}
|
String strFileName = path + "\\" + System.currentTimeMillis() + ".jpg";
|
ToolKits.savePicture(sImage, nLength.getValue(), strFileName);
|
System.out.println("VC_GetImage success. nLength:"+nLength.getValue());
|
}else{
|
System.out.printf("VC_GetImage Fail.Last Error[%d]\n" , nRet);
|
}
|
}
|
//获取图片文件
|
public void GetImageFile(){
|
int nFormat=1;
|
String sFilleName="D:/EventPicture/image.jpg";
|
int nRet=vprlib.VC_GetImageFile(nHandle, nFormat, sFilleName);
|
if(nRet==0){
|
System.out.println("VC_GetImageFile success.");
|
}else{
|
System.out.printf("VC_GetImageFile Fail.Last Error[%d]\n" , nRet);
|
}
|
}
|
//字符叠加
|
public void TVPDisplay(){
|
int nRow=3;
|
int nCol=3;
|
String sText="湖南高速欢迎你!\n";
|
sText+="车型:一 车种:0! \n";
|
sText+="车牌:湘A889k8";
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
sText = sText + "\n时间" + sdf.format(new Date());
|
int nRet=vprlib.VC_TVPDisplay(nHandle, nRow, nCol, sText);
|
if(nRet==0){
|
System.out.println("叠加内容成功 \n");// 中文要转GBK
|
}else{
|
System.out.printf("叠加内容失败 .Last Error[0x%x]\n" , nRet);
|
}
|
}
|
//字符清除
|
public void TVPClear(){
|
int nRow=3;
|
int nCol=3;
|
int nLengt=500;
|
int nRet=vprlib.VC_TVPClear(nHandle, nRow, nCol, nLengt);
|
if(nRet==0){
|
System.out.println("清除叠加内容成功");
|
}else{
|
System.out.printf("清除叠加内容失败 .Last Error[0x%x]\n" , nRet);
|
}
|
}
|
|
//同步时间
|
public void SyncTime(){
|
String sSysTime="20190912114610"; //输入时间格式:yyyyMMddHHmmss
|
int nRet=vprlib.VC_SyncTime(nHandle, sSysTime);
|
if(nRet==0){
|
System.out.println("同步时间成功");
|
}else{
|
System.out.printf("同步时间失败 .Last Error[%d]\n" , nRet);
|
}
|
}
|
//设置时间显示格式
|
public void ShowTime(){
|
SyncTime();
|
int nStyle=0;
|
int nRet=vprlib.VC_ShowTime(nHandle, nStyle);
|
if(nRet==0){
|
System.out.println("设置时间显示格式成功");
|
}else{
|
System.out.printf("设置时间显示格式失败 .Last Error[0x%x]\n" , nRet);
|
}
|
}
|
public void getStatus(){
|
IntByReference pStatusCode=new IntByReference();
|
int nRet=vprlib.VC_GetStatus(nHandle, pStatusCode);
|
switch(nRet){
|
case VPRLib.RET_OK:{
|
System.out.println("操作成功 状态:" + pStatusCode.getValue());
|
break;
|
}
|
default:
|
System.out.printf("操作失败 .Last Error[0x%x]\n" , nRet);
|
}
|
getStatusMsg(pStatusCode.getValue());
|
}
|
|
public void getStatusMsg(int nStatusCode){
|
int nStatusMsgLen = 128;
|
Pointer sStatusMsg=new Memory(nStatusMsgLen);
|
sStatusMsg.clear(nStatusMsgLen);
|
int nRet = vprlib.VC_GetStatusMsg(nStatusCode, sStatusMsg, nStatusMsgLen);
|
switch(nRet){
|
case VPRLib.RET_OK:{
|
System.out.println("操作成功 状态信息:" + new String(sStatusMsg.getByteArray(0, nStatusMsgLen)).trim()); // 中文要转GBK
|
break;
|
}
|
default:
|
System.out.printf("操作失败 .Last Error[0x%x]\n" , nRet);
|
break;
|
}
|
GetVersion();
|
}
|
public void GetVersion(){
|
int nDevVerLen=128;
|
int nAPIVerLen=128;
|
Pointer sDevVersion=new Memory(nDevVerLen);
|
Pointer sAPIVersion=new Memory(nAPIVerLen);
|
/*sDevVersion.clear(nDevVerLen);
|
sAPIVersion.clear(nAPIVerLen);*/
|
int nRet=vprlib.VC_GetHWVersion(sDevVersion, nDevVerLen, sAPIVersion, nAPIVerLen);
|
switch(nRet){
|
case VPRLib.RET_OK:{
|
System.out.println("操作成功 硬件版本信息:" + new String(sDevVersion.getByteArray(0, nDevVerLen)).trim()+
|
"设备固件版本信息"+new String(sAPIVersion.getByteArray(0, nAPIVerLen)).trim()); // 中文要转GBK
|
break;
|
}
|
default:
|
System.out.printf("操作失败 .Last Error[0x%x]\n" , nRet);
|
}
|
}
|
|
public void run(){
|
System.out.println("Run Test");
|
CaseMenu menu = new CaseMenu();
|
menu.addItem(new CaseMenu.Item(this , "StartDisplay", "StartDisplay"));
|
menu.addItem(new CaseMenu.Item(this , "StopDisplay", "StopDisplay"));
|
menu.addItem(new CaseMenu.Item(this , "TVPDisplay", "TVPDisplay"));
|
menu.addItem(new CaseMenu.Item(this , "TVPClear", "TVPClear"));
|
menu.addItem(new CaseMenu.Item(this , "ShowTime", "ShowTime"));
|
menu.addItem(new CaseMenu.Item(this , "getStatus", "getStatus"));
|
menu.run();
|
}
|
public static void main(String[]args){
|
HighDefinitionVideoStream hdv=new HighDefinitionVideoStream();
|
hdv.inti();
|
hdv.run();
|
hdv.EndTest();
|
}
|
}
|