WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   SerialPort und Java (http://www.wcm.at/forum/showthread.php?t=65150)

Who-T 02.08.2002 17:07

SerialPort und Java
 
nach mehreren stunden herumprobieren muss ich jetzt aufgeben


ich hab mein handy per kabel am serial port angeschlossen, kann jedoch über java nichts rausschicken bzw empfangen

zur erklärung des codes:
zuerst wird der entsprechende port geöffnet, dann werden die enstprechenden einstellungen gesetzt

alle messages, die auftreten können, werden abgefangen, tatsächlich treten im beispiel nur zweimal die "output buffer empty" msgs auf.

eigentlich sollte die message AT "OK" als rückmeldung liefern, tatsächlich kommt aber nichts zurück, av steht immer auf 0.

mit einem normalen terminal funktioniert das ganze, sprich es muss irgendwo an der verbindung zwischen java und dem port liegen.

die einstellungen (19200 baud usw) sollten auch passen, das hyperterminal funkt mit diesen einstellungen, sind auch die, die von siemens empfohlen werden.



Code:



  Enumeration en = CommPortIdentifier.getPortIdentifiers();

    while (en.hasMoreElements())
    {
      CommPortIdentifier current = (CommPortIdentifier)en.nextElement();

      if (current.getPortType() == CommPortIdentifier.PORT_SERIAL && current.getName().equals ("COM1"))
      {
        m_port = (SerialPort)current.open("PortConnector", 1000);
        m_port.setSerialPortParams(19200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
        m_port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
        System.out.println ("serial prot connected");
      }
    }

  m_port.addEventListener(this);
  m_port.notifyOnDataAvailable(true);
  m_port.notifyOnOutputEmpty(true);
  m_port.notifyOnBreakInterrupt(true);
  m_port.notifyOnCarrierDetect(true);
  m_port.notifyOnCTS(true);
  m_port.notifyOnDSR(true);
  m_port.notifyOnFramingError(true);
  m_port.notifyOnOverrunError(true);
  m_port.notifyOnParityError(true);
  m_port.notifyOnRingIndicator(true);



  String msg = "AT";

  OutputStream out = m_port.getOutputStream();
  InputStream in =m_port.getInputStream();

  try{

      out.write(msg.getBytes());
      out.write(13); // <CR>

  } catch (IOException e)
  {
      System.out.println("writing failed");
  }

  out.flush();
  out.close();

  System.out.println("writing finished");

  int av = in.available();
  System.out.println (av);


der output:
serial prot connected
output empty // wird vom event listener ausgegeben
output empty
ready
0 // da sollte eigentlich 2 stehen, weil ja OK zurückkommt


ich hoff irgendwer kann mir weiterhelfen, weil ich sitz schon den ganzen nachmittag und programmier ins blinde, weil ich keine rückmeldungen krieg und keine ahnung hab ob überhaupt beim handy was ankommt.

Who-T 02.08.2002 20:20

problem gelöst

es gehören verzögerungen von mindestens 400 ms rein, sonst kommen die buchstaben zu schnell an und das handy kann nicht interpretieren.

mit einem Thread.sleep() übernimmt er jetzt die kommandos

Stona 02.08.2002 20:54

habe gerne geholfen!:D
viel glück noch bei deinen projekten and thumbs up!
man sieht sich...


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag