ここで提供されているコードを使用しています:http://www.microchip.com/forums/tm.aspx?m=278617 Javaを使用してUSBポート経由でデータを転送します。それは、Windows XPの32ビットOSで正常に動作します。しかし、Windows 7 32bit OS環境下で出力レポートを送信するために同じ割り込み方法を呼び出そうとすると、JNIがOutsite JVMをクラッシュさせます。クラッシュレポートはここで見つけることができます:だから、JNIコードはWindows XPでは問題なく動作しますが、Windows 7ではクラッシュします
JNIEXPORT jboolean JNICALL Java_MyHID_IntSendOutputReport(JNIEnv *jEnv, jobject jObj, jbyteArray outputReport)
{
boolean Result = false;
byte *buffer = new byte[Capabilities.OutputReportByteLength];
jboolean isCopy = JNI_TRUE;
buffer = (byte*)jEnv->GetByteArrayElements(outputReport, &isCopy);
/*
API Function: WriteFile
Sends a report to the device.
Returns: success or failure.
Requires:
A device handle returned by CreateFile.
A buffer that holds the report.
The Output Report length returned by HidP_GetCaps,
A variable to hold the number of bytes written.
*/
DWORD BytesWritten = 0;
if (WriteHandle != INVALID_HANDLE_VALUE) Result = WriteFile
(WriteHandle,
buffer,
Capabilities.OutputReportByteLength,
&BytesWritten,
NULL);
delete buffer;
return Result;
}
JNIは、Windows 7の下にJVM外に墜落している理由を誰もが問題を見つける私を助けてくださいすることができますJNIのクラッシュを引き起こしhttp://pastebin.com/A9USNFFY
機能は以下のとおりであります32ビットOS環境?前もって感謝します。
応答ありがとうございます、@EJP! – xihad
実際、私はUSBとJNIプログラミングの両方で新しいです。私はインターネット上でグーグルでこのスクリプトを見つけ、試してみました。はい、私はこのことについて知りたかったのですが、http://libusbjava.sourceforge.net/wp/にもありますが、libusb javaの最新バージョンはこのラッパーと互換性がなく、古いものはWindows 7のバグかもしれないというプラットフォーム。だから私はまだ試してみませんでした。 – xihad
また私はこれを試みた:http://www.blog.kslemb.com/doku.php/en/projects/globx/java_hid そしてここでつかれた:http://stackoverflow.com/questions/9906119/access-isあなたがUSB用に他の良いJavaパッケージを使用することについての他の提案があるなら、私に提案してください。もう一度ありがとう! – xihad