ParallelPort Problem

DragQueenMum

Grünschnabel
Hallo zusammen,

ich hab ein 'kleines' Problem. Ich würde gerne irgendein Signal an den Parallel Port senden, was auch eigtl. ganz gut funktioniert, allerdings nach dem 10ten Aufruf der Applikation wird eine NoSuchPortException geworfen.

Hier der Code: (von der RXTX Page übernommen und nur leicht modifiziert --> das selbe Problem tritt allerdings auch ohne Modifizierung auf)

Code:
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.ParallelPort;
import gnu.io.PortInUseException;

import java.io.IOException;
import java.io.OutputStream;

public class ParallelCommunication {

    private static OutputStream outputStream;;
    private static ParallelPort parallelPort;
    private static CommPortIdentifier port;

    public static final String PARALLEL_PORT = "LPT1";
    public static final String[] PORT_TYPE = { "Serial Port", "Parallel Port" };
    
    public static void main(String[] args) 
    {

        try {
            port = CommPortIdentifier.getPortIdentifier(PARALLEL_PORT);
            parallelPort = (ParallelPort) port.open("Test", 10);
            outputStream = parallelPort.getOutputStream();
            System.out.println(port);
            String msg = "1";
	        System.out.println("Write...");
	        outputStream.write(msg.getBytes());
	        System.out.println("Flush...");
	        outputStream.flush();
	        System.out.println("Close...");
	        
        } catch (NoSuchPortException nspe) 
        	{System.out.println("\nNoSuchPortException\n"); nspe.printStackTrace();
        } catch (PortInUseException piue) 
        	{System.out.println("\nPortInUseException\n"); piue.printStackTrace();
        }catch (IOException ioe) 
        	{System.out.println("\nIOException\n"); ioe.printStackTrace();
        } catch (Exception e) 
        	{e.printStackTrace();
        } finally 
          {
            if (port != null && port.isCurrentlyOwned())
                parallelPort.close();

            System.out.println("Closed all resources.\n");
         }
    	
    }
}

Was mich jetzt brennend interessieren würde:
Liegt das Problem an der Implementation oder am Port-Buffer o.ä und wie könnte ich das beheben?
Mit bestem Dank im Voraus!!

lg
DQM
 
Zuletzt bearbeitet:
Hat sich bereits erledigt. Viel einfacher gehts mit der jnpout32.dll:
(die DLL gibts unter:http://www.hytherion.com/beattidp/comput/pport.htm)

Code:
import jnpout32.*;

public class sendToParPort
{
   static final short Addr = 0x378;
   static short data;
   static pPort lpt;

   public sendToParPort(int value) //  zB value = 10;
   {
         lpt = new pPort();
	 data = (short)value;
	 do_write();
    }
	
    static void do_read()
    {
          data = (short) lpt.input(Addr);
    }

    static void do_write()
    {
         lpt.output(Addr,data);
    }
}

Zur Kontrolle ob (in Windows) wirklich was am Port anliegt auf der CommandLine
> debug
-i 378
eingeben;

lg
DQM
 
Hy DragQueenMum...kannst du mir vielleicht erklären wo genau ich die DLL jnpout32.dll einfügen muss? Versteh grad nicht genau das ReadME....

mfg
 
Hallo,

die Datei 'jnpout32pkg.dll' bzw 'jnpout32.dll' (je nach dem, was du heruntergeladen hast) gehört ins Verzeichnis 'C:\Windows\System32\' kopiert;

Für Eclipse:
New Package --> Name: jnpout32
Und dann die beiden Dateien aus 'Jnpout32pkg_v10\ioTest_pkg\jnpout32', nämlich 'ioPort.java' und 'pPort.java' ins Package ziehen.

Müsste dann eigtl. funktionieren;

lg
DQM
 
Zurück