2012-04-01 11 views
0

ここで提供されているコードを使用しています: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環境?前もって感謝します。

答えて

1

コードは完全に間違っています。それがどのプラットフォームでも実行されたと信じるのは難しいです。 newコールとdelete行を削除します。 bufferは、GetByteArrayElements()に電話をしたときに割り当てられます。 isCopyがTRUEに設定されている場合は、bufferJNI_ABORTを引数としてReleaseByteArrayElements()を呼び出す必要があります。

USB用のJavaパッケージがありますか?

+0

応答ありがとうございます、@EJP! – xihad

+0

実際、私はUSBとJNIプログラミングの両方で新しいです。私はインターネット上でグーグルでこのスクリプトを見つけ、試してみました。はい、私はこのことについて知りたかったのですが、http://libusbjava.sourceforge.net/wp/にもありますが、libusb javaの最新バージョンはこのラッパーと互換性がなく、古いものはWindows 7のバグかもしれないというプラットフォーム。だから私はまだ試してみませんでした。 – xihad

+0

また私はこれを試みた:http://www.blog.kslemb.com/doku.php/en/projects/globx/java_hid そしてここでつかれた:http://stackoverflow.com/questions/9906119/access-isあなたがUSB用に他の良いJavaパッケージを使用することについての他の提案があるなら、私に提案してください。もう一度ありがとう! – xihad

関連する問題