Jpos-Kassendrucker: Com-Port bleibt zu

jpjp

Grünschnabel
Hallo.
Ich probiere mich derzeit mit Bon-Druckern und dazugehörigen Geldschubladen..Leider habe ich ein Problem mit dem öffnen des Com-Ports.
Der Code sollte ~eigendlich~ die Geldschublade öffnen...passiert aber natürlich nicht!
try {
CashDrawer dd=new CashDrawer();
dd.open("TSP600-tearbar-cashdrawer-windows-serial");
dd.claim(1);
dd.setDeviceEnabled(true);
dd.openDrawer();
dd.release();
dd.close();
System.out.println("CashDrawer geöffnet!");
}
catch (JposException ex) {
System.out.println(ex);
}
Statt die Lade zu öffnen wirft er mir "jpos.JposException: Can not open the communications port."
Der Drucker ist an COM1 angeschlossen und in XP installiert.
Warum wird diese Exception geworfen? Wie kann ich's vorbeugen?
Danke im Vorraus
 
Zuletzt bearbeitet:
Statt die Lade zu öffnen wirft er mir "jpos.JposException: Can not open the communications port."
Der Drucker ist an COM1 angeschlossen und in XP installiert.
Warum wird diese Exception geworfen? Wie kann ich's vorbeugen?

Moin,

ich kenne zwar Deine Drucker nicht, würde doch aber ganz stark vermuten, dass die Eingabe in der Zeile
Java:
dd.open("TSP600-tearbar-cashdrawer-windows-serial");
so nicht stimmt resp. nicht erkannt werden kann.

Sicher, dass das so richtig ist?

Gruß
Klaus
 
also ich bin mir ziemlich sicher, dass die zeile richtig ist.. in der mitgelieferten jpos.xml steht nämlich unter anderem
<JposEntry logicalName="TSP600-tearbar-cashdrawer-windows-serial">
<creation factoryClass="com.starmicronics.javapos.ServiceInstanceFactory" serviceClass="com.starmicronics.javapos.StarJPOSCashDrawer"/>
<vendor name="Star Micronics Co., Ltd." url="http://www.star-micronics.co.jp"/>
<jpos category="CashDrawer" version="1.4a"/>
<product description="Printer controlled Cash Drawer" name="TSP600" url="http://www.star-micronics.co.jp"/>
<!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
<prop name="portName" type="String" value="COM1"/>
<prop name="errorResponseTimeout" type="Long" value="5000"/>
<prop name="statusTimeout" type="Long" value="500"/>
<prop name="timeout" type="Long" value="10000"/>
<prop name="starModel" type="String" value="TSP600"/>
<prop name="deviceClassName" type="String" value="com.starmicronics.javapos.DeviceTSP613"/>
<prop name="portSettings" type="String" value="9600,none,8,1,hdwr"/>
<prop name="statusTimeDelay" type="Long" value="500"/>
<prop name="cashDrawer1" type="Boolean" value="true"/>
<prop name="drawerClosedOnSignalLow" type="Boolean" value="false"/>
</JposEntry>
Der Drucker ist nat. über COM1 angeschlossen, dürfte doch meines Wissens ein Serieller Anschluss sein..
 
Der Drucker ist nat. über COM1 angeschlossen, dürfte doch meines Wissens ein Serieller Anschluss sein..

Moin,

ja, klar - das ist natürlich richtig :p
Aber wie ich schon sagte: ich vermute ganz stark, das der Aufruf
Code:
dd.open("TSP600-tearbar-cashdrawer-windows-serial");
so in dieser Form falsch ist !

Gruß
Klaus
 
Aber wie ich schon sagte: ich vermute ganz stark, das der Aufruf [..]
so in dieser Form falsch ist !
Das denk ich auch, nur ich frage mich ,wo zum Henker!
STAR Micronics war so gnädig, eine Test-Klasse ins Netz zu stellen:
Code:
// This file contains sample code illustrating how to use the CashDrawer class to
// control your cash drawer.  The basic control and status querying mechanisms
// are used here.  For more advanced usage of the CashDrawer class, see the 
// JavaPOS specification.

// usage instructions
// 1. compile from command line - javac -classpath jcl.jar:jpos17-controls.jar StarCashDrawerTest.java
// 2. execute from command line - java -classpath starjavapos.jar StarCashDrawerTest

// NOTE: CHANGE THE CASH DRAWER NAME IN THE cashDrawer.open STATEMENT BELOW TO MATCH YOUR USAGE SCENARIO

// support contact
// ---------------
// Albert Kennis
// Software Engineer
// Star Micronics Co., Ltd.
// albert@star-m.jp

import jpos.CashDrawer;
import jpos.JposException;

public class StarCashDrawerTest
{
    public static void main(String[] args)
    {
        // instantiate a new jpos.CashDrawer object
        CashDrawer cashDrawer = new CashDrawer();
        
        try
        {
            // open the cashDrawer object according to the entry names defined in jpos.xml
            //cashDrawer.open("TSP700-cashdrawer-linux-usb");               // TSP700 cashDrawer - linux - usb
            //cashDrawer.open("TSP700-cashdrawer-linux-serial");            // TSP700 cashDrawer - linux - serial
            //cashDrawer.open("TSP700-cashdrawer-linux-parallel");          // TSP700 cashDrawer - linux - parallel
            
            //cashDrawer.open("TSP700-cashdrawer-windows-usb");             // TSP700 cashDrawer - windows - usb
            //cashDrawer.open("TSP700-cashdrawer-windows-serial");          // TSP700 cashDrawer - windows - serial
            //cashDrawer.open("TSP700-cashdrawer-windows-parallel");        // TSP700 cashDrawer - windows - parallel
            
            cashDrawer.open("TSP700-cashdrawer-mac-usb");                 // TSP700 cashDrawer - mac - usb
            
            //cashDrawer.open("TSP700-cashdrawer-ethernet");                // TSP700 cashDrawer - ethernet
            
            // claim exclsive usage of the cashDrawer object
            cashDrawer.claim(1);
            
            // enable the device for input and output
            cashDrawer.setDeviceEnabled(true);
            
            // check if the drawer is currently opened
            // if this check returns true when the drawer is ACTUALLY CLOSED,
            //    set the drawerClosedOnSignalLow property of this device's entry
            //    in the jpos.xml file to true
            if (cashDrawer.getDrawerOpened() == true)
            {
                System.out.println("cashDrawer.getDrawerOpened() == true");
            }
            else
            {
                System.out.println("cashDrawer.getDrawerOpened() == false");
            }
            
            // open the cash drawer
            //   if your cash drawer is wired to the printer's control circuit
            //   number 2, set the cashDrawer1 proprty of this device's entry in
            //   jpos.xml file to true
            cashDrawer.openDrawer();
        }
        catch(JposException e)
        {
            // display any errors that come up
            e.printStackTrace();
        }
        finally
        {
            // close the cashDrawer object
            try
            {
                cashDrawer.close();
            }
            catch (Exception e) {}
        }
        
        System.out.println("StarCashDrawerTest finished.");
        System.exit(0);
    }
}
...und bis auf den Unterschied TSP600/700 sollte es doch keine massiven Unterschiede geben...
Und trotzdem klappt's nicht!
 
Zurück