Comunicación en serie en Java en OS X

Estoy tratando de crear un programa que pueda transmitir y recibir a través de una comunicación USB a serie. Al investigar dos archivos, he aprendido que necesitaré: un .jararchivo que contenga la biblioteca real y, por lo que entiendo librxtxSerial.jnilib, ¿qué es un controlador?

Desde el siguiente sitio web he aprendido que ambos deben estar presentes en mi proyecto para comenzar el proceso de comunicación en serie.

http://rxtx.qbang.org/wiki/index.php/Download

Estoy usando Eclipse IDE en una Mac y parece que no puedo obtener la configuración correcta de los archivos para que esto funcione. No hay respuestas claras en ninguna parte de la red y espero que alguien pueda ayudar a aclarar esto para todos.

Respuesta 1

He usado NeuronRobotics nrjavaserial con gran éxito en Linux y Mac OS / X. Incrusta una biblioteca nativa en el archivo jar y luego presenta una interfaz Java. Se deriva de RXTX, por lo que espero que no sea un gran cambio para su proyecto.

EDICIÓN PRINCIPAL

Para ahorrarle algo de tiempo, esto es lo que estoy haciendo actualmente. Tenga en cuenta que estoy no utilizar un IDE en este momento - todo esto es la línea de comandos.

import gnu.io.NRSerialPort;
import gnu.io.UnsupportedCommOperationException;

import java.io.DataInputStream;
import java.io.IOException;
import java.util.Arrays;

public class PulseOximeter {
    public static void main( String[] argv ) throws IOException, UnsupportedCommOperationException {
        NRSerialPort serial = new NRSerialPort("/dev/rfcomm0", 115200);
        serial.connect();

        DataInputStream ins = new DataInputStream(serial.getInputStream());

        // read the first 10000 bytes a byte at a time
        for( int i = 0; i < 10000; i++ ) {
            int b = ins.read();
            if( b == -1 ) {
                System.out.println( "got EOF - going to keep trying" );
                continue;
            }
        }

        serial.disconnect();
    }
}

y el archivo maven para construirlo:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>tld.domainname</groupId>
    <artifactId>bluetooth</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <java.min.version>1.8</java.min.version>
        <maven.min.version>3.2.0</maven.min.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <resource.directory>src/main/resources</resource.directory>
    </properties>
    <prerequisites>
        <maven>${maven.min.version}</maven>
    </prerequisites>
    <dependencies>
        <dependency>
            <groupId>com.neuronrobotics</groupId>
            <artifactId>nrjavaserial</artifactId>
            <version>3.12.0</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <resources>
            <resource>
                <directory>${resource.directory}</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>${java.min.version}</source>
                    <target>${java.min.version}</target>
                    <showDeprecation>true</showDeprecation>
                    <showWarnings>true</showWarnings>
                    <compilerArgument>-Xlint:all</compilerArgument>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Este es el código para la versión de Linux: el mayor cambio será el nombre del puerto serie (la parte "/ dev / rfcomm0"). No tengo mi Mac aquí, así que lo siento, olvidé el nombre del dispositivo Mac, pero está en / dev, algo con Bluetooth si no recuerdo mal.

Todo lo que hace esta muestra es leer bytes fuera del puerto serie (USB). Tenga en cuenta que Java hace que esto sea un poco más divertido, ya que vuelven como enteros incluso si son realmente bytes, por lo que se divertirá con cualquier manipulación de bits que necesite hacer.

Respuesta: 2

La sintaxis xml de Spring Framework es algo flexible. Le permite definir cierta información como atributo o como elemento anidado. Por ejemplo, <nombre de propiedad = "accountDao" ref = "accountDao" /> o ...

¿Hay alguna forma de enviar un archivo .apk usando Bluetooth dentro de la aplicación? (por ejemplo, iniciamos la aplicación y luego enviamos el archivo .apk usando el icono de compartir dentro de la aplicación)

Siéntase libre de saltar al tl; dr. Así es como mi experiencia habitual con mi .jar es, en comando: java -cp test.jar test qao para abrir el jar A continuación, algo como UF UD UR, etc., ingrese al programa ...

Estoy tratando de extraer un nodo XML de una referencia de URI. Esta referencia de URI es generada por un firmante XAdES4j, y podría hacer referencia a un nodo dentro del mismo archivo XML o en la misma carpeta. Estaba esperando ...