📄 syjni.cpp
字号:
// SYJNI.cpp : Defines the initialization routines for the DLL.
//
#include "stdafx.h"
#include "SYJNI.h"
#include <iostream.h>
#include <new.h>
#include "SYSDK.h"
#include "SanyoApi.h"
HANDLE m_hCamera;
CAM_COMM_PORT cam_comm_port;
static JNICallback m_callback;
JavaVM* g_pVm = 0;
/*
BOOL callback_proc(LPARAM lAppData, CAM_STATTYPE message_type, LONG lPercent)
{
JDK1_1AttachArgs thread_args;
JNIEnv *env;
g_pVm->AttachCurrentThread(( void** ) &env, &thread_args );
g_pVm->GetEnv((void **)&env, JNI_VERSION_1_1);
fprintf(stderr, "************ call back\n");
if (env == 0 ||env->ExceptionOccurred()) {
fprintf(stderr, "************ java exception occurred\n");
return 0;
}
env->CallVoidMethod(m_callback.m_obj,m_callback.release_progress_mid,(jlong)lPercent);
/*JNICallback *callback = (JNICallback*)lAppData;
JavaVM *s_pVm ;
JDK1_1AttachArgs thread_args;
callback->p_env->GetJavaVM(&s_pVm);
s_pVm->AttachCurrentThread( ( void** ) &callback->p_env, &thread_args );
callback->p_env->CallVoidMethod(callback->m_obj,callback->release_progress_mid,(jlong)lPercent);
return TRUE;
}
JNIEXPORT jlong JNICALL Java_cdsdk_SYSDK_start (JNIEnv *env, jobject obj)
{
env->GetJavaVM(&g_pVm);
//设置JNI 指针,和Java回调函数ID
memset(&m_callback,0,sizeof(JNICallback));
m_callback.cls = env->GetObjectClass(obj);
m_callback.p_env = env;
m_callback.m_obj= env->NewGlobalRef(obj);
m_callback.release_progress_mid =env->GetMethodID(m_callback.cls, "releaseProgress", "(I)V");
// m_callback.p_env->CallVoidMethod(m_callback.m_obj,m_callback.event_callback_mid,(jint)1,(jint)1,(jint)1,(jint)1);
return 0;
}*/
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_getPictureFile(JNIEnv *env, jobject, jstring filename, jlong num)
{
//MCam_setup_callback((LPFNSTATUS)callback_proc, NULL, m_hCamera);
HANDLE hOutFile;
const char* str = env->GetStringUTFChars( filename, 0);
hOutFile = CreateFile(str,GENERIC_WRITE|GENERIC_READ, FILE_SHARE_WRITE|FILE_SHARE_READ,0,CREATE_ALWAYS,0,0);
CAM_ERROR cam_error = MCam_get_picture_file(hOutFile,num,m_hCamera);
CloseHandle(hOutFile);
env->ReleaseStringUTFChars(filename, str);
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_controlLcd(JNIEnv *, jobject,jint viewControl,jlong num)
{
if (viewControl == 1)
{
CAM_ERROR cam_error = MCam_control_lcd (LCD_OPCODE_MONITOR,num,m_hCamera);
return (jchar) cam_error;
}
else
{
CAM_ERROR cam_error = MCam_control_lcd (LCD_OPCODE_POWER_OFF,num,m_hCamera);
return (jchar) cam_error;
}
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_getThroughPic(JNIEnv *, jobject)
{
//PBYTE buffer = (PBYTE) malloc(2097152);
//byte pbuffer[4096] = {0};
PBYTE pbuffer = new byte [4096] ;
long *ppic_size = 0;
CAM_ERROR cam_error;
if(pbuffer == NULL)
{
printf("pbuffer is null!!!");
return -1;
}
if (MCam_ready ( m_hCamera )){
cam_error = MCam_get_through_picture(pbuffer, ppic_size, m_hCamera );
}
//free(pbuffer);
delete pbuffer;
return (jchar) cam_error;
}
JNIEXPORT jint JNICALL Java_cdsdk_SYSDK_createHandle(JNIEnv *, jobject)
{
m_hCamera = MCam_create_handle ();
return 0;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_MCam_1error(JNIEnv *, jobject)
{
CAM_ERROR cam_error = MCam_error (m_hCamera);
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_resetDLL(JNIEnv *, jobject)
{
CAM_ERROR cam_error = MCam_reset_dll ();
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_closeHandle(JNIEnv *, jobject)
{
CAM_ERROR cam_error = MCam_close_handle (m_hCamera);
//CloseHandle(m_hCamera);
return (jchar) cam_error;
}
JNIEXPORT jlong JNICALL Java_cdsdk_SYSDK_setPort(JNIEnv *, jobject, jint comm_auto,jint comm_usb)
{
if ((comm_auto == 0)&&(comm_usb == 1))
{
cam_comm_port = MCam_set_port (COMM_USB , m_hCamera );
}else if ((comm_auto == 1)&&(comm_usb == 0))
{
cam_comm_port = MCam_set_port (COMM_AUTO , m_hCamera );
}
return (jlong) cam_comm_port;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_sessionEnabled(JNIEnv *, jobject, jboolean enable_switch)
{
CAM_ERROR cam_error = MCam_session_enabled ( enable_switch , m_hCamera );
return (jchar) cam_error;
}
JNIEXPORT jboolean JNICALL Java_cdsdk_SYSDK_Ready(JNIEnv *, jobject)
{
BOOL isReady = MCam_ready ( m_hCamera );
return (jboolean) isReady;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setResolution(JNIEnv *, jobject, jchar res_select)
{
CAM_ERROR cam_error;
if (res_select == 2)
{
cam_error = MCam_set_resolution (RES_640_N,m_hCamera );
}else if(res_select == 3)
{
cam_error = MCam_set_resolution (RES_640_F,m_hCamera );
}else if(res_select == 10)
{
cam_error = MCam_set_resolution (RES_1600_N,m_hCamera );
}else if(res_select == 11)
{
cam_error = MCam_set_resolution (RES_1600_F,m_hCamera );
}else if(res_select == 14)
{
cam_error = MCam_set_resolution (RES_2048_N,m_hCamera );
}else if(res_select == 15)
{
cam_error = MCam_set_resolution (RES_2048_F,m_hCamera );
}else if(res_select == 29)
{
cam_error = MCam_set_resolution (RES_2048_S,m_hCamera );
}else if(res_select == 65)
{
cam_error = MCam_set_resolution (RES_2880_N,m_hCamera );
}else if(res_select == 66)
{
cam_error = MCam_set_resolution (RES_2880_F,m_hCamera );
}
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_getResolution(JNIEnv *, jobject)
{
CAM_RES cam_res = MCam_get_resolution (m_hCamera);
return (jchar) cam_res;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setExposure(JNIEnv *, jobject, jlong exp_duration)
{
CAM_ERROR cam_error = MCam_set_exposure (exp_duration,m_hCamera );
return (jchar) cam_error;
}
JNIEXPORT jlong JNICALL Java_cdsdk_SYSDK_getExposure(JNIEnv *, jobject)
{
long exp_duration = MCam_get_resolution (m_hCamera);
return (jlong) exp_duration;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setExposureBias(JNIEnv *, jobject, jlong Exposure_Bias )
{
CAM_SFRACTION *pCAM_SFRACTION = new CAM_SFRACTION;
pCAM_SFRACTION->lcam_denominator = Exposure_Bias;
CAM_ERROR cam_error = MCam_set_exposure_bias (pCAM_SFRACTION, m_hCamera);
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setFlashMode(JNIEnv *, jobject, jchar flash_ctl)
{
CAM_ERROR cam_error;
if(flash_ctl == 0)
{
cam_error = MCam_set_flash_mode (CAM_FLASH_AUTO,m_hCamera );
}else if (flash_ctl == 1)
{
cam_error = MCam_set_flash_mode (CAM_FLASH_ON,m_hCamera );
}else if (flash_ctl == 2)
{
cam_error = MCam_set_flash_mode (CAM_FLASH_OFF,m_hCamera );
}else if (flash_ctl == 3)
{
cam_error = MCam_set_flash_mode (CAM_FLASH_RED,m_hCamera );
}
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_getFlashMode(JNIEnv *, jobject)
{
CAM_FLASH_MODE flash_ctl = MCam_get_flash_mode (m_hCamera);
return (jchar) flash_ctl;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setISOSpeedRatings(JNIEnv *, jobject, jchar speed_rating)
{
CAM_ERROR cam_error;
if (speed_rating == 0)
{
cam_error = MCam_set_iso_speed_ratings (SR_AUTO,m_hCamera );
}else if (speed_rating == 1)
{
cam_error = MCam_set_iso_speed_ratings (SR_ISO100,m_hCamera );
}else if (speed_rating == 2)
{
cam_error = MCam_set_iso_speed_ratings (SR_ISO200,m_hCamera );
}else if (speed_rating == 3)
{
cam_error = MCam_set_iso_speed_ratings (SR_ISO400,m_hCamera );
}else if (speed_rating == 4)
{
cam_error = MCam_set_iso_speed_ratings (SR_ISO50,m_hCamera );
}
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setExposureMode(JNIEnv *, jobject, jlong aperture)
{
EXPOSURE_MODE *pExpMode;
pExpMode = new EXPOSURE_MODE;
pExpMode->program_mode = PROGRAM_AUTO;
pExpMode->aperture_number_numerator = aperture;
CAM_ERROR cam_error = MCam_set_exposure_mode (pExpMode,m_hCamera );
return (jchar) cam_error;
}
JNIEXPORT jlong JNICALL Java_cdsdk_SYSDK_getPictureCount(JNIEnv *, jobject)
{
long picCount = MCam_get_picture_count (m_hCamera);
return (jlong) picCount;
}
JNIEXPORT jlong JNICALL Java_cdsdk_SYSDK_getRemainingCount(JNIEnv *, jobject)
{
long remainCount = MCam_get_remaining_count (m_hCamera);
return (jlong) remainCount;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setPC_1CameraMode(JNIEnv *, jobject, jlong camera_mode)
{
CAM_ERROR cam_error = MCam_set_pc_camera_mode (camera_mode,m_hCamera );
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_eraseAll(JNIEnv *, jobject)
{
CAM_ERROR cam_error = MCam_erase_all (m_hCamera);
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_takePic(JNIEnv *, jobject)
{
CAM_ERROR cam_error = MCam_take_pic (m_hCamera);
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_takePicSequential(JNIEnv *, jobject, jshort count)
{
CAM_ERROR cam_error = MCam_take_pic_sequential (count,m_hCamera);
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setIntervalTime(JNIEnv *, jobject, jlong time)
{
CAM_ERROR cam_error = MCam_set_interval_time ( time,m_hCamera );
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setLightSource(JNIEnv *, jobject, jchar light_source)
{
CAM_ERROR cam_error;
if (light_source == 0)
{
cam_error = MCam_set_light_source( LS_UNIDENTIFIED,m_hCamera );
}else if (light_source == 1)
{
cam_error = MCam_set_light_source( LS_DAYLIGHT,m_hCamera );
}else if (light_source == 2)
{
cam_error = MCam_set_light_source( LS_FLUORESCENT,m_hCamera );
}else if (light_source == 3)
{
cam_error = MCam_set_light_source( LS_TUNGSTENT,m_hCamera );
}else if (light_source == 225)
{
cam_error = MCam_set_light_source( LS_PRESET,m_hCamera );
}else if (light_source == 254)
{
cam_error = MCam_set_light_source( LS_MANUAL,m_hCamera );
}else if (light_source == 255)
{
cam_error = MCam_set_light_source( LS_CLOUDY,m_hCamera );
}
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setFocus(JNIEnv *, jobject, jint focus_select)
{
CAM_ERROR cam_error;
if(focus_select == 0)
{
cam_error = MCam_set_focus (CAM_FOCUS_NOT_AVAILABLE,m_hCamera);
}else if(focus_select == 1)
{
cam_error = MCam_set_focus (CAM_FOCUS_MACRO_ON,m_hCamera);
}else if(focus_select == 2)
{
cam_error = MCam_set_focus (CAM_FOCUS_AUTO,m_hCamera);
}else if(focus_select == 3)
{
cam_error = MCam_set_focus (CAM_FOCUS_MANUAL_ON,m_hCamera);
}else if(focus_select == 4)
{
cam_error = MCam_set_focus (CAM_FOCUS_DISTANT_ON,m_hCamera);
}
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setFocalLength(JNIEnv *, jobject, jlong pFocalLength)
{
_CAM_FRACTION *pCAM_FRACTION = new _CAM_FRACTION;
pCAM_FRACTION->ulcam_numerator = pFocalLength;
CAM_ERROR cam_error = MCam_set_focal_length (pCAM_FRACTION,m_hCamera);
return (jchar) cam_error;
}
JNIEXPORT jchar JNICALL Java_cdsdk_SYSDK_setManualFocus(JNIEnv *, jobject, jlong focus_value)
{/*
CAM_ERROR cam_error;
if (focus_value == 2)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_02,m_hCamera);
}else if (focus_value == 5)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_05,m_hCamera);
}if (focus_value == 10)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_10,m_hCamera);
}if (focus_value == 15)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_15,m_hCamera);
}if (focus_value == 20)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_20,m_hCamera);
}if (focus_value == 30)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_30,m_hCamera);
}if (focus_value == 50)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_50,m_hCamera);
}if (focus_value == 70)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_70,m_hCamera);
}if (focus_value == 100)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_100,m_hCamera);
}if (focus_value == 150)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_150,m_hCamera);
}if (focus_value == 200)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_200,m_hCamera);
}if (focus_value == 300)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_300,m_hCamera);
}if (focus_value == 500)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_500,m_hCamera);
}if (focus_value == 800)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_800,m_hCamera);
}if (focus_value == 4294967295)
{
CAM_ERROR cam_error = MCam_set_manual_focus(FV_INFINITE,m_hCamera);
}
return (jchar) cam_error;*/
return 0;
}
BEGIN_MESSAGE_MAP(CSYJNIApp, CWinApp)
//{{AFX_MSG_MAP(CSYJNIApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSYJNIApp construction
CSYJNIApp::CSYJNIApp()
{
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CSYJNIApp object
CSYJNIApp theApp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -