将数据从BLED112发送到BLE设备

时间:2018-07-13 21:19:55

标签: java windows-10 bluetooth-lowenergy

我正在尝试在Windows 10上实现Java应用程序,以便能够使用低功耗蓝牙将数据发送到Feather 32u4 Bluefruit。

我购买了BLED112加密狗以能够使用bglib和bgapi

我通过使用串行端口成功将Java代码连接到加密狗,但是我不知道如何连接到设备...

谢谢您的帮助,

PS:这是我的实际代码:

static BGAPITransport bgapi;
static BLEDevice bledevice = null;

public static void main(String[] args) {
    System.out.println("Program started");
    bgapi=connectBLED112();
    bledevice=bgapi.
    System.out.println("Finished successfully");
}

public static BGAPITransport connectBLED112() {
    SerialPort port = connectSerial();
    try {
        return new BGAPITransport(port.getInputStream(), port.getOutputStream());
    } catch (IOException ex) {
        System.err.println(ex.getMessage());
    }
    return null;
}

public static String selectSerialPort() {

    CommPortIdentifier serialPortId = null;   
    Enumeration enumComm;

    enumComm = CommPortIdentifier.getPortIdentifiers();
    while (enumComm.hasMoreElements()) {
        serialPortId = (CommPortIdentifier) enumComm.nextElement();
        if(serialPortId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
            System.out.println(serialPortId.getName());
        }
    }

    return serialPortId.getName();
}

public static SerialPort connectSerial() {
    try {

        String portName = selectSerialPort();

        CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);

        if (portIdentifier.isCurrentlyOwned()) {
            System.err.println("Error: Port " + portName + " is currently in use");
        } 
        else {
            CommPort commPort = portIdentifier.open("BLED112", 2000);

            System.out.println("port = " + commPort);

            if (commPort instanceof SerialPort) {
                SerialPort serialPort = (SerialPort) commPort;
                serialPort.setSerialPortParams(115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

                serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | SerialPort.FLOWCONTROL_RTSCTS_OUT);
                serialPort.setRTS(true);


                System.out.println("serial port = " + serialPort);

                return serialPort;

            } else {
                System.err.println("Error: Port " + portName + " is not a valid serial port.");
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

1 个答案:

答案 0 :(得分:0)

这可能要晚了,但是去了:

首先,查找BLED112 Api。它是在线的,相当容易找到。这就是您要保留的内容,并提供很多参考。

它也在这里:https://www.silabs.com/documents/login/reference-manuals/Bluetooth_Smart_Software-BLE-1.6-API-RM.pdf

第二,开始收听BLED112上的广告。在Api文档中可以找到一个命令。 api参考文档中也列出了连接命令。