Java USBの読込命令について質問

このQ&Aのポイント
  • USBのデーターを読込みますと、読込みましたバイト数を返してきます。
  • ゼロを含めた読込みバイト数を返す読込み命令はありますか?
  • size_readDはゼロにならず、特別な割込みが発生します。
回答を見る
  • ベストアンサー

javaのUSBの読込命令について質問

下記は(//========で囲まれた部分)、USBの読込命令に関連したコードです。 USBのデーターを読込みますと、読込みましたバイト数をsize_readDで返してきます。 読込むデーターが無い場合は、size_readDはゼロにならず、catchもされず、下記の 他のUSBExceptionが発生します。 Q1)ゼロを含めた読込みバイト数を返す読込み命令はありますか(例えば、readBulk)? /** * Dispatch an uncaught exception to the handler. This method is * intended to be called only by the JVM. */ private void dispatchUncaughtException(Throwable e) { getUncaughtExceptionHandler().uncaughtException(this, e); } //============================== import ch.ntb.usb.Device; import ch.ntb.usb.LibusbJava; import ch.ntb.usb.USB; import ch.ntb.usb.USBException; import ch.ntb.usb.Usb_Bus; import ch.ntb.usb.Usb_Config_Descriptor; import ch.ntb.usb.Usb_Device; import ch.ntb.usb.Usb_Device_Descriptor; import ch.ntb.usb.Utils; try{ size_readD=dev.readBulk(0x82, readData_byte, DATAWORDX*4, 500, true);   //size_readDはゼロにはならず、特別な割込みが発生します } catch (USBException e) { System.out.println("readBulk_Error_PLR(USBException): size_readD="+size_readD); System.exit(1); } if(size_readD==0){ //このコードは機能せず System.out.println("size_readD="+size_readD); break; } //===========================

  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

素人ですが、 >size_readD==0 size_readD==-1 ではありませんか? EOFになってはいませんか?

bakabon_X
質問者

お礼

maiko0318 さま 早速の回答有難うございます。 再度、考えて見ます。

関連するQ&A

  • JavaによるXMLの読み込みについて

    現在、JavaでXMLを読みたく色々なサイト様を参考にさせて頂き プログラムを作成しております。 その結果、下記のようなプログラムで要素名を取得することは出来たのですが、 「属性名」と「属性の値」を読み込み表示することが中々上手くいきません。 どこに何を追加したらよいでしょうか。宜しければ教えて下さい。 -- sample.java -- sample.xml -------------------------------------- import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.*; import java.io.*; public class sample { public static void main(String[] argv) { sample a = new sample(); a.runner(); } final static String file = "sample.xml"; public void runner() { DocumentBuilderFactory factory; DocumentBuilder builder; Node root; try { factory = DocumentBuilderFactory.newInstance(); builder = factory.newDocumentBuilder(); factory.setIgnoringElementContentWhitespace(true); factory.setIgnoringComments(true); factory.setValidating(true); root = builder.parse(file); showNodes(root, " "); } catch (ParserConfigurationException e0) { System.out.println(e0.getMessage()); } catch (SAXException e1){ System.out.println(e1.getMessage()); } catch (IOException e2) { System.out.println(e2.getMessage()); } } public void showNodes(Node node, String space) { NodeList nodes = node.getChildNodes(); for (int i=0; i<nodes.getLength(); i++) { Node node2 = nodes.item(i); if(!node2.getNodeName().equals("#text")){ System.out.println(space + "<" + node2.getNodeName() + ">"); showNodes(node2, space + " "); } } } }

    • ベストアンサー
    • Java
  • javaのプログラムの質問です

    2つの時間を取得し、それらの時差を計算しそれに*300をし結果を出力するプログラムを作っています。 workspace.java package org.parking.java; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; class Parking { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date dateTo1 = null; Date dateTo2 = null; private long dayDiff; public Parking() { try{ dateTo1 = sdf.parse("2017/09/14 10:00:00"); dateTo2 = sdf.parse("2017/09/15 09:00:00"); System.out.println("パーキングシステムを作りました。"); } catch (ParseException e){ e.printStackTrace(); } } public void setParking(Date dateTo1,Date dateTo2)// { long dateTimeTo = dateTo1.getTime(); long dateTimeFrom = dateTo2.getTime(); this.dayDiff = (dateTimeFrom - dateTimeTo)/(1000*60*60); } public void show() { System.out.println("日数(FROM) : " + sdf.format(dateTo1)); System.out.println("日数(TO) : " + sdf.format(dateTo2)); System.out.println("差分時間: " + this.dayDiff); System.out.println("納車してから"+ this.dayDiff +"時間が経ちましたので料金は"+ (this.dayDiff*300) +"となります。"); } } Parkingsub.java package org.parking.java; class Sample1 { public static void main(String[] args) { Parking parking1 = new Parking(); parking1.show(); } }  これで一応実行はできるんですけど、実行結果が パーキングシステムを作りました。 日数(FROM) : 2017/09/14 10:00:00 日数(TO) : 2017/09/15 09:00:00 差分時間: 0 納車してから0時間が経ちましたので料金は0となります。  となってしまうんです。いろいろやってみたんですがなかなか上手く行かなくて・・・。どなたかご教授願えませんしょうか。

    • ベストアンサー
    • Java
  • バイナリファイルの読み込みについて

    java初心者です。 今バイナリファイルの読み込みを行っているのですがバイナリファイルのデータの値とプログラムで読み込んだ値が違っているので困っています。 バイナリファイルはASCIIテキストになっていてデータを見ることができ中身は -0.00012 -0.00009 -0.00009 -0.00012 -0.00009 -0.00009 -0.00009 -0.00012 ・・・・・・・(値が続くという意味です) となっています。 作ったプログラムは import java.io.*; class a { public static void main(String[] args) { try { FileInputStream in = new FileInputStream("file name"); int ch; while ((ch = in.read()) != -1) { System.out.println(ch); } in.close(); } catch (IOException e) { System.out.println(e); } } } で作って読み込んでみたのですが出力された値は 45 48 46 48 48 48 49 50 ・・・・・・ になってしまいます。 どのようにしたら値が等しくなるのでしょうか。教えてください。

    • ベストアンサー
    • Java
  • importファイルのdownLoad方法

    下記のjavaプログラムをsite(URL参照)からdownLoadしました。 ここで、importするファイルとしまして、ch.ntb.usb.Device、ch.ntb.usb.USB、 ch.ntb.usb.USBExceptionがありますが、これらのファイルの入手方法に 付きまして、コメント頂けますと大変助かります。 (javaのlibに、既に格納されているかも知れませんが) 初心者の質問であり、また基本的な質問ですが、宜しくお願いします。 http://libusbjava.sourceforge.net/wp/res/demos/ReadWrite.java.html ================================== /* * Java libusb wrapper * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * http://libusbjava.sourceforge.net * This library is covered by the LGPL, read LGPL.txt for details. */ package ch.ntb.usb.demo; import ch.ntb.usb.Device; <--これらの入手方法がわかりません。 import ch.ntb.usb.USB; <--- import ch.ntb.usb.USBException; <-- /** * Demo class to demonstrate simple read and write operations to an USB device.<br> * * @author schlaepfer * */ public class ReadWrite { 以下、省略 =================================== 以上

    • ベストアンサー
    • Java
  • java repaint()に関して

    プログラムで以下のpaintComponents内のデバックができません。 理由は一体何なのでしょうか? お願いします。 import java.awt.Graphics; import javax.swing.JPanel; public class MainPanel extends JPanel implements Runnable { Thread th; public MainPanel() { super(); } public void movestart() { th = new Thread(this); th.start(); } public void paintComponent(Graphics g) { System.out.println("このデバックができない"); super.paintComponent(g); } public void run() { while (true) { System.out.println("ここのデバックはできている"); repaint(); try { th.sleep(100); } catch (Exception e) { } } } }

    • ベストアンサー
    • Java
  • JAVAのプログラムについて

    独学でJAVAを勉強中なのですが、 import java.io.*; public class ExserciseD5L3_2{ public static void main(String args[]){ BufferedReader br = new BufferedReader(newInputStreamReader(System.in),1); try{ System.out.println("■■■計算クイズ■■■"); System.out.println("計算してください。"); String Que[] = {"10×50=?","21-7=?","360÷6=?"}; int Ans[] = {500,14,60}; int counter; for(counter = 0; counter <=2; counter++ ){ System.out.println(Que[counter]); System.out.println("答えは?"); String str = br.readLine(); int i = Integer.parseInt(str); if(i == Ans[counter]){ System.out.println("おめでとう!大当たりです。"); } else{ System.out.println("残念!答えは"+Ans[counter]+"です。"); } } } catch(IOException e){ System.out.println("IOエラーが発生しました。"); } catch(NumberFormatException ne){ System.out.println("入力された数値が正しくないようです。"); } } } これを実行すると ■■■計算クイズ■■■ 計算してください。 10×50=? 答えは? 500 おめでとう!大当たりです。 21-7=? 答えは? 14 おめでとう!大当たりです。 360÷6=? 答えは? 60 おめでとう!大当たりです。 となるのですが、これに おめでとう!正解数は3つです。とか正解数は2つですなどのように 正解数も出るようにするにはどのようにしたらいいのでしょうか?

    • ベストアンサー
    • Java
  • java

    次のコード中の括弧内で下に示す11通りの各コードを実行した場合の実行画面を正確に答えよ。 class A{ public void func1(){System.out.println("A1");} public void func2(){System.out.println("A2");} } class B extends A{ public void func1(){System.out.println("B");} } class C{ public int x=0, y=1; } class D extends C{ public int x=2; public void func1(int x){System.out.println(x);} public void func2(int x){System.out.println(this.x);} public void func3(int x){System.out.println(super.x);} public void func4(int x){System.out.println(this.y);} public void func5(int x){System.out.println(super.y);} } class E{ public void func1(int n){ try{ System.out.println("E1"); int[] ary=new int[n]; System.out.println("E2"); }catch(NegativeArraySizeException e){ System.out.println("E3"); }finally{ System.out.println("E4"); } } } (1) A a=new A(); a.func1(); (2) A a=new B(); a.func1(); (3) B b=new B(); b.func1(); (4) B b=new B(); b.func2(); (5) D d=new D(); d.func1(3); (6) D d=new D(); d.func2(3); (7) D d=new D(); d.func3(3); (8) D d=new D(); d.func4(3); (9) D d=new D(); d.func5(3); (10) E e=new E(); e.func1(5); (11) E e=new E(); e.func1(-2); (1) A1 (2)B (3)B (4) A2 (5) 3 (6) 2 (7) 0 (8) 1 (9) 1 (10) E1E2E4(11) E1E3E4 と答えになるんですがなぜこうなるのかわかりません。教えてください

    • ベストアンサー
    • Java
  • javaで課題を出されています

    題名の通りなのですが、javaのプログラミングで課題を出されていて うまく書けません お題としては 1 if分と論理演算を使うこと。 2 forまたはwhileを使用すること 3 メソッドを使用すること。(main以外で) 4 配列を使用すること 以上なのですが、一応昔スロットプログラムを作っていたのでこれをベースに作ろうかなと考えています import java.io.*; public class Slot01{ public static void main(String[] args){ try{ //String line =reader.readLine(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("こんにちは!スロットゲームへようこそ!"); System.out.println("EnterKeyを押して当たりを出してくださいね!"); while(true){ //while文は処理を繰り返すためのものです。 // ▽これよりソースを打ち込んでください //try{ int x=(int)(Math.random()*9)+1; int y=(int)(Math.random()*9)+1; int z=(int)(Math.random()*9)+1; int[]kakuritu; int sum; System.out.print(x); System.out.print(y); System.out.print(z); System.out.println(""); String line =reader.readLine(); //System.out.println(""); if(x==7&&y==7&&z==7){ System.out.println("スーパー大当たり"); }else if(x==y&&y==z){ System.out.println("大当たり"); }else if(x==y||y==z||x==z){ System.out.println("小当たり"); }else{ System.out.println("外れ"); } }//while文の終わり }catch (IOException e){ System.out.println(e); }catch (NumberFormatException e){ System.out.println("正しい形式で表示してください。"); } } } このプログラムなのですが、1と2はこの中に入ってます。考えてみたのですが、このプログラムに当たり確率を表示させるプログラムなら3と4も満たせそうなのですが、いまいちソースが思いつきませんのでご教授お願いします。 文章おかしいところだらけで申し訳ありません。

    • ベストアンサー
    • Java
  • eclipse,mysql,javaエラー

    Class.forName("com.mysql.jdbc.Driver")が接続出来ません どなたかお教え頂けないでしょうか MySQLを再インストールしてもだめです 下記環境で動かしています。 eclipse-3.72 MySQL5.5.13,JDBC:4.0.0 mysql-connector-java5.1.17-bin.jar jdk.1.6.0_26 eclipseで 接続プロファイルを作成し、mysql-connector-java5.1.17-bin.jarを設定して 接続デスト pingが正常に完了しましたで問題がありません。 またjavaのビルド・パスにもmysql-connector-java5.1.17-bin.jarが有りますが javaを実行すると下記状態になります Class.forName("com.mysql.jdbc.Driver")が接続出来ません 下記が実行ソースプログラム import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class test01 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>データベーステスト</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>"); Connection conn = null; String url = "jdbc:mysql://localhost/testdb"; String user = "root"; String password = "test"; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); out.println("ドライバのロードに成功しました<br>"); conn = DriverManager.getConnection(url, user, password); out.println("データベース接続に成功しました<br>"); }catch (ClassNotFoundException e){ out.println("ClassNotFoundException:" + e.getMessage()); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); }catch (Exception e){ out.println("Exception:" + e.getMessage()); }finally{ try{ if (conn != null){ conn.close(); out.println("データベース切断に成功しました"); }else{ out.println("コネクションがありません"); } }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); } } out.println("</p>"); out.println("</body>"); out.println("</html>"); } }

    • ベストアンサー
    • Java
  • switch文の引数について質問します

    ch.ntb.usb.testAppの中に下記のルーチンがあり、switch文の最初に "8.$"の記述があります。 Q1)この様な書き方があるのでしょうか? 注)ch.ntb.usb.testAppは、ch.ntb.usb-0.5.9.jarの中のpackageです。 void setOutEpAddr() { switch (8.$SwitchMap$ch$ntb$usb$testApp$AbstractDeviceInfo$TransferMode[this.dev.getOutMode().ordinal()]) { case 1: this.outEpText.setText(toHexString(this.dev.getOutEPBulk())); break; case 2: this.outEpText.setText(toHexString(this.dev.getOutEPInt())); break; } } 以上、宜しくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう