Java SE Embedded hardware interface support

What are the available options for integrating with hardware interfaces with Java SE Embedded?
- I've noticed that the Java Comms API doesn't seem to have any recent activity, and is only provided for a small number of os+hw combinations.
- A number of community posts elsewhere recommend RXTX (http://rxtx.qbang.org/wiki/index.php/Main_Page) - it looks like this is limited to just serial or parallel ports though - is this correct? Is this widely used?
- I've noticed libraries like Pi4J (http://pi4j.com/) provide a great Java API to interact with the GPIO pins on the Raspberry Pi. This is a great approach if there is a library like this for the hardware platform you are running on, but if there isn't what are the alternatives? Do you have to write your own C shared libraries to integrate with the hardware, and then use this via JNI?
Thanks, Kevin

See Java for Mac OS X 10.5 Update 1 adds support for Java SE 6. Note the system requirements exclude PPC machines.
Apple does not drop software support, however, they stop updating older versions because the requirements of new software exceed what older hardware can provide. This is simply the result of obsolescence. Your version of OS X is capable of supporting Java SE 6, but your hardware is not able to run that software.
If it's essential that you be able to run new versions of software that have requirements that exceed what you hardware or OS can support, then you have to upgrade accordingly. Sell your PPC machine or donate it to a reputable charity or local school/church. Then buy a new machine that can run the software you wish to use.

Similar Messages

  • Jave ME Embedded support KEIL MCBSTM32F200 and Raspberry Pi Model B ONLY???

    I am a JEE developer and quite new to Java ME Embedded ( just started 12 hours ago), I am confused in following questions, please help, thanks!
    1. Java ME Embedded 3.3 is support KEIL MCBSTM32F200 and Raspberry Pi Model B ONLY? Or any ARM Cortex M3/RTX and ARM 11/Linux architecture? Does if have supported embedded board/architecture list?
    2. If the answer to #1 is no, does that mean that I the reference implementation KEIL MCBSTM32F200 can be used on any ARM Cortex M3/RTX architecture and Raspberry Pi Model B can be used on any ARM 11 architecture?
    3. if the answer to #1 is no, how should i choose the embedded board for Jave ME Embedded for general purpose (give some recommendation is ok)?
    4. If the answer to #1 is YES, that should be limit usage of Jave ME Embedded on KEIL MCBSTM32F200 and Raspberry Pi Model B; and it can't be used on other embedded device. Or I have to choose Java ME Embedded Client or Java SE Embedded ( this will take more resource, but I only have limitted resource)? Is my understand correct? Does Java ME Embedded has roadmap to support wide embedded device?
    Thanks for your time!
    Best regards
    Michael

    Hi Michael,
    Sorry for the slow reply. Some answers:
    Our officially supported Cortex-M platform for Java ME Embedded 3.3 is the KEIL MCBSTM32F200, which is based on the STM32F207 chip. There is a very similar STMF32407 chip, which is used on KEIL MCBSTM32F400 and we've verified Java ME Embedded 3.3 works there as well. It is likely that Java ME Embedded runs on other platforms using the STM32F207 or 407 chips, but it is impossible for us to verify all these platforms. If you get a chance to try one of those we would love to hear about your experiences.
    For Java ME Embedded on ARM11/Linux: RasPi Mod B is our officially supported platform. Unfortunately, the Linux support for some of the peripherals needed by Java ME Embedded (such as GPIO and I2C) is inconsistent - this is a function of the state of the Linux device drivers, not of Java ME Embedded. We are looking into providing wider support for ARM/Linux platforms in the future, which isn't difficult, but we just haven't gotten around to it.
    Generally, when deciding on specific hardware for a particular use case it very much depends on the details. If it is a customized system based on the STM32F207 or 407 chips then the need for porting/customization of Java ME Embedded should be minimal. If it is a customized system based on ARM/Linux, please contact us as we are already looking into widening support for ARM/Linux. Finally, if you are targeting a system that is very different from the above, then you can work with Oracle or Oracle partners for an optimized port of Java ME Embedded to your platform.
    Finally, we are planning to provide support for additional platforms in the near future - stay tuned for announcements.
    Hope this helps. Let me know if you have more questions.
    Best,
    Terrence Barr
    Product Manager, Oracle

  • Real-time support in Java SE Embedded

    From what I understand, Java SE Embedded is a slimmed down SE JDK/JRE compiled to support different typical embedded processors, ARM etc.
    Does Java SE Embedded provide any additional support for handling realtime situations? For example, are there any JVM modifications to guarantee response times and execution times for time critical scenarios?
    The reason for asking is that I know a while back there was a specific Real Time Java release - did any of this technology get rolled into the new SE Embedded?
    Thanks.

    Yes, Java3D or an openGL toolkit such as JOGL or LWJGL is probably the best choice. Bearing in mind that Java3D is on the way out you may want to look at using OpenGL although there is much talk over at javagaming.org of putting together an open-source Java3D-like scenegraph renderer for the openGL toolkits and the guy working on it is very good indeed so it will probably happen. Assuming that it does, time spent learning Java3D is not wasted time.
    If you are interested in Java3D download the API and tutorials and see how you get on with it. I put together a fairly gaming oriented tutorial here http://www.newview.co.uk/e/tutorials/java3d/index.jsp which may help you get started.
    If you are serious about writing games in Java you will want to get over to the javagaming forums http://www.javagaming.org/cgi-bin/JGNetForums/YaBB.cgi because that is where you can generally find the best advice. There are a number of old threads on this question there and you will probably find it well worth your while to look through the older posts on it.

  • DO i need some extra hardware interface for receving both Audio and video

    hi i m doing e-learning project. i have to capture video from webcam and voice from headphone and send to client.
    but my code is working fine for either one at a time.
    DO i need some extra hardware interface for receving both Audio and video. im using code AVTransmit and AVReceive found from this site only
    After running TX
    i give Dsound:// & vfw://0 in Media Locater only sound is received and no vedio
    and when i give vfw://0 in Media Locater only live video is transmited.
    im using JMF1.1.2e.
    if any one know the method to run or cause of it plz reply me soon. i will be very thankfull
    transmiter/server side code .first run TX on server
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.media.rtp.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    public class Tx extends JFrame implements ActionListener, KeyListener,
    MouseListener, WindowListener {
    Vector targets;
    JList list;
    JButton startXmit;
    JButton rtcp;
    JButton update;
    JButton expiration;
    JButton statistics;
    JButton addTarget;
    JButton removeTarget;
    JTextField tf_remote_address;
    JTextField tf_remote_data_port;
    JTextField tf_media_file;
    JTextField tf_data_port;
    TargetListModel listModel;
    AVTransmitter avTransmitter;
    RTCPViewer rtcpViewer;
    JCheckBox cb_loop;
    Config config;
    public Tx() {
    setTitle( "JMF/RTP Transmitter");
         config= new Config();
         GridBagLayout gridBagLayout= new GridBagLayout();
         GridBagConstraints gbc;
         JPanel p= new JPanel();
         p.setLayout( gridBagLayout);
         JPanel localPanel= createLocalPanel();
         gbc= new GridBagConstraints();
         gbc.gridx= 0;
         gbc.gridy= 0;
         gbc.gridwidth= 2;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( localPanel, gbc);
         p.add( localPanel);
         JPanel targetPanel= createTargetPanel();
         gbc= new GridBagConstraints();
         gbc.gridx= 1;
         gbc.gridy= 1;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( targetPanel, gbc);
    p.add( targetPanel);
         JPanel mediaPanel= createMediaPanel();
         gbc= new GridBagConstraints();
         gbc.gridx= 1;
         gbc.gridy= 2;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( mediaPanel, gbc);
    p.add( mediaPanel);
    JPanel buttonPanel= new JPanel();
    rtcp= new JButton( "RTCP Monitor");
    update= new JButton( "Transmission Status");
         update.setEnabled( false);
         rtcp.addActionListener( this);
         update.addActionListener( this);
         buttonPanel.add( rtcp);
         buttonPanel.add( update);
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 3;
    gbc.gridwidth= 2;
         gbc.weightx = 1.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.CENTER;
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( buttonPanel, gbc);
         p.add( buttonPanel);
    getContentPane().add( p);
         list.addMouseListener( this);
         addWindowListener( this);
    pack();
    setVisible( true);
    private JPanel createMediaPanel() {
    JPanel p= new JPanel();
         GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
         p.setLayout( gridBagLayout);
         JLabel label= new JLabel( "Media Locator:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
         p.add( label);
         tf_media_file= new JTextField( 35);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 0;
         gbc.weightx = 1.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( tf_media_file, gbc);
         p.add( tf_media_file);
         tf_media_file.setText( config.media_locator);
         cb_loop= new JCheckBox( "loop");
         startXmit= new JButton( "Start Transmission");
         startXmit.setEnabled( true);
         startXmit.addActionListener( this);
         gbc= new GridBagConstraints();
         gbc.gridx = 2;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( cb_loop, gbc);
         p.add( cb_loop);
         cb_loop.setSelected( true);
         cb_loop.addActionListener( this);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.CENTER;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( startXmit, gbc);
         p.add( startXmit);
         TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Source");
         p.setBorder( titledBorder);
         return p;
    private JPanel createTargetPanel() {
    JPanel p= new JPanel();
         GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
         p.setLayout( gridBagLayout);
         targets= new Vector();
         for( int i= 0; i < config.targets.size(); i++) {
         targets.addElement( config.targets.elementAt( i));
    listModel= new TargetListModel( targets);
    list= new JList( listModel);
         list.addKeyListener( this);
         list.setPrototypeCellValue( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    JScrollPane scrollPane= new JScrollPane( list,
    ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
         gbc= new GridBagConstraints();
         gbc.gridx= 0;
         gbc.gridy= 0;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( scrollPane, gbc);
         p.add( scrollPane);
    JPanel p1= new JPanel();
         p1.setLayout( gridBagLayout);
         JLabel label= new JLabel( "IP Address:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
         p1.add( label);
         tf_remote_address= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_address, gbc);
         p1.add( tf_remote_address);
         label= new JLabel( "Data Port:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
         p1.add( label);
         tf_remote_data_port= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_data_port, gbc);
         p1.add( tf_remote_data_port);     
    JPanel p2= new JPanel();
    addTarget= new JButton( "Add Target");     
    removeTarget= new JButton( "Remove Target");
         p2.add( addTarget);
         p2.add( removeTarget);
         addTarget.addActionListener( this);
         removeTarget.addActionListener( this);
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 2;
         gbc.weightx = 1.0;
         gbc.weighty = 0.0;
         gbc.gridwidth= 2;
         gbc.anchor = GridBagConstraints.CENTER;
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets( 20,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( p2, gbc);
         p1.add( p2);
         gbc= new GridBagConstraints();
         gbc.gridx= 1;
         gbc.gridy= 0;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( p1, gbc);
         p.add( p1);
         TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Targets");
         p.setBorder( titledBorder);
         return p;
    private JPanel createLocalPanel() {
    JPanel p= new JPanel();
         GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
         p.setLayout( gridBagLayout);
         JLabel label= new JLabel( "IP Address:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
         p.add( label);
         JTextField tf_local_host= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p.getLayout()).setConstraints( tf_local_host, gbc);
         p.add( tf_local_host);
         try {
    String host= InetAddress.getLocalHost().getHostAddress();     
         tf_local_host.setText( host);
         } catch( UnknownHostException e) {
         label= new JLabel( "Data Port:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
         p.add( label);
         tf_data_port= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( tf_data_port, gbc);
         p.add( tf_data_port);
         tf_data_port.setText( config.local_data_port);
         TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Local Host");
         p.setBorder( titledBorder);
         return p;
    public void actionPerformed( ActionEvent event) {
    Object source= event.getSource();
         if( source == addTarget) {
         String ip= tf_remote_address.getText().trim();
         String port= tf_remote_data_port.getText().trim();
         String localPort= tf_data_port.getText().trim();
         addTargetToList( localPort, ip, port);
         if( avTransmitter != null) {
         avTransmitter.addTarget( ip, port);
         } else if( source == removeTarget) {
         int index= list.getSelectedIndex();
         if( index != -1) {
              Target target= (Target) targets.elementAt( index);
              if( avTransmitter != null) {
         avTransmitter.removeTarget( target.ip, target.port);
              targets.removeElement( target);
              listModel.setData( targets);          
         } else if( source == startXmit) {
         if( startXmit.getLabel().equals( "Start Transmission")) {          
         int data_port= new Integer( tf_data_port.getText()).intValue();
              avTransmitter= new AVTransmitter( this, data_port);
         avTransmitter.start( tf_media_file.getText().trim(), targets);          
              avTransmitter.setLooping( cb_loop.isSelected());
         startXmit.setLabel( "Stop Transmission");
         } else if( startXmit.getLabel().equals( "Stop Transmission")) {
              avTransmitter.stop();
              avTransmitter= null;
              removeNonBaseTargets();
              listModel.setData( targets);
         startXmit.setLabel( "Start Transmission");          
         } else if( source == rtcp) {
         if( rtcpViewer == null) {
         rtcpViewer= new RTCPViewer();
         } else {
              rtcpViewer.setVisible( true);
              rtcpViewer.toFront();
         } else if( source == cb_loop) {
         if( avTransmitter != null) {
              avTransmitter.setLooping( cb_loop.isSelected());
    private void removeNonBaseTargets() {
         String localPort= tf_data_port.getText().trim();
         for( int i= targets.size(); i > 0;) {
         Target target= (Target) targets.elementAt( i - 1);
         if( !target.localPort.equals( localPort)) {
    targets.removeElement( target);
         i--;
    public void addTargetToList( String localPort,
                             String ip, String port) {     
    ListUpdater listUpdater= new ListUpdater( localPort, ip,
                                  port, listModel, targets);
    SwingUtilities.invokeLater( listUpdater);           
    public void rtcpReport( String report) {
         if( rtcpViewer != null) {
         rtcpViewer.report( report);
    public void windowClosing( WindowEvent event) {
         config.local_data_port= tf_data_port.getText().trim();
         config.targets= new Vector();
         for( int i= 0; i < targets.size(); i++) {
         Target target= (Target) targets.elementAt( i);
         if( target.localPort.equals( config.local_data_port)) {
              config.addTarget( target.ip, target.port);
         config.media_locator= tf_media_file.getText().trim();
         config.write();
    System.exit( 0);
    public void windowClosed( WindowEvent event) {
    public void windowDeiconified( WindowEvent event) {
    public void windowIconified( WindowEvent event) {
    public void windowActivated( WindowEvent event) {
    public void windowDeactivated( WindowEvent event) {
    public void windowOpened( WindowEvent event) {
    public void keyPressed( KeyEvent event) {
    public void keyReleased( KeyEvent event) {
    Object source= event.getSource();
         if( source == list) {
         int index= list.getSelectedIndex();
    public void keyTyped( KeyEvent event) {
    public void mousePressed( MouseEvent e) {
    public void mouseReleased( MouseEvent e) {
    public void mouseEntered( MouseEvent e) {
    public void mouseExited( MouseEvent e) {
    public void mouseClicked( MouseEvent e) {
    Object source= e.getSource();
         if( source == list) {
         int index= list.getSelectedIndex();
         if( index != -1) {
              Target target= (Target) targets.elementAt( index);
              tf_remote_address.setText( target.ip);
              tf_remote_data_port.setText( target.port);
         int index= list.locationToIndex( e.getPoint());
    public static void main( String[] args) {
    new Tx();
    class TargetListModel extends AbstractListModel {
    private Vector options;
    public TargetListModel( Vector options) {
         this.options= options;
    public int getSize() {
         int size;
         if( options == null) {
         size= 0;
         } else {
         size= options.size();
         return size;
    public Object getElementAt( int index) {
    String name;
    if( index < getSize()) {
         Target o= (Target)options.elementAt( index);
    name= o.localPort + " ---> " + o.ip + ":" + o.port;
         } else {
         name= null;
         return name;
    public void setData( Vector data) {
         options= data;
         fireContentsChanged( this, 0, data.size());
    class ListUpdater implements Runnable {
    String localPort, ip, port;
    TargetListModel listModel;
    Vector targets;
    public ListUpdater( String localPort, String ip, String port,
                   TargetListModel listModel, Vector targets) {
         this.localPort= localPort;
         this.ip= ip;
         this.port= port;
         this.listModel= listModel;
         this.targets= targets;
    public void run() {
    Target target= new Target( localPort, ip, port);
         if( !targetExists( localPort, ip, port)) {
         targets.addElement( target);
    listModel.setData( targets);
    public boolean targetExists( String localPort, String ip, String port) {
         boolean exists= false;
         for( int i= 0; i < targets.size(); i++) {
         Target target= (Target) targets.elementAt( i);
         if( target.localPort.equals( localPort)
         && target.ip.equals( ip)
              && target.port.equals( port)) {          
              exists= true;
         break;
         return exists;
    >>>>>>>>>>>>>>>>>
    import java.awt.*;
    import java.io.*;
    import java.net.InetAddress;
    import java.util.*;
    import javax.media.*;
    import javax.media.protocol.*;
    import javax.media.format.*;
    import javax.media.control.TrackControl;
    import javax.media.control.QualityControl;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    public class AVTransmitter implements ReceiveStreamListener, RemoteListener,
    ControllerListener {
    // Input MediaLocator
    // Can be a file or http or capture source
    private MediaLocator locator;
    private String ipAddress;
    private int portBase;
    private Processor processor = null;
    private RTPManager rtpMgrs[];
    private int localPorts[];
    private DataSource dataOutput = null;
    private int local_data_port;
    private Tx tx;
    public AVTransmitter( Tx tx, int data_port) {
         this.tx= tx;
         local_data_port= data_port;
    * Starts the transmission. Returns null if transmission started ok.
    * Otherwise it returns a string with the reason why the setup failed.
    public synchronized String start( String filename, Vector targets) {
         String result;
         locator= new MediaLocator( filename);
         // Create a processor for the specified media locator
         // and program it to output JPEG/RTP
         result = createProcessor();
         if (result != null) {
         return result;
         // Create an RTP session to transmit the output of the
         // processor to the specified IP address and port no.
         result = createTransmitter( targets);
         if (result != null) {
         processor.close();
         processor = null;
         return result;
         // Start the transmission
         processor.start();
         return null;
    * Use the RTPManager API to create sessions for each media
    * track of the processor.
    private String createTransmitter( Vector targets) {
         // Cheated. Should have checked the type.
         PushBufferDataSource pbds = (PushBufferDataSource)dataOutput;
         PushBufferStream pbss[] = pbds.getStreams();
         rtpMgrs = new RTPManager[pbss.length];
         localPorts = new int[ pbss.length];
         SessionAddress localAddr, destAddr;
         InetAddress ipAddr;
         SendStream sendStream;
         int port;
         SourceDescription srcDesList[];
         for (int i = 0; i < pbss.length; i++) {
         // for (int i = 0; i < 1; i++) {
         try {
              rtpMgrs[i] = RTPManager.newInstance();     
              port = local_data_port + 2*i;
              localPorts[ i]= port;
              localAddr = new SessionAddress( InetAddress.getLocalHost(),
                                  port);
              rtpMgrs.initialize( localAddr);          
              rtpMgrs[i].addReceiveStreamListener(this);
              rtpMgrs[i].addRemoteListener(this);
         for( int k= 0; k < targets.size(); k++) {
              Target target= (Target) targets.elementAt( k);
              int targetPort= new Integer( target.port).intValue();
              addTarget( localPorts[ i], rtpMgrs[ i], target.ip, targetPort + 2*i);
              sendStream = rtpMgrs[i].createSendStream(dataOutput, i);          
              sendStream.start();
         } catch (Exception e) {
              e.printStackTrace();
              return e.getMessage();
         return null;
    public void addTarget( String ip, String port) {
         for (int i= 0; i < rtpMgrs.length; i++) {
         int targetPort= new Integer( port).intValue();
         addTarget( localPorts[ i], rtpMgrs[ i], ip, targetPort + 2*i);
    public void addTarget( int localPort, RTPManager mgr, String ip, int port) {
         try {
         SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
                                  new Integer( port).intValue());
         mgr.addTarget( addr);
         tx.addTargetToList( localPort + "", ip, port + "");
         } catch( Exception e) {
         e.printStackTrace();
    public void removeTarget( String ip, String port) {
         try {     
         SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
                                  new Integer( port).intValue());
         for (int i= 0; i < rtpMgrs.length; i++) {
         rtpMgrs[ i].removeTarget( addr, "target removed from transmitter.");
         } catch( Exception e) {
         e.printStackTrace();
    boolean looping= true;
    public void controllerUpdate( ControllerEvent ce) {
         System.out.println( ce);
         if( ce instanceof DurationUpdateEvent) {
         Time duration= ((DurationUpdateEvent) ce).getDuration();
         System.out.println( "duration: " + duration.getSeconds());
         } else if( ce instanceof EndOfMediaEvent) {
         System.out.println( "END OF MEDIA - looping=" + looping);
         if( looping) {
         processor.setMediaTime( new Time( 0));
              processor.start();
    public void setLooping( boolean flag) {
         looping= flag;
    public void update( ReceiveStreamEvent event) {
         String timestamp= getTimestamp();
         StringBuffer sb= new StringBuffer();
         if( event instanceof InactiveReceiveStreamEvent) {
         sb.append( timestamp + " Inactive Receive Stream");
         } else if( event instanceof ByeEvent) {
         sb.append( timestamp + " Bye");
         } else {
         System.out.println( "ReceiveStreamEvent: "+ event);
         tx.rtcpReport( sb.toString());     
    public void update( RemoteEvent event) {     
         String timestamp= getTimestamp();
         if( event instanceof ReceiverReportEvent) {
         ReceiverReport rr= ((ReceiverReportEvent) event).getReport();
         StringBuffer sb= new StringBuffer();
         sb.append( timestamp + " RR");
         if( rr != null) {
              Participant participant= rr.getParticipant();
              if( participant != null) {
              sb.append( " from " + participant.getCNAME());
              sb.append( " ssrc=" + rr.getSSRC());
              } else {
              sb.append( " ssrc=" + rr.getSSRC());
              tx.rtcpReport( sb.toString());
         } else {
         System.out.println( "RemoteEvent: " + event);
    private String getTimestamp() {
         String timestamp;
         Calendar calendar= Calendar.getInstance();
         int hour= calendar.get( Calendar.HOUR_OF_DAY);
         String hourStr= formatTime( hour);
         int minute= calendar.get( Calendar.MINUTE);
         String minuteStr= formatTime( minute);
         int second= calendar.get( Calendar.SECOND);
         String secondStr= formatTime( second);
         timestamp= hourStr + ":" + minuteStr + ":" + secondStr;     
         return timestamp;
    private String formatTime( int time) {     
         String timeStr;
         if( time < 10) {
         timeStr= "0" + time;
         } else {
         timeStr= "" + time;
         return timeStr;
    * Stops the transmission if already started
    public void stop() {
         synchronized (this) {
         if (processor != null) {
              processor.stop();
              processor.close();
              processor = null;
         for (int i= 0; i < rtpMgrs.length; i++) {
         rtpMgrs[ i].removeTargets( "Session ended.");
              rtpMgrs[ i].dispose();
    public String createProcessor() {
         if (locator == null) {
         return "Locator is null";
         DataSource ds;
         DataSource clone;
         try {
         ds = javax.media.Manager.createDataSource(locator);
         } catch (Exception e) {
         return "Couldn't create DataSource";
         // Try to create a processor to handle the input media locator
         try {
         processor = javax.media.Manager.createProcessor(ds);
         processor.addControllerListener( this);     
         } catch (NoProcessorException npe) {
         return "Couldn't create processor";
         } catch (IOException ioe) {
         return "IOException creating processor";
         // Wait for it to configure
         boolean result = waitForState(processor, Processor.Configured);
         if (result == false)
         return "Couldn't configure processor";
         // Get the tracks from the processor
         TrackControl [] tracks = processor.getTrackControls();
         // Do we have atleast one track?
         if (tracks == null || tracks.length < 1)
         return "Couldn't find tracks in processor";
         // Set the output content descriptor to RAW_RTP
         // This will limit the supported formats reported from
         // Track.getSupportedFormats to only valid RTP formats.
         ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
         processor.setContentDescriptor(cd);
         Format supported[];
         Format chosen;
         boolean atLeastOneTrack = false;
         // Program the tracks.
         for (int i = 0; i < tracks.length; i++) {
         Format format = tracks[i].getFormat();
         if (tracks[i].isEnabled()) {
              supported = tracks[i].getSupportedFormats();
              // We've set the output content to the RAW_RTP.
              // So all the supported formats should work with RTP.
              // We'll just pick the first one.
              if (supported.length > 0) {
              if (supported[0] instanceof VideoFormat) {
                   // For video formats, we should double check the
                   // sizes since not all formats work in all sizes.
                   chosen = checkForVideoSizes(tracks[i].getFormat(),
                                       supported[0]);
              } else
                   chosen = supported[0];
              tracks[i].setFormat(chosen);
              System.err.println("Track " + i + " is set to transmit as:");
              System.err.println(" " + chosen);
              atLeastOneTrack = true;
              } else
              tracks[i].setEnabled(false);
         } else
              tracks[i].setEnabled(false);
         if (!atLeastOneTrack)
         return "Couldn't set any of the tracks to a valid RTP format";
         // Realize the processor. This will internally create a flow
         // graph and attempt to create an output datasource for JPEG/RTP
         // audio frames.
         result = waitForState(processor, Controller.Realized);
         if (result == false)
         return "Couldn't realize processor";
         // Set the JPEG quality to .5.
         setJPEGQuality(processor, 0.5f);
         // Get the output data source of the processor
         dataOutput = processor.getDataOutput();
         return null;
    static SessionAddress destAddr1, destAddr2;
    * For JPEG and H263, we know that they only work for particular
    * sizes. So we'll perform extra checking here to make sure they
    * are of the right sizes.
    Format checkForVideoSizes(Format original, Format supported) {
         int width, height;
         Dimension size = ((VideoFormat)original).getSize();
         Format jpegFmt = new Format(VideoFormat.JPEG_RTP);
         Format h263Fmt = new Format(VideoFormat.H263_RTP);
         if (supported.matches(jpegFmt)) {
         // For JPEG, make sure width and height are divisible by 8.
         width = (size.width % 8 == 0 ? size.width :
                        (int)(size.width / 8) * 8);
         height = (size.height % 8 == 0 ? size.height :
                        (int)(size.height / 8) * 8);
         } else if (supported.matches(h263Fmt)) {
         // For H.263, we only support some specific sizes.
         if (size.width < 128) {
              width = 128;
              height = 96;
         } else if (size.width < 176) {
              width = 176;
              height = 144;
         } else {
              width = 352;
              height = 288;
         } else {
         // We don't know this particular format. We'll just
         // leave it alone then.
         return supported;
         return (new VideoFormat(null,
                        new Dimension(width, height),
                        Format.NOT_SPECIFIED,
                        null,
                        Format.NOT_SPECIFIED)).intersects(supported);
    * Setting the encoding quality to the specified value on the JPEG encoder.
    * 0.5 is a good default.
    void setJPEGQuality(Player p, float val) {
         Control cs[] = p.getControls();
         QualityControl qc = null;
         VideoFormat jpegFmt = new VideoFormat(VideoFormat.JPEG);
         // Loop through the controls to find the Quality control for
         // the JPEG encoder.
         for (int i = 0; i < cs.length; i++) {
         if (cs[i] instanceof QualityControl &&
              cs[i] instanceof Owned) {
              Object owner = ((Owned)cs[i]).getOwner();
              // Check to see if the owner is a Codec.
              // Then check for the output format.
              if (owner instanceof Codec) {
              Format fmts[] = ((Codec)owner).getSupportedOutputFormats(null);
              for (int j = 0; j < fmts.length; j++) {
                   if (fmts[j].matches(jpegFmt)) {
                   qc = (QualityControl)cs[i];
                   qc.setQuality(val);
                   System.err.println("- Setting quality to " +
                             val + " on " + qc);
                   break;
              if (qc != null)
              break;
    * Convenience methods to handle processor's state changes.
    private Integer stateLock = new Integer(0);
    private boolean failed = false;
    Integer getStateLock() {
         return stateLock;
    void setFailed() {
         failed = true;
    private synchronized boolean waitForState(Processor p, int state) {
         p.addControllerListener(new StateListener());
         failed = false;
         // Call the required method on the processor
         if (state == Processor.Configured) {
         p.configure();
         } else if (state == Processor.Realized) {
         p.realize();
         // Wait until we get an event that confirms the
         // success of the method, or a failure event.
         // See StateListener inner class
         while (p.getState() < state && !failed) {
         synchronized (getStateLock()) {
              try {
              getStateLock().wait();
              } catch (InterruptedException ie) {
              return false;
         if (failed)
         return false;
         else
         return true;
    * Inner Classes
    class StateListener implements ControllerListener {
         public void controllerUpdate(ControllerEvent ce) {
         // If there was an error during configure or
         // realiz

    I do this all the time, I put my MBP to a 60 inch Sharp. If you have the video working do the simple thing first. Check to make sure your sound is on your TV and Mac. Then if that doesn't work go to System Prefrences and under sound go to a tab called Output and see if your TV is listed and if it is change it to that setting
    Hope It Works

  • Extra hardware interface for transmiting both Audio and video to client ??

    hi i m doing e-learning project. i have to capture video from webcam and voice from headphone and send to client.
    but my code is working fine for either one at a time.
    DO i need some extra hardware interface for Transmitting  both Audio and video to client im using code AVTransmit and AVReceive found from this site only
    After running TX
    i give dsound:// & vfw://0 in Media Locater only sound is received and no vedio
    and when i give vfw://0 in Media Locater only live video is transmited.
    im using JMF1.1.2e.
    if any one know the method to run or cause of it plz reply me soon. i will be very thankfull
    transmiter/server side code .first run TX on server
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.media.rtp.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    public class Tx extends JFrame implements ActionListener, KeyListener,
    MouseListener, WindowListener {
    Vector targets;
    JList list;
    JButton startXmit;
    JButton rtcp;
    JButton update;
    JButton expiration;
    JButton statistics;
    JButton addTarget;
    JButton removeTarget;
    JTextField tf_remote_address;
    JTextField tf_remote_data_port;
    JTextField tf_media_file;
    JTextField tf_data_port;
    TargetListModel listModel;
    AVTransmitter avTransmitter;
    RTCPViewer rtcpViewer;
    JCheckBox cb_loop;
    Config config;
    public Tx() {
    setTitle( "JMF/RTP Transmitter");
    config= new Config();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    JPanel p= new JPanel();
    p.setLayout( gridBagLayout);
    JPanel localPanel= createLocalPanel();
    gbc= new GridBagConstraints();
    gbc.gridx= 0;
    gbc.gridy= 0;
    gbc.gridwidth= 2;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( localPanel, gbc);
    p.add( localPanel);
    JPanel targetPanel= createTargetPanel();
    gbc= new GridBagConstraints();
    gbc.gridx= 1;
    gbc.gridy= 1;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( targetPanel, gbc);
    p.add( targetPanel);
    JPanel mediaPanel= createMediaPanel();
    gbc= new GridBagConstraints();
    gbc.gridx= 1;
    gbc.gridy= 2;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( mediaPanel, gbc);
    p.add( mediaPanel);
    JPanel buttonPanel= new JPanel();
    rtcp= new JButton( "RTCP Monitor");
    update= new JButton( "Transmission Status");
    update.setEnabled( false);
    rtcp.addActionListener( this);
    update.addActionListener( this);
    buttonPanel.add( rtcp);
    buttonPanel.add( update);
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 3;
    gbc.gridwidth= 2;
    gbc.weightx = 1.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.CENTER;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( buttonPanel, gbc);
    p.add( buttonPanel);
    getContentPane().add( p);
    list.addMouseListener( this);
    addWindowListener( this);
    pack();
    setVisible( true);
    private JPanel createMediaPanel() {
    JPanel p= new JPanel();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    p.setLayout( gridBagLayout);
    JLabel label= new JLabel( "Media Locator:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
    p.add( label);
    tf_media_file= new JTextField( 35);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 1.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( tf_media_file, gbc);
    p.add( tf_media_file);
    tf_media_file.setText( config.media_locator);
    cb_loop= new JCheckBox( "loop");
    startXmit= new JButton( "Start Transmission");
    startXmit.setEnabled( true);
    startXmit.addActionListener( this);
    gbc= new GridBagConstraints();
    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( cb_loop, gbc);
    p.add( cb_loop);
    cb_loop.setSelected( true);
    cb_loop.addActionListener( this);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.CENTER;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( startXmit, gbc);
    p.add( startXmit);
    TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Source");
    p.setBorder( titledBorder);
    return p;
    private JPanel createTargetPanel() {
    JPanel p= new JPanel();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    p.setLayout( gridBagLayout);
    targets= new Vector();
    for( int i= 0; i < config.targets.size(); i++) {
    targets.addElement( config.targets.elementAt( i));
    listModel= new TargetListModel( targets);
    list= new JList( listModel);
    list.addKeyListener( this);
    list.setPrototypeCellValue( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    JScrollPane scrollPane= new JScrollPane( list,
    ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    gbc= new GridBagConstraints();
    gbc.gridx= 0;
    gbc.gridy= 0;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( scrollPane, gbc);
    p.add( scrollPane);
    JPanel p1= new JPanel();
    p1.setLayout( gridBagLayout);
    JLabel label= new JLabel( "IP Address:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
    p1.add( label);
    tf_remote_address= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_address, gbc);
    p1.add( tf_remote_address);
    label= new JLabel( "Data Port:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
    p1.add( label);
    tf_remote_data_port= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_data_port, gbc);
    p1.add( tf_remote_data_port);
    JPanel p2= new JPanel();
    addTarget= new JButton( "Add Target");
    removeTarget= new JButton( "Remove Target");
    p2.add( addTarget);
    p2.add( removeTarget);
    addTarget.addActionListener( this);
    removeTarget.addActionListener( this);
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 2;
    gbc.weightx = 1.0;
    gbc.weighty = 0.0;
    gbc.gridwidth= 2;
    gbc.anchor = GridBagConstraints.CENTER;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets( 20,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( p2, gbc);
    p1.add( p2);
    gbc= new GridBagConstraints();
    gbc.gridx= 1;
    gbc.gridy= 0;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( p1, gbc);
    p.add( p1);
    TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Targets");
    p.setBorder( titledBorder);
    return p;
    private JPanel createLocalPanel() {
    JPanel p= new JPanel();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    p.setLayout( gridBagLayout);
    JLabel label= new JLabel( "IP Address:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
    p.add( label);
    JTextField tf_local_host= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p.getLayout()).setConstraints( tf_local_host, gbc);
    p.add( tf_local_host);
    try {
    String host= InetAddress.getLocalHost().getHostAddress();
    tf_local_host.setText( host);
    } catch( UnknownHostException e) {
    label= new JLabel( "Data Port:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
    p.add( label);
    tf_data_port= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( tf_data_port, gbc);
    p.add( tf_data_port);
    tf_data_port.setText( config.local_data_port);
    TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Local Host");
    p.setBorder( titledBorder);
    return p;
    public void actionPerformed( ActionEvent event) {
    Object source= event.getSource();
    if( source == addTarget) {
    String ip= tf_remote_address.getText().trim();
    String port= tf_remote_data_port.getText().trim();
    String localPort= tf_data_port.getText().trim();
    addTargetToList( localPort, ip, port);
    if( avTransmitter != null) {
    avTransmitter.addTarget( ip, port);
    } else if( source == removeTarget) {
    int index= list.getSelectedIndex();
    if( index != -1) {
    Target target= (Target) targets.elementAt( index);
    if( avTransmitter != null) {
    avTransmitter.removeTarget( target.ip, target.port);
    targets.removeElement( target);
    listModel.setData( targets);
    } else if( source == startXmit) {
    if( startXmit.getLabel().equals( "Start Transmission")) {
    int data_port= new Integer( tf_data_port.getText()).intValue();
    avTransmitter= new AVTransmitter( this, data_port);
    avTransmitter.start( tf_media_file.getText().trim(), targets);
    avTransmitter.setLooping( cb_loop.isSelected());
    startXmit.setLabel( "Stop Transmission");
    } else if( startXmit.getLabel().equals( "Stop Transmission")) {
    avTransmitter.stop();
    avTransmitter= null;
    removeNonBaseTargets();
    listModel.setData( targets);
    startXmit.setLabel( "Start Transmission");
    } else if( source == rtcp) {
    if( rtcpViewer == null) {
    rtcpViewer= new RTCPViewer();
    } else {
    rtcpViewer.setVisible( true);
    rtcpViewer.toFront();
    } else if( source == cb_loop) {
    if( avTransmitter != null) {
    avTransmitter.setLooping( cb_loop.isSelected());
    private void removeNonBaseTargets() {
    String localPort= tf_data_port.getText().trim();
    for( int i= targets.size(); i > 0;) {
    Target target= (Target) targets.elementAt( i - 1);
    if( !target.localPort.equals( localPort)) {
    targets.removeElement( target);
    i--;
    public void addTargetToList( String localPort,
    String ip, String port) {
    ListUpdater listUpdater= new ListUpdater( localPort, ip,
    port, listModel, targets);
    SwingUtilities.invokeLater( listUpdater);
    public void rtcpReport( String report) {
    if( rtcpViewer != null) {
    rtcpViewer.report( report);
    public void windowClosing( WindowEvent event) {
    config.local_data_port= tf_data_port.getText().trim();
    config.targets= new Vector();
    for( int i= 0; i < targets.size(); i++) {
    Target target= (Target) targets.elementAt( i);
    if( target.localPort.equals( config.local_data_port)) {
    config.addTarget( target.ip, target.port);
    config.media_locator= tf_media_file.getText().trim();
    config.write();
    System.exit( 0);
    public void windowClosed( WindowEvent event) {
    public void windowDeiconified( WindowEvent event) {
    public void windowIconified( WindowEvent event) {
    public void windowActivated( WindowEvent event) {
    public void windowDeactivated( WindowEvent event) {
    public void windowOpened( WindowEvent event) {
    public void keyPressed( KeyEvent event) {
    public void keyReleased( KeyEvent event) {
    Object source= event.getSource();
    if( source == list) {
    int index= list.getSelectedIndex();
    public void keyTyped( KeyEvent event) {
    public void mousePressed( MouseEvent e) {
    public void mouseReleased( MouseEvent e) {
    public void mouseEntered( MouseEvent e) {
    public void mouseExited( MouseEvent e) {
    public void mouseClicked( MouseEvent e) {
    Object source= e.getSource();
    if( source == list) {
    int index= list.getSelectedIndex();
    if( index != -1) {
    Target target= (Target) targets.elementAt( index);
    tf_remote_address.setText( target.ip);
    tf_remote_data_port.setText( target.port);
    int index= list.locationToIndex( e.getPoint());
    public static void main( String[] args) {
    new Tx();
    class TargetListModel extends AbstractListModel {
    private Vector options;
    public TargetListModel( Vector options) {
    this.options= options;
    public int getSize() {
    int size;
    if( options == null) {
    size= 0;
    } else {
    size= options.size();
    return size;
    public Object getElementAt( int index) {
    String name;
    if( index < getSize()) {
    Target o= (Target)options.elementAt( index);
    name= o.localPort + " ---> " + o.ip + ":" + o.port;
    } else {
    name= null;
    return name;
    public void setData( Vector data) {
    options= data;
    fireContentsChanged( this, 0, data.size());
    class ListUpdater implements Runnable {
    String localPort, ip, port;
    TargetListModel listModel;
    Vector targets;
    public ListUpdater( String localPort, String ip, String port,
    TargetListModel listModel, Vector targets) {
    this.localPort= localPort;
    this.ip= ip;
    this.port= port;
    this.listModel= listModel;
    this.targets= targets;
    public void run() {
    Target target= new Target( localPort, ip, port);
    if( !targetExists( localPort, ip, port)) {
    targets.addElement( target);
    listModel.setData( targets);
    public boolean targetExists( String localPort, String ip, String port) {
    boolean exists= false;
    for( int i= 0; i < targets.size(); i++) {
    Target target= (Target) targets.elementAt( i);
    if( target.localPort.equals( localPort)
    && target.ip.equals( ip)
    && target.port.equals( port)) {
    exists= true;
    break;
    return exists;
    import java.awt.*;
    import java.io.*;
    import java.net.InetAddress;
    import java.util.*;
    import javax.media.*;
    import javax.media.protocol.*;
    import javax.media.format.*;
    import javax.media.control.TrackControl;
    import javax.media.control.QualityControl;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    public class AVTransmitter implements ReceiveStreamListener, RemoteListener,
    ControllerListener {
    // Input MediaLocator
    // Can be a file or http or capture source
    private MediaLocator locator;
    private String ipAddress;
    private int portBase;
    private Processor processor = null;
    private RTPManager rtpMgrs[];
    private int localPorts[];
    private DataSource dataOutput = null;
    private int local_data_port;
    private Tx tx;
    public AVTransmitter( Tx tx, int data_port) {
    this.tx= tx;
    local_data_port= data_port;
    * Starts the transmission. Returns null if transmission started ok.
    * Otherwise it returns a string with the reason why the setup failed.
    public synchronized String start( String filename, Vector targets) {
    String result;
    locator= new MediaLocator( filename);
    // Create a processor for the specified media locator
    // and program it to output JPEG/RTP
    result = createProcessor();
    if (result != null) {
    return result;
    // Create an RTP session to transmit the output of the
    // processor to the specified IP address and port no.
    result = createTransmitter( targets);
    if (result != null) {
    processor.close();
    processor = null;
    return result;
    // Start the transmission
    processor.start();
    return null;
    * Use the RTPManager API to create sessions for each media
    * track of the processor.
    private String createTransmitter( Vector targets) {
    // Cheated. Should have checked the type.
    PushBufferDataSource pbds = (PushBufferDataSource)dataOutput;
    PushBufferStream pbss[] = pbds.getStreams();
    rtpMgrs = new RTPManager[pbss.length];
    localPorts = new int[ pbss.length];
    SessionAddress localAddr, destAddr;
    InetAddress ipAddr;
    SendStream sendStream;
    int port;
    SourceDescription srcDesList[];
    for (int i = 0; i < pbss.length; i++) {
    // for (int i = 0; i < 1; i++) {
    try {
    rtpMgrs[i] = RTPManager.newInstance();
    port = local_data_port + 2*i;
    localPorts[ i]= port;
    localAddr = new SessionAddress( InetAddress.getLocalHost(),
    port);
    rtpMgrs.initialize( localAddr);
    rtpMgrs[i].addReceiveStreamListener(this);
    rtpMgrs[i].addRemoteListener(this);
    for( int k= 0; k < targets.size(); k++) {
    Target target= (Target) targets.elementAt( k);
    int targetPort= new Integer( target.port).intValue();
    addTarget( localPorts[ i], rtpMgrs[ i], target.ip, targetPort + 2*i);
    sendStream = rtpMgrs[i].createSendStream(dataOutput, i);
    sendStream.start();
    } catch (Exception e) {
    e.printStackTrace();
    return e.getMessage();
    return null;
    public void addTarget( String ip, String port) {
    for (int i= 0; i < rtpMgrs.length; i++) {
    int targetPort= new Integer( port).intValue();
    addTarget( localPorts[ i], rtpMgrs[ i], ip, targetPort + 2*i);
    public void addTarget( int localPort, RTPManager mgr, String ip, int port) {
    try {
    SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
    new Integer( port).intValue());
    mgr.addTarget( addr);
    tx.addTargetToList( localPort + "", ip, port + "");
    } catch( Exception e) {
    e.printStackTrace();
    public void removeTarget( String ip, String port) {
    try {
    SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
    new Integer( port).intValue());
    for (int i= 0; i < rtpMgrs.length; i++) {
    rtpMgrs[ i].removeTarget( addr, "target removed from transmitter.");
    } catch( Exception e) {
    e.printStackTrace();
    boolean looping= true;
    public void controllerUpdate( ControllerEvent ce) {
    System.out.println( ce);
    if( ce instanceof DurationUpdateEvent) {
    Time duration= ((DurationUpdateEvent) ce).getDuration();
    System.out.println( "duration: " + duration.getSeconds());
    } else if( ce instanceof EndOfMediaEvent) {
    System.out.println( "END OF MEDIA - looping=" + looping);
    if( looping) {
    processor.setMediaTime( new Time( 0));
    processor.start();
    public void setLooping( boolean flag) {
    looping= flag;
    public void update( ReceiveStreamEvent event) {
    String timestamp= getTimestamp();
    StringBuffer sb= new StringBuffer();
    if( event instanceof InactiveReceiveStreamEvent) {
    sb.append( timestamp + " Inactive Receive Stream");
    } else if( event instanceof ByeEvent) {
    sb.append( timestamp + " Bye");
    } else {
    System.out.println( "ReceiveStreamEvent: "+ event);
    tx.rtcpReport( sb.toString());
    public void update( RemoteEvent event) {
    String timestamp= getTimestamp();
    if( event instanceof ReceiverReportEvent) {
    ReceiverReport rr= ((ReceiverReportEvent) event).getReport();
    StringBuffer sb= new StringBuffer();
    sb.append( timestamp + " RR");
    if( rr != null) {
    Participant participant= rr.getParticipant();
    if( participant != null) {
    sb.append( " from " + participant.getCNAME());
    sb.append( " ssrc=" + rr.getSSRC());
    } else {
    sb.append( " ssrc=" + rr.getSSRC());
    tx.rtcpReport( sb.toString());
    } else {
    System.out.println( "RemoteEvent: " + event);
    private String getTimestamp() {
    String timestamp;
    Calendar calendar= Calendar.getInstance();
    int hour= calendar.get( Calendar.HOUR_OF_DAY);
    String hourStr= formatTime( hour);
    int minute= calendar.get( Calendar.MINUTE);
    String minuteStr= formatTime( minute);
    int second= calendar.get( Calendar.SECOND);
    String secondStr= formatTime( second);
    timestamp= hourStr + ":" + minuteStr + ":" + secondStr;
    return timestamp;
    private String formatTime( int time) {
    String timeStr;
    if( time < 10) {
    timeStr= "0" + time;
    } else {
    timeStr= "" + time;
    return timeStr;
    * Stops the transmission if already started
    public void stop() {
    synchronized (this) {
    if (processor != null) {
    processor.stop();
    processor.close();
    processor = null;
    for (int i= 0; i < rtpMgrs.length; i++) {
    rtpMgrs[ i].removeTargets( "Session ended.");
    rtpMgrs[ i].dispose();
    public String createProcessor() {
    if (locator == null) {
    return "Locator is null";
    DataSource ds;
    DataSource clone;
    try {
    ds = javax.media.Manager.createDataSource(locator);
    } catch (Exception e) {
    return "Couldn't create DataSource";
    // Try to create a processor to handle the input media locator
    try {
    processor = javax.media.Manager.createProcessor(ds);
    processor.addControllerListener( this);
    } catch (NoProcessorException npe) {
    return "Couldn't create processor";
    } catch (IOException ioe) {
    return "IOException creating processor";
    // Wait for it to configure
    boolean result = waitForState(processor, Processor.Configured);
    if (result == false)
    return "Couldn't configure processor";
    // Get the tracks from the processor
    TrackControl [] tracks = processor.getTrackControls();
    // Do we have atleast one track?
    if (tracks == null || tracks.length < 1)
    return "Couldn't find tracks in processor";
    // Set the output content descriptor to RAW_RTP
    // This will limit the supported formats reported from
    // Track.getSupportedFormats to only valid RTP formats.
    ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
    processor.setContentDescriptor(cd);
    Format supported[];
    Format chosen;
    boolean atLeastOneTrack = false;
    // Program the tracks.
    for (int i = 0; i < tracks.length; i++) {
    Format format = tracks[i].getFormat();
    if (tracks[i].isEnabled()) {
    supported = tracks[i].getSupportedFormats();
    // We've set the output content to the RAW_RTP.
    // So all the supported formats should work with RTP.
    // We'll just pick the first one.
    if (supported.length > 0) {
    if (supported[0] instanceof VideoFormat) {
    // For video formats, we should double check the
    // sizes since not all formats work in all sizes.
    chosen = checkForVideoSizes(tracks[i].getFormat(),
    supported[0]);
    } else
    chosen = supported[0];
    tracks[i].setFormat(chosen);
    System.err.println("Track " + i + " is set to transmit as:");
    System.err.println(" " + chosen);
    atLeastOneTrack = true;
    } else
    tracks[i].setEnabled(false);
    } else
    tracks[i].setEnabled(false);
    if (!atLeastOneTrack)
    return "Couldn't set any of the tracks to a valid RTP format";
    // Realize the processor. This will internally create a flow
    // graph and attempt to create an output datasource for JPEG/RTP
    // audio frames.
    result = waitForState(processor, Controller.Realized);
    if (result == false)
    return "Couldn't realize processor";
    // Set the JPEG quality to .5.
    setJPEGQuality(processor, 0.5f);
    // Get the output data source of the processor
    dataOutput = processor.getDataOutput();
    return null;
    static SessionAddress destAddr1, destAddr2;
    * For JPEG and H263, we know that they only work for particular
    * sizes. So we'll perform extra checking here to make sure they
    * are of the right sizes.
    Format checkForVideoSizes(Format original, Format supported) {
    int width, height;
    Dimension size = ((VideoFormat)original).getSize();
    Format jpegFmt = new Format(VideoFormat.JPEG_RTP);
    Format h263Fmt = new Format(VideoFormat.H263_RTP);
    if (supported.matches(jpegFmt)) {
    // For JPEG, make sure width and height are divisible by 8.
    width = (size.width % 8 == 0 ? size.width :
    (int)(size.width / 8) * 8);
    height = (size.height % 8 == 0 ? size.height :
    (int)(size.height / 8) * 8);
    } else if (supported.matches(h263Fmt)) {
    // For H.263, we only support some specific sizes.
    if (size.width < 128) {
    width = 128;
    height = 96;
    } else if (size.width < 176) {
    width = 176;
    height = 144;
    } else {
    width = 352;
    height = 288;
    } else {
    // We don't know this particular format. We'll just
    // leave it alone then.
    return supported;
    return (new VideoFormat(null,
    new Dimension(width, height),
    Format.NOT_SPECIFIED,
    null,
    Format.NOT_SPECIFIED)).intersects(supported);
    * Setting the encoding quality to the specified value on the JPEG encoder.
    * 0.5 is a good default.
    void setJPEGQuality(Player p, float val) {
    Control cs[] = p.getControls();
    QualityControl qc = null;
    VideoFormat jpegFmt = new VideoFormat(VideoFormat.JPEG);
    // Loop through the controls to find the Quality control for
    // the JPEG encoder.
    for (int i = 0; i < cs.length; i++) {
    if (cs[i] instanceof QualityControl &&
    cs[i] instanceof Owned) {
    Object owner = ((Owned)cs[i]).getOwner();
    // Check to see if the owner is a Codec.
    // Then check for the output format.
    if (owner instanceof Codec) {
    Format fmts[] = ((Codec)owner).getSupportedOutputFormats(null);
    for (int j = 0; j < fmts.length; j++) {
    if (fmts[j].matches(jpegFmt)) {
    qc = (QualityControl)cs[i];
    qc.setQuality(val);
    System.err.println("- Setting quality to " +
    val + " on " + qc);
    break;
    if (qc != null)
    break;
    * Convenience methods to handle processor's state changes.
    private Integer stateLock = new Integer(0);
    private boolean failed = false;
    Integer getStateLock() {
    return stateLock;
    void setFailed() {
    failed = true;
    private synchronized boolean waitForState(Processor p, int state) {
    p.addControllerListener(new StateListener());
    failed = false;
    // Call the required method on the processor
    if (state == Processor.Configured) {
    p.configure();
    } else if (state == Processor.Realized) {
    p.realize();
    // Wait until we get an event that confirms the
    // success of the method, or a failure event.
    // See StateListener inner class
    while (p.getState() < state && !failed) {
    synchronized (getStateLock()) {
    try {
    getStateLock().wait();
    } catch (InterruptedException ie) {
    return false;
    if (failed)
    return false;
    else
    return true;
    * Inner Classes
    class StateListener implements ControllerListener {
    public void controllerUpdate(ControllerEvent ce) {
    // If there was an error during configure or
    // realize, the processor will be closed
    if (ce instanceof ControllerClosedEvent)
    setFailed();
    // All controller events, send a notification
    // to the waiting thread in waitForState method.
    if (ce instanceof ControllerEvent) {
    synchronized (getStateLock()) {
    getStateLock().notifyAll();
    import java.io.*;
    import java.util.*;
    public class Config {
    private String pathPrefix;
    public String local_data_port;
    public Vector targets;
    public String media_locator;
    public Config() {
    pathPrefix= System.getProperty( "user.home") + File.separator;
    read();
    public void read() {
    targets= new Vector();
    try {
    String path= pathPrefix + "xmit.dat";
    FileInputStream fin= new FileInputStream( path);
    BufferedInputStream bin= new BufferedInputStream( fin);
    DataInputStream din= new DataInputStream( bin);
    local_data_port= readString( din);
    int n_targets= din.readInt();
    for( int i= 0; i < n_targets; i++) {
    String ip= readString( din);
    String port= readString( din);
    targets.addElement( new Target( local_data_port, ip, port));
    media_locator= readString( din);
    fin.close();
    } catch( IOException e) {
    System.out.println( "xmit.dat file missing!");
    local_data_port= "";
    media_locator= "";
    public void write() {
    try {
    String path= pathPrefix + "xmit.dat";
    FileOutputStream fout= new FileOutputStream( path);
    BufferedOutputStream bout= new BufferedOutputStream( fout);
    DataOutputStream dout= new DataOutputStream( bout);
    writeString( dout, local_data_port);
    dout.writeInt( targets.size());
    for( int i= 0; i < targets.size(); i++) {
    Target target= (Target) targets.elementAt( i);
    writeString( dout, target.ip);
    writeString( dout, target.port);
    writeString( dout, media_locator);
    dout.flush();
    dout.close();
    fout.close();
    } catch( IOException e) {
    System.out.println( "Error writing xmit.dat!");
    public String readString( DataInputStream din) {
    String s= null;
    try {
    short length= din.readShort();
    if( length > 0) {
    byte buf[]= new byte[ length];
    din.read( buf, 0, length);
    s= new String( buf);
    } catch( IOException e) {
    System.err.println( e);
    return s;
    public void writeString( DataOutputStream dout, String str) {
    try {
    if( str != null) {
    dout.writeShort( str.length());
    dout.writeBytes( str);
    } else {
    dout.writeShort( 0);
    } catch( Exception e) {
    e.printStackTrace();
    public void addTarget( String ip, String port) {
    targets.addElement( new Target( "", ip, port));
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.media.rtp.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    public class RTCPViewer extends JFrame implements ActionListener, KeyListener,
    MouseListener, WindowListener {
    private JList list;
    private Vector reports;
    private RtcpListModel listModel;
    private JButton clear;
    private JButton start;
    private boolean recording;
    public RTCPViewer() {
    setTitle( "JMF/RTCP Tracer");
    re

    I'm also getting some really bad sound quality on facebook notifications. I've been forced to disable them they sound horrible like they are clipping.
    Trying to figure out if this is a problem on all Late 2013 15" macbook pros or if mine is defective? This occurs even at around 20-30% volume levels with the Facebook notification sound problems...

  • Java Proxy Generation not working - Support for Parallel Processing

    Hi Everyone,
    As per SAP Note 1230721 - Java Proxy Generation - Support for Parallel Processing, when we generate a java proxy from an interface we are supposed to get 2 archives (one for serial processing and another suffixed with "PARALLEL" for parallel processing of jaav proxies in JPR).
    https://websmp230.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/sapnotes/index2.htm?numm=1230721
    We are on the correct patch level as per the Note, however when we generate java proxy from the IR for an outbound interface, it genrates only 1 zip archive (whose name we ourselves provide in the craete new archive section). This does not enable the parallel processsing of the messages in JPR.
    Could you please help me in this issue, and guide as to how archives can be generated for parallel processing.
    Thanks & Regards,
    Rosie Sasidharan.

    Hi,
    Thanks a lot for your reply, Prateek.
    I have already checked SAP Note 1142580 - "Java Proxy is not processing messages in parallel" where they ask to modify the ejb-jar.xml. However, on performing the change in ejb-jar.xml and while building the EAR, I get the following error:
    Error! The state of the source cache is INCONSISTENT for at least one of the request DCs. The build might produce incorrect results.
    Then, on going through the SAP Note 1142580 again, I realised that the SAP Note 1230721 also should be looked onto which will be needed for generating the Java proxy from Message Interfaces in IR for parallel processing.
    Kindly help me if any of you have worked on such a scenario.
    Thanks in advance,
    Regards,
    Rosie Sasidharan.

  • JAVA for embedded systems: just a myth ?

    Hi,
    I'm relatively new to JAVA (a year or so), and so far I'm fascinated. I've only developed for PC using J2SE, although I'heard a lot of hipe about J2ME, which I guess is the JAVA for embedded systems (correct me if I'm wrong here).
    I worked a lot with microcontrollers, and I think it would be really nice to program them using JAVA. I googled serched for JAVA enabled embedded systems, but I couldn't find anything.
    Anyway, this morning I got to this site and find a very interesting article, which I'd like to share with you and hear your opinions about the 5th myth.
    The link is: http://www.chipcenter.com/knowledge_centers/embedded/todays_feature/showArticle.jhtml?articleID=10300909
    Cheers!!

    >... very interesting article, which I'd like to share with
    you and hear your opinions about the 5th myth.
    Very interesting. I'd always wondered what happened to the Java chips...
    Here's a thought, and an associated question, if any of you reading this happen to be up on modern processor architecture...
    What about microcode? Back in school (decades ago) I learned a bit about microcode, which was like very simple, low-level instructions that a processor would "execute" to execute each assembly/machine language instruction. The idea was that if you needed to tweak the instruction set of a processor, you could rewrite its microcode. Seems like this would lend itself nicely to implementing a JVM in "hardware"... The question is, do they even use microcode anymore? With the pursuit of speed and optimization, I wonder if they didn't abandon it and go with highly specialized/optimized circuits instead...
    Back to the original question -- it would be somewhat ironic if Java weren't available for embedding systems. The original target system was set-top boxes, etc. I've tried a few JVMs on my Palm -- they're getting there!

  • Dsc:| |-QueryInterface IID_IOPCBrowse: (FAILED, HRESULT=0x80004002 No such interface supported )

    Hi, I'm moving my application from LV/DSC 8.5 to 8.6.1 and I'm getting the following problem.
    I created an OPC Client I/O server to connect to the Eldridge Engineering Inc. Modbus - OPC server (http://www.opcsystems.com/modbus.htm). This server is DA 2.5 and supports Hierarchical browsing.  Looking to the client loggin file I found the following error:
    | |-QueryInterface IID_IOPCBrowse: (FAILED, HRESULT=0x80004002 No such interface supported )
    Apparently the client / server behaves properly when I read (by the "Distributed System Manager" tool) few items at time, but the client is disconnected when I ask to read few tens of items in one shot. There is no way to reconnect it, only way is to undeplpoy the client and deploy it again.  I don't know if the two problems are related each other. 
    Any help is really welcome :-)
    cheers
    gaetano maron

    Hi Gaetano,
    error 80004002 may require that you re-register the OPC server. See the following document for details:
    Errors Connecting to OPC Server When Using DataSocket as an OPC Client in LabVIEW
    Tools for Troubleshooting OPC Interface Problems
    Furthermore, I have a couple of questions:
    Do you have both LV 8.5 and 8.6.1 installed on the same machine? Or they run on different PCs?
    I've browsed to the URL you forwarded http://www.opcsystems.com/modbus.htm It seems that Eldridge server also has a Modbus interface for communicating between applications.  As a possible workaround, have you tried to use a Modbus I/O server for interfacing with Eldridge SW? Here there are some tips about how doing this:
    Using Modbus I/O Servers (DSC and RT Modules)
    Troubleshooting Modbus I/O Servers (DSC Module)
    Introduction to Modbus (see chapter "MODBUS I/O servers")
    Hope this helps,
    Best Regards,
    Fabio
    Fabio M.
    National Instruments
    Embedded & OEM Systems Engineer

  • 64 bits Error -2147467262 - No such interface supported

    Hi,
    It will be very kind of you in case you can help me.... I have a very particular issue... trying to consume a COM object developed by myself through a JAVA application. so we have 3 components:
    (All inside windows 7 64 bits environment)
    1) Java application
    2) JNI (c++) library
    3) COM object.
    A simple Java application, used library 64 bits C:\Program Files\Java\jdk1.6.0_45
    and the code looks similar to that:
    public class DP {
    static {
    System.loadLibrary("JNIDP");
    private native boolean Init();
    public static void main(String[] args) {
    DP dp = new DP();
    dp.Init();
    I have generated the JNI interface:
    JNIEXPORT jboolean JNICALL Java_com_ncr_asr_DP_Init
      (JNIEnv *, jobject);
    and create a library JNIDP to comsume the COM object like that:
    JNIEXPORT jboolean JNICALL Java_com_ncr_asr_DP_Init(JNIEnv *env , jobject obj ) 
    hRes = CoInitialize( NULL );
    IDPPos* pDPPOS = NULL;
    hRes = CoCreateInstance(CLSID_DPPos, NULL, CLSCTX_ALL, IID_IDPPos, (void**)&pDPPOS );
      return !FAILED( hRes );
    When I execute the Simple Java Application everything goes well and the Init() method works successfully.
    Now, If I try to consume the JNI library  through a bigger Java Application, also using the library 64 bits C:\Program Files\Java\jdk1.6.0_45
    The CoCreateInstance inside the Init method return error: -2147467262 (No such interface supported).
    I am unable to realize what is going on... and why the bigger java application is getting this error trying to consume the COM object through JNI.
    I am really confuse and not sure what to try. Any help will be appreciated. 
    Thanks in advance.
    Sebastian

    Let see... I make some testing related to your suggestion... so, I have made a new COM component for testing propose base on ATL, just this example:
    http://msdn.microsoft.com/en-us/library/dssw0ch4(v=vs.90).aspx
    Then I have updated my DLL (The one that java application consume with JNI) to call this new component exactly the same as the client application does in the example....
    1) First Test: Simple Java Application consume the JNI DLL and I can see printed the "101" as the example COM is doing... so, It works successfully.
    2) Second Test: Bigger Java Application consume the JNI DLL and I got bad news... a file was generated with information about the issue... like that:
    Any suggestions?
    # A fatal error has been detected by the Java Runtime Environment:
    #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000007fef4575dc9, pid=6156, tid=5352
    # JRE version: 6.0_45-b06
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (20.45-b01 mixed mode windows-amd64 compressed oops)
    # Problematic frame:
    # C  [JNIDP.dll+0x5dc9]
    # If you would like to submit a bug report, please visit:
    #   http://java.sun.com/webapps/bugreport/crash.jsp
    # The crash happened outside the Java Virtual Machine in native code.
    # See problematic frame for where to report the bug.
    ---------------  T H R E A D  ---------------
    Current thread (0x0000000007795000):  JavaThread "GdPos:dispatch" [_thread_in_native, id=5352, stack(0x00000000092e0000,0x00000000093e0000)]
    siginfo: ExceptionCode=0xc0000005, reading address 0x0000000000000000
    Registers:
    RAX=0x0000000000000000, RBX=0x000000077cea0b38, RCX=0x0000000000000000, RDX=0x00000000093ddc38
    RSP=0x00000000093ddb90, RBP=0x00000000093ddd00, RSI=0x00000000000000ff, RDI=0x00000000093ddbc0
    R8 =0x0000000000000000, R9 =0x0000000000000000, R10=0x000007fef45fc4b8, R11=0x0000000000000001
    R12=0x0000000000000000, R13=0x000000077cea0b38, R14=0x00000000093ddd20, R15=0x0000000007795000
    RIP=0x000007fef4575dc9, EFLAGS=0x0000000000010202
    Top of Stack: (sp=0x00000000093ddb90)
    0x00000000093ddb90:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddba0:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddbb0:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddbc0:   00000000093ddc80 000007fef457197e
    0x00000000093ddbd0:   00000000093ddc18 00000000093ddc38
    0x00000000093ddbe0:   0000000000000000 cccccccc00000017
    0x00000000093ddbf0:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddc00:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddc10:   cccccccccccccccc 0000000000000000
    0x00000000093ddc20:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddc30:   cccccccccccccccc 0000000000000000
    0x00000000093ddc40:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddc50:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddc60:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddc70:   cccccccccccccccc cccccccccccccccc
    0x00000000093ddc80:   00000000021c5b22 00000000021d1386 
    Instructions: (pc=0x000007fef4575dc9)
    0x000007fef4575da9:   00 00 00 e8 9f 07 01 00 83 f8 01 75 03 cc 33 c0
    0x000007fef4575db9:   48 8b 44 24 40 48 8b 00 48 8b 4c 24 40 48 8b 09
    0x000007fef4575dc9:   48 8b 00 4c 8b 44 24 48 48 8d 15 98 6c 08 00 ff
    0x000007fef4575dd9:   10 48 83 c4 30 5f c3 cc cc cc cc cc cc cc cc cc 
    Register to memory mapping:
    RAX=0x0000000000000000 is an unknown value
    RBX=0x000000077cea0b38 is an oop
    {method} 
     - klass: {other class}
    RCX=0x0000000000000000 is an unknown value
    RDX=0x00000000093ddc38 is pointing into the stack for thread: 0x0000000007795000
    RSP=0x00000000093ddb90 is pointing into the stack for thread: 0x0000000007795000
    RBP=0x00000000093ddd00 is pointing into the stack for thread: 0x0000000007795000
    RSI=0x00000000000000ff is an unknown value
    RDI=0x00000000093ddbc0 is pointing into the stack for thread: 0x0000000007795000
    R8 =0x0000000000000000 is an unknown value
    R9 =0x0000000000000000 is an unknown value
    R10=0x000007fef45fc4b8 is an unknown value
    R11=0x0000000000000001 is an unknown value
    R12=0x0000000000000000 is an unknown value
    R13=0x000000077cea0b38 is an oop
    {method} 
     - klass: {other class}
    R14=0x00000000093ddd20 is pointing into the stack for thread: 0x0000000007795000
    R15=0x0000000007795000 is a thread
    Stack: [0x00000000092e0000,0x00000000093e0000],  sp=0x00000000093ddb90,  free space=1014k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    C  [JNIDP.dll+0x5dc9]  ATL::CComPtrBase<IUnknown>::QueryInterface<IObject1>+0x69
    j  com.DPLogger.Init()Z+4
    j  com.DPClient.Init()Z+39
    j  com.DPMgr.init()V+11
    j  com.Engine.eventInit()V+254
    j  com.Main$1.windowOpened(Ljava/awt/event/WindowEvent;)V+3
    j  java.awt.Window.processWindowEvent(Ljava/awt/event/WindowEvent;)V+58
    j  java.awt.Window.processEvent(Ljava/awt/AWTEvent;)V+69
    j  java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+573
    j  java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
    j  java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+65
    j  java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
    j  java.awt.EventQueue.dispatchEventImpl(Ljava/awt/AWTEvent;Ljava/lang/Object;)V+41
    j  java.awt.EventQueue.access$400(Ljava/awt/EventQueue;Ljava/awt/AWTEvent;Ljava/lang/Object;)V+3
    j  java.awt.EventQueue$2.run()Ljava/lang/Void;+12
    j  java.awt.EventQueue$2.run()Ljava/lang/Object;+1
    v  ~StubRoutines::call_stub
    V  [jvm.dll+0x1eac57]
    Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
    j  com.DP.Init()Z+0
    j  com.DPLogger.Init()Z+4
    j  com.DPClient.Init()Z+39
    j  com.DPMgr.init()V+11
    j  com.Engine.eventInit()V+254
    j  com.Main$1.windowOpened(Ljava/awt/event/WindowEvent;)V+3
    j  java.awt.Window.processWindowEvent(Ljava/awt/event/WindowEvent;)V+58
    j  java.awt.Window.processEvent(Ljava/awt/AWTEvent;)V+69
    j  java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+573
    j  java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
    j  java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+65
    j  java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
    j  java.awt.EventQueue.dispatchEventImpl(Ljava/awt/AWTEvent;Ljava/lang/Object;)V+41
    j  java.awt.EventQueue.access$400(Ljava/awt/EventQueue;Ljava/awt/AWTEvent;Ljava/lang/Object;)V+3
    j  java.awt.EventQueue$2.run()Ljava/lang/Void;+12
    j  java.awt.EventQueue$2.run()Ljava/lang/Object;+1
    v  ~StubRoutines::call_stub
    j  java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0
    j  java.security.AccessControlContext$1.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;+28
    j  java.security.AccessControlContext$1.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+6
    j  java.awt.EventQueue$3.run()Ljava/lang/Void;+11
    j  java.awt.EventQueue$3.run()Ljava/lang/Object;+1
    v  ~StubRoutines::call_stub
    j  java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0
    j  java.security.AccessControlContext$1.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;+28
    j  java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+73
    j  java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z+204
    j  java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
    j  java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
    j  java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
    j  java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
    j  java.awt.EventDispatchThread.run()V+9
    v  ~StubRoutines::call_stub
    ---------------  P R O C E S S  ---------------
    Java Threads: ( => current thread )
      0x00000000073db000 JavaThread "GdPos:AS" [_thread_blocked, id=3612, stack(0x000000000b5c0000,0x000000000b6c0000)]
      0x00000000073da800 JavaThread "HSQLDB Timer @2602585e" daemon [_thread_blocked, id=7680, stack(0x000000000b4c0000,0x000000000b5c0000)]
      0x00000000073d9800 JavaThread "GdPos:ticker" [_thread_blocked, id=9184, stack(0x000000000b3c0000,0x000000000b4c0000)]
      0x00000000073d9000 JavaThread "ScaleSimulator" [_thread_blocked, id=4652, stack(0x000000000b2c0000,0x000000000b3c0000)]
      0x00000000073d8000 JavaThread "LUUpdateThread" [_thread_blocked, id=3188, stack(0x000000000b1c0000,0x000000000b2c0000)]
      0x00000000073d7800 JavaThread "ServerPriceThread" [_thread_blocked, id=7136, stack(0x000000000b0c0000,0x000000000b1c0000)]
      0x00000000073d6800 JavaThread "com.ncr.asr.FileAccessClient" [_thread_blocked, id=7320, stack(0x000000000afc0000,0x000000000b0c0000)]
      0x00000000073d6000 JavaThread "GdPos:hotnote" [_thread_blocked, id=5316, stack(0x000000000aec0000,0x000000000afc0000)]
      0x00000000073d5800 JavaThread "GdPos:pumper" [_thread_blocked, id=5248, stack(0x000000000adc0000,0x000000000aec0000)]
      0x00000000073d4800 JavaThread "MICRSimulator" [_thread_blocked, id=7976, stack(0x000000000acc0000,0x000000000adc0000)]
      0x00000000073d4000 JavaThread "ScannerSimulator" [_thread_blocked, id=7472, stack(0x000000000abc0000,0x000000000acc0000)]
      0x00000000073d3000 JavaThread "MSRSimulator" [_thread_blocked, id=9188, stack(0x00000000093e0000,0x00000000094e0000)]
      0x00000000073d2800 JavaThread "RMI TCP Connection(idle)" daemon [_thread_blocked, id=8304, stack(0x000000000aac0000,0x000000000abc0000)]
      0x00000000073d1800 JavaThread "RMI RenewClean-[192.168.56.1:49980]" daemon [_thread_blocked, id=1092, stack(0x000000000a8f0000,0x000000000a9f0000)]
      0x00000000073d1000 JavaThread "RMI Scheduler(0)" daemon [_thread_blocked, id=7188, stack(0x0000000009cb0000,0x0000000009db0000)]
      0x0000000007bb2800 JavaThread "RMI TCP Connection(idle)" daemon [_thread_blocked, id=8812, stack(0x0000000009bb0000,0x0000000009cb0000)]
      0x000000000813b800 JavaThread "RMI TCP Accept-1099" daemon [_thread_in_native, id=8896, stack(0x0000000009ab0000,0x0000000009bb0000)]
      0x0000000008310000 JavaThread "GC Daemon" daemon [_thread_blocked, id=8260, stack(0x00000000099b0000,0x0000000009ab0000)]
      0x0000000007c0c000 JavaThread "RMI Reaper" [_thread_blocked, id=7588, stack(0x00000000098b0000,0x00000000099b0000)]
      0x0000000007bb8000 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=9036, stack(0x00000000097b0000,0x00000000098b0000)]
      0x00000000005cf000 JavaThread "DestroyJavaVM" [_thread_blocked, id=6524, stack(0x00000000020c0000,0x00000000021c0000)]
    =>0x0000000007795000 JavaThread "GdPos:dispatch" [_thread_in_native, id=5352, stack(0x00000000092e0000,0x00000000093e0000)]
      0x0000000007103800 JavaThread "AWT-Shutdown" [_thread_blocked, id=6732, stack(0x00000000091e0000,0x00000000092e0000)]
      0x00000000075c6800 JavaThread "GdPos:blinker" [_thread_blocked, id=3684, stack(0x0000000008e70000,0x0000000008f70000)]
      0x00000000073b7800 JavaThread "AWT-Windows" daemon [_thread_in_native, id=6552, stack(0x0000000008f70000,0x0000000009070000)]
      0x00000000073b6000 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=5356, stack(0x0000000008c10000,0x0000000008d10000)]
      0x0000000006528800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=5064, stack(0x0000000006bb0000,0x0000000006cb0000)]
      0x0000000006523800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=8068, stack(0x0000000006ab0000,0x0000000006bb0000)]
      0x0000000006511000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=7412, stack(0x00000000069b0000,0x0000000006ab0000)]
      0x000000000650e000 JavaThread "Attach Listener" daemon [_thread_blocked, id=8308, stack(0x00000000068b0000,0x00000000069b0000)]
      0x0000000006509000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3632, stack(0x00000000067b0000,0x00000000068b0000)]
      0x000000000052e800 JavaThread "Finalizer" daemon [_thread_blocked, id=1116, stack(0x00000000066b0000,0x00000000067b0000)]
      0x000000000052d000 JavaThread "Reference Handler" daemon [_thread_blocked, id=5480, stack(0x00000000063b0000,0x00000000064b0000)]
    Other Threads:
      0x0000000000525000 VMThread [stack: 0x00000000062b0000,0x00000000063b0000] [id=2548]
      0x000000000655a000 WatcherThread [stack: 0x0000000006cb0000,0x0000000006db0000] [id=3880]
    VM state:not at safepoint (normal execution)
    VM Mutex/Monitor currently owned by a thread: None
    Heap
     PSYoungGen      total 37888K, used 28346K [0x00000007d5b60000, 0x00000007d85a0000, 0x0000000800000000)
      eden space 32512K, 73% used [0x00000007d5b60000,0x00000007d72cbc40,0x00000007d7b20000)
      from space 5376K, 81% used [0x00000007d7b20000,0x00000007d7f62e48,0x00000007d8060000)
      to   space 5376K, 0% used [0x00000007d8060000,0x00000007d8060000,0x00000007d85a0000)
     PSOldGen        total 86656K, used 4938K [0x0000000781200000, 0x00000007866a0000, 0x00000007d5b60000)
      object space 86656K, 5% used [0x0000000781200000,0x00000007816d2820,0x00000007866a0000)
     PSPermGen       total 40256K, used 31716K [0x000000077c000000, 0x000000077e750000, 0x0000000781200000)
      object space 40256K, 78% used [0x000000077c000000,0x000000077def9168,0x000000077e750000)
    Code Cache  [0x00000000021c0000, 0x0000000002430000, 0x00000000051c0000)
     total_blobs=775 nmethods=273 adapters=455 free_code_cache=48966080 largest_free_block=12288
    Dynamic libraries:
    0x0000000000400000 - 0x000000000042f000 C:\Program Files\Java\jre6\bin\javaw.exe
    0x0000000077150000 - 0x00000000772f9000 C:\windows\SYSTEM32\ntdll.dll
    0x0000000076ee0000 - 0x0000000076fff000 C:\windows\system32\kernel32.dll
    0x000007fefd660000 - 0x000007fefd6cb000 C:\windows\system32\KERNELBASE.dll
    0x000007fefdba0000 - 0x000007fefdc7b000 C:\windows\system32\ADVAPI32.dll
    0x000007feff150000 - 0x000007feff1ef000 C:\windows\system32\msvcrt.dll
    0x000007feff1f0000 - 0x000007feff20f000 C:\windows\SYSTEM32\sechost.dll
    0x000007fefede0000 - 0x000007fefef0d000 C:\windows\system32\RPCRT4.dll
    0x0000000076a70000 - 0x0000000076b6a000 C:\windows\system32\USER32.dll
    0x000007fefdaa0000 - 0x000007fefdb07000 C:\windows\system32\GDI32.dll
    0x000007fefef60000 - 0x000007fefef6e000 C:\windows\system32\LPK.dll
    0x000007feff210000 - 0x000007feff2d9000 C:\windows\system32\USP10.dll
    0x000007fefdb70000 - 0x000007fefdb9e000 C:\windows\system32\IMM32.DLL
    0x000007fefecb0000 - 0x000007fefedb9000 C:\windows\system32\MSCTF.dll
    0x000000006d830000 - 0x000000006dfec000 C:\Program Files\Java\jre6\bin\server\jvm.dll
    0x000007fefb8b0000 - 0x000007fefb8eb000 C:\windows\system32\WINMM.dll
    0x000000006d7a0000 - 0x000000006d7ae000 C:\Program Files\Java\jre6\bin\verify.dll
    0x000000006d3c0000 - 0x000000006d3e7000 C:\Program Files\Java\jre6\bin\java.dll
    0x000000006d7f0000 - 0x000000006d802000 C:\Program Files\Java\jre6\bin\zip.dll
    0x000000006d000000 - 0x000000006d1c4000 C:\Program Files\Java\jre6\bin\awt.dll
    0x000007fefb660000 - 0x000007fefb6d1000 C:\windows\system32\WINSPOOL.DRV
    0x000007fefdc90000 - 0x000007fefde93000 C:\windows\system32\ole32.dll
    0x000007fefdf20000 - 0x000007fefeca8000 C:\windows\system32\SHELL32.dll
    0x000007fefdea0000 - 0x000007fefdf11000 C:\windows\system32\SHLWAPI.dll
    0x000007fefc020000 - 0x000007fefc214000 C:\windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac\COMCTL32.dll
    0x000007fefb880000 - 0x000007fefb898000 C:\windows\system32\DWMAPI.DLL
    0x000007fefbd50000 - 0x000007fefbda6000 C:\windows\system32\uxtheme.dll
    0x000000006d2a0000 - 0x000000006d315000 C:\Program Files\Java\jre6\bin\fontmanager.dll
    0x000007fefd4e0000 - 0x000007fefd4ef000 C:\windows\system32\CRYPTBASE.dll
    0x000007fef4570000 - 0x000007fef4628000 C:\NCR\caja\testing\JNIDP.dll
    0x000007feff2e0000 - 0x000007feff3b7000 C:\windows\system32\OLEAUT32.dll
    0x000000006d620000 - 0x000000006d637000 C:\Program Files\Java\jre6\bin\net.dll
    0x000007fefef10000 - 0x000007fefef5d000 C:\windows\system32\WS2_32.dll
    0x000007fefdc80000 - 0x000007fefdc88000 C:\windows\system32\NSI.dll
    0x000007fefce20000 - 0x000007fefce75000 C:\windows\system32\mswsock.dll
    0x000007fefce10000 - 0x000007fefce17000 C:\windows\System32\wship6.dll
    0x000000006d640000 - 0x000000006d64c000 C:\Program Files\Java\jre6\bin\nio.dll
    0x000000006d4e0000 - 0x000000006d515000 C:\Program Files\Java\jre6\bin\jpeg.dll
    0x000007fefd030000 - 0x000007fefd047000 C:\windows\system32\CRYPTSP.dll
    0x000007fefcb80000 - 0x000007fefcbc7000 C:\windows\system32\rsaenh.dll
    0x000007fefc8d0000 - 0x000007fefc8ee000 C:\windows\system32\USERENV.dll
    0x000007fefd5b0000 - 0x000007fefd5bf000 C:\windows\system32\profapi.dll
    0x000007fefaea0000 - 0x000007fefaeb5000 C:\windows\system32\NLAapi.dll
    0x000007fef6af0000 - 0x000007fef6b05000 C:\windows\system32\napinsp.dll
    0x000007fef6ad0000 - 0x000007fef6ae9000 C:\windows\system32\pnrpnsp.dll
    0x000007fefcca0000 - 0x000007fefccfb000 C:\windows\system32\DNSAPI.dll
    0x000007fef6ac0000 - 0x000007fef6acb000 C:\windows\System32\winrnr.dll
    0x000007fef6ab0000 - 0x000007fef6ac0000 C:\windows\system32\wshbth.dll
    0x000007fefc9c0000 - 0x000007fefc9c7000 C:\windows\System32\wshtcpip.dll
    0x000007fefa290000 - 0x000007fefa2b7000 C:\windows\system32\IPHLPAPI.DLL
    0x000007fefa280000 - 0x000007fefa28b000 C:\windows\system32\WINNSI.DLL
    0x000007fef5a70000 - 0x000007fef5a78000 C:\windows\system32\rasadhlp.dll
    0x000007fef9f00000 - 0x000007fef9f53000 C:\windows\System32\fwpuclnt.dll
    0x000000006d6c0000 - 0x000000006d6c6000 C:\Program Files\Java\jre6\bin\rmi.dll
    0x000007fefd480000 - 0x000007fefd4d7000 C:\windows\system32\apphelp.dll
    0x0000000077310000 - 0x0000000077317000 C:\windows\system32\PSAPI.DLL
    VM Arguments:
    jvm_args: -Djava.library.path=c:\testing -Dfile.encoding=Cp1252 
    java_command: com.ncr.asr.Main
    Launcher Type: SUN_STANDARD
    Environment Variables:
    JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45\
    CLASSPATH=.;.;C:\PROGRA~2\JMF21~1.1E\lib\sound.jar;C:\PROGRA~2\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~2\JMF21~1.1E\lib;
    PATH=C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Dell\DW WLAN Card;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Common
    Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;C:\Program Files (x86)\Enterprise Vault\EVClient\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program
    Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.6.0_45\jre\bin;C:\eclipse\MinGW\bin;C:\apache-maven-3.2.1\bin
    USERNAME=
    OS=Windows_NT
    PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 37 Stepping 5, GenuineIntel
    ---------------  S Y S T E M  ---------------
    OS: Windows 7 , 64 bit Build 7601 Service Pack 1
    CPU:total 4 (2 cores per cpu, 2 threads per core) family 6 model 37 stepping 5, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, ht
    Memory: 4k page, physical 8312664k(4321372k free), swap 16623468k(11952492k free)
    vm_info: Java HotSpot(TM) 64-Bit Server VM (20.45-b01) for windows-amd64 JRE (1.6.0_45-b06), built on Apr  1 2013 12:31:37 by "java_re" with MS VC++ 8.0 (VS2005)
    time: Mon Jun 02 16:03:14 2014
    elapsed time: 47 seconds
    Sebastian

  • Can we demodulate the signal recieved at DAQ card without using any hardware interface(by only using labview)?

    Hi all,
    Can we demodulate the signal recieved at DAQ card without using any hardware interface(by only using labview)? if yes then how? please give brief idea.
    Regards,
    Amit

    There is probably a way to do it, but it it may be easier to use an X-series board for the job.   They support a new counter capability for count reset on a digital edge without needing to be configured in encoder position mode.  I am not sure exactly how that feature's been implemented however, so maybe it won't make things easier after all.
    The plan based on the hoped-for behavior: 
    1. Configure an X-series counter for pulse generation based on "ticks" of your clock channel.
    2. Set both initial delay and low time to the critical # of ticks.
    3. Configure for count reset on a digital edge (if possible in pulse generation mode)
    4. Configure the count reset value to be the critical # (or possibly 1 less, if possible in pulse generation mode)
    5. If you want the output to remain high indefinitely, configure the counter task to use its own output as a
    pause trigger, and pause while high.
    The way pulse generation works is to preload a # of "low time" ticks into the count register.  Then every source edge will decrement the count.  When the count reaches terminal count (0), the counter's output is toggled (or can be configured to pulse).  The register is then loaded with the # of "high time" ticks and the process continues.
    You would be perpetually interrupting the count-down process as long as you got your triggers in time.  The count would keep getting reset to the # of low counts, keep decrementing toward 0 without reaching it, and so on.  If ever you did reach 0, the output state would toggle high, then the high state would prevent subsequent clock signals from decrementing the count.
    You can conceivably do a similar thing with a 6601, but I'm pretty sure you'd need 2 counters working together to get it working.
    -Kevin P

  • HP Compaq dc7700p INTEL HOST EMBEDDED CONTROLLER INTERFACE (HECI) DRIVER

    Hi.
    I jusy took a HP Compaq dc7700p Small Form Factor. I just realised that there is no Intel Host Embedded Controller Interface (Heci) Driver. I use Windoes 7 32 bit. Why there is no driver for this computer with this System? I need help I really need to do a Wireless Connection please. And the sp34743.exe it's not helping at all.
    Caprice77

    Hi:
    Unfortunately I do not know how to activate the AMT hardware.
    I doubt that has anything to do with the wireless not working.
    In the device manager, is there a device listed under an Other Devices category labeled as a Network Controller?
    If there is, that is the wireless card that needs a driver.
    If there is no Network Controller device listed, then your PC does not have a wireless card.  That was a rare option on an HP business desktop.
    If there is a Network Controller device listed, please do the following...
    Go to the device manager and click on that Network Controller device needing drivers.
    Then click on the Details tab.  Now you see a Property drop down list and it is defaulted to Device Description.
    Drop down on that and select the second item on the list (Hardware ID's).
    Post the top string of characters you see there.

  • Group Policy Management | No such interface supported

    Running Windows Server 2008 R2 as a Domain Controller and when I open Group Policy Management, click on a GPO, then click on the Settings tab, it pops up an error message that says "No such interface supported".  I've found several articles
    that talk about registering .dll files and I've done that and nothing.  I've uninstalled GPMC and reinstalled and that didn't fix anything.  Can anyone help resolve this?

    Hi Jason,
    Before going further, do we have other domain controllers? If yes, does GPMC work correctly on these domain controller? GPMC reports the error "No Such interface supported" normally is due to a missing or corrupted Windows component.
    Besides, do we update the server to the latest? If not, we can update the server to the latest and then reinstall the GPMC to see if the issue persists.
    TechNet Subscriber Support
    If you are TechNet Subscription user and have any feedback on our support quality, please send your feedback here.
    Best regards
    Frank Shen

  • There are error message "No such interface supported" when play Audio/Media from USB thumb disk with Metro APP like Xbox.

     There are error message "No such interface supported" when play Audio/Media from USB thumb disk with Metro APP like Xbox in windows. how can I solve this problem?   if I use destop player like windows media player, no such error.
    would you please give some solution for this error? thanks!

    OS is window10, Metro APP is Xbox or MultiMedia 8; any video format will occur error only by following steps:  
    a. Put Audio / Media / Photo files into USB thumb disk or Micro SD card.
    b. Connect USB thumb disk / Micro SD Card  to Platform.
    c. Open 'File Explorer', click USB thumb disk.
    d. Open audio file with metro app: Music. / Open Media file with metro app: Video./Open Photo file with metro app.

  • Update on tooling with Java ME Embedded 8.1 Developer Preview

    If you are having problems with connecting via USB or with static IP addresses, please see:
    Update on tooling with Java ME Embedded 8.1 Developer Preview
    Best,
    -- Terrence

    Hello,
    I am just viewing this course now and am stuck on finding the raspberry pi 8.1 EA binary:
    oracle-jmee-8-1-ea-raspberrypi-linux-bin-b01-20_may_2014.zip
    The only thing I can find on this page (which is what the document your link brings up has)
    http://www.oracle.com/technetwork/java/embedded/javame/embed-me/downloads/index.html
    is 8.0:
    oracle-jmee-8-0-rr-raspberrypi-linux-bin.zip
    Please help...
    Thanks

  • Why Java Web Start doesn't support Pack200 out-of-the-box?

    Hello All,
    Why Java Web Start doesn't support Pack200 out-of-the-box? I was hoping that Java 6 would make things easier by adding direct support for Pack200 in Java Web Start and JNLP without needing to use servlets, etc.? All my clients are Java 5 or above so I can't push the Pack200 compressed version of the jar to every single one of them and there is no selection process needed. But I can't do it because of the servlet or complex Apache server setup requirement (it would be a headache to get customers' web server admins to set up Apache or whatever web server that way).
    My question is why is there unwillingness to add Pack200 support directly to Java Web Start and JNLP so that you can start Pack200 compressed jars just like you would start any jar using Java Web Start? Is te a technical problem?
    Thank you,
    Mete Kural

    Hallo,
    I didn�t try it, but the webstart FAQ�s read:
    Can I use Pack200 compression with the JnlpDownloadServlet?
    Yes. The JnlpDownloadServlet distributed in the samples directory of the JDK now supports Pack200. If you deploy yourfile.jar along with yourfile.jar.pack.gz the packed file will be downloaded when the client is running Java Web Start 1.5.0 or later.
    http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/faq.html#217
    For further information you may want to look at
    http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/downloadservletguide.html#pack200
    The configuration of the server and the the servlet (as described in the second link) is as easy as it seems.
    I got it working on the first try and it was my first experience with websevers at all.
    Bye Schippe
    Message was edited by:
    Schippe

Maybe you are looking for

  • Programs "Unexpectedly Quit"

    I was wondering if any knows why all my programs, escpecially my internet programs(Safari&Internet Explorer) are now always "unexpectedly quit". Just recently it has been happening, and when I try to go into my yahoo email account when im in Safari,

  • Regarding the Exit 'EXIT_SAPLRRS0_001'

    Hi, I am facing one problem, while using this exit, what is the problem is, i am entering period and year as input in the input field, and using this exit i tried to change that period, so i changed L_S_RANGE-HIGH and  L_S_RANGE-LOW. For example, i h

  • Documents to PDF issues

    I am having trouble with the end product with documents that are turned in to PDFs. All the coloring is correct when saved, but when PDF'd there is discoloring and "white boxs" that form in the PDF. Any help is appreciated!

  • Site Name Property Problem

    When I try to get the OracleConnection Site.Name property, it throws an exception.

  • Setup Time Capsule

    I purshache my first apple devices, Time capsule 2TB and Apple TV2. Using windows laptop I instaled the airport. My friend used the capsule to send me videos. when I try to setup my home network the Airport can´t see the capsula. I need help, Is the