顯示具有 myCodes - Java 標籤的文章。 顯示所有文章
顯示具有 myCodes - Java 標籤的文章。 顯示所有文章

2010年12月13日 星期一

JNI (Java Native Interface) 注意事項

當移動 JNI class後,必須重新編譯一次表頭檔(.h)宣告,否則將來載入dll時,執行階段會出現找不到相對用的function名稱的錯誤訊息。

留個記錄:
注意package路徑




package com.jpos.MSR250SO;

public class KeyboardHookdll
{
static
{
System.loadLibrary("JposKeyHook");
}

public native boolean installhook();
public native boolean unhook();
public native void ClearKeyboardHookData();
public native byte[] getKeyboardHookData();
}


表頭檔function 名稱要能相對



/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class com_jpos_MSR250SO_KeyboardHookdll */

#ifndef _Included_com_jpos_MSR250SO_KeyboardHookdll
#define _Included_com_jpos_MSR250SO_KeyboardHookdll
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jpos_MSR250SO_KeyboardHookdll
* Method: installhook
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_com_jpos_MSR250SO_KeyboardHookdll_installhook
(JNIEnv *, jobject);

/*
* Class: com_jpos_MSR250SO_KeyboardHookdll
* Method: unhook
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_com_jpos_MSR250SO_KeyboardHookdll_unhook
(JNIEnv *, jobject);

2010年10月18日 星期一

Parsing jpos.xml

原來JPOS內提供的source code已經有現成的library,我居然用jdom來土法煉鋼。

留個記錄:

SimpleEntryRegistry reg = new SimpleEntryRegistry(new SimpleXmlRegPopulator());
reg.load();
Enumeration entriesEnum = reg.getEntries();

int count = 0;
while (entriesEnum.hasMoreElements())
{
JposEntry entry = (JposEntry) entriesEnum.nextElement();

if (entry.getLogicalName().equals(sDeviceName))
{
int ii = entry.getPropertyCount();

Iterator ppp = entry.getProps();
while (ppp.hasNext())
{
JposEntry.Prop prop = (JposEntry.Prop) ppp.next();
propName = prop.getName();
propValue = prop.getValueAsString();

if (propName.equals("Debug"))
{
DEBUG = (propValue.equals("1") ? true : false);
String sDebug = (propValue.equals("1") ? "true" :
"false");
//save to system property
System.setProperty("msr.msr.debug", sDebug);
TraceLog.WriteMessage("MSRService.open() " +
sDeviceName, DEBUG);
}
else if (propName.equals("Port"))
{
comid = Integer.parseInt(propValue.substring(3));
sComport = propValue;
TraceLog.WriteMessage("Port Connected: " + sComport,
DEBUG);
}
else if (propName.equals("PhysicalDeviceName"))
{
physicalDeviceName = propValue;
}
else if (propName.equals("DeviceServiceDescription"))
{
deviceServiceDescription = propValue;
}
else if (propName.equals("PhysicalDeviceDescription"))
{
physicalDeviceDescription = propValue;
}
else
{
//do nothing here
}
}
}
count++;
}

2010年10月16日 星期六

JPOS Xml modification

jpos.xml的格式不合客戶所需,把人家的 ISV 搞掛了。

又要重回java世界。

實在想不通,OPOS這麼好用,環境還是用Windows平台,幹嘛要用JPOS?