ParallelPort outputStream

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ParallelPort outputStream

    Weiß jemand wie man an den Befehl outputstream.write() ein Byte mit 8 Bit schicken kann? ich würde gerne 10001000 schicken, weiß aber nicht wie.
    Ich haben es mit dem outputstream.write(int b) befehl versucht, doch bekomm ich da immer eine IOException.

    P.S.: Ich benutzte RXTX 1.2.7 und steuere damit einen roboter an.
  • Java-Quellcode

    1. import gnu.io.CommPortIdentifier;
    2. import gnu.io.NoSuchPortException;
    3. import gnu.io.ParallelPort;
    4. import gnu.io.PortInUseException;
    5. import java.io.IOException;
    6. import java.io.OutputStream;
    7. import sun.io.CharToByteConverter;
    8. public class ParallelCommunicationb1 {
    9. private static OutputStream outputStream;;
    10. private static ParallelPort parallelPort;
    11. private static CommPortIdentifier port;
    12. // CONSTANTS
    13. public static final String PARALLEL_PORT = "LPT1";
    14. public static final String[] PORT_TYPE = { "Serial Port", "Parallel
    15. Port" };
    16. // these commands are specific for my printer around the text
    17. private static String printerCodes = "D";
    18. public static void main(String[] args) {
    19. System.out.println("Started test....");
    20. try {
    21. // get the parallel port connected to the printer
    22. port = CommPortIdentifier.getPortIdentifier(PARALLEL_PORT);
    23. System.out.println("\nport.portType = " + port.getPortType());
    24. System.out.println("port type = "
    25. + PORT_TYPE[port.getPortType() - 1]);
    26. System.out.println("port.name = " + port.getName());
    27. // open the parallel port -- open(App name, timeout)
    28. parallelPort = (ParallelPort) port.open("CommTest", 50);
    29. outputStream = parallelPort.getOutputStream();
    30. char[] charArray = printerCodes.toCharArray();
    31. byte[] byteArray = CharToByteConverter.getConverter("UTF8")
    32. .convertAll(charArray);
    33. byteArray[0]=-120; /dies sollte 10001000 geben
    34. System.out.println("Write...");
    35. outputStream.write(byteArray);
    36. System.out.println("Flush...");
    37. outputStream.flush();
    38. System.out.println("Close...");
    39. outputStream.close();
    40. } catch (NoSuchPortException nspe) {
    41. System.out.println("\nPrinter Port LPT1 not found : "
    42. + "NoSuchPortException.\nException:\n" + nspe + "\n");
    43. } catch (PortInUseException piue) {
    44. System.out.println("\nPrinter Port LPT1 is in use : "
    45. + "PortInUseException.\nException:\n" + piue + "\n");
    46. }
    47. /*
    48. * catch (UnsupportedCommOperationException usce) {
    49. * System.out.println("\nPrinter Port LPT1 fail to write :
    50. * UnsupportedCommException.\nException:\n" + usce + "\n"); }
    51. */
    52. catch (IOException ioe) {
    53. System.out.println("\nPrinter Port LPT1 failed to write : "
    54. + "IOException.\nException:\n" + ioe + "\n");
    55. } catch (Exception e) {
    56. System.out
    57. .println("\nFailed to open Printer Port LPT1 with
    58. exeception : "
    59. + e + "\n");
    60. } finally {
    61. if (port != null && port.isCurrentlyOwned()) {
    62. parallelPort.close();
    63. }
    64. System.out.println("Closed all resources.\n");
    65. }
    66. }
    67. }
    Alles anzeigen

    Dabei kommt aber nichts bei meinem Roboter an.
    Edit: Also nur die eine 1, es kommt als 0001000 an.
  • Also zunächst mal ist, wieso nimmst du -120 als initialisierungs wert? Würde es nicht auch mit 136 gehen? ;) Ich weiß nicht ob es daran liegen kann, aber nur sone idee.. An sonsten würd ich es denk ich auch so machen... Sagtest du nicht du bekommst ne Exception?
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]
  • Ne, die Exception kommt wenn ich

    Quellcode

    1. outputStream.write(136);
    oder

    Quellcode

    1. outputStream.write(-120);

    benutzte.
    Wenn ich als wert bei dem obengenannten code 136 einfüge bekomm ich beim compilieren den Error "possible loss of precision".

    Edit:P.S.: ich benutzte BlueJ zum Programmieren...

    Niemadn weiß es? Dann werd ic wohl einen Bug-Report schreiben...

    Edit: war nen Hardwareproblem :( der paralle Port ist im arsch :( naja, wer wohl einen anderen Pc nehmen...