我想在JAVA中编写一个程序,它可以控制LED灯连接到连接到计算机的“东西”.
JAVA程序将包含JFrame中的8个切换按钮.按钮编号从1到8,当按下编号为X的按钮时,编号为X的LED将打开;再次单击(切换)该按钮时,该LED将关闭.
与我们必须在其中加载代码的微控制器不同,我提到的“某些东西”只是接收来自JAVA的信号(可能通过USB / SerialPort / …)来控制灯光.
例如,JAVA通过SerialPort将0000_0101(打开LED 1号和3号灯)发送到“某物”,然后“东西”将“保留”该值,直到发送新信号.该值的每个数字代表“某物”上引脚的高/低,我将引脚连接到LED.
“Something”可能类似于可以将“串行端口信号”转换为“二进制”并将“二进制”保存在具有输出引脚的寄存器中的设备,我可以将它们连接到LED.
那可能吗?有没有像“东西”这样的设备?它是什么?有没有人有任何建议?还是一些更好的方法来控制PC的灯光?
解决方法
我使用运行
Android端口的BeagleBone Black做了类似的事情.我设计了一个Android应用程序,它使用我创建的自定义蓝牙低功耗API与运行BLE堆栈的TI CC2541进行通信.
您需要做的是在C/C++中编写函数以进行切换I / O所需的平台硬件调用.像ToggleLed(led)这样的东西就足够了.然后使用Java Native Interface (JNI)将本机调用连接到Java.JNI创建一个可以静态加载的库.
创建库后,可以使用Java调用它.
例如,在我的情况下,我创建了一个与本机C通信的BLE API,它将对我的嵌入式CC2541 BLE芯片执行串行读/写操作,以命令它进入不同的状态.这些命令是连接/断开,写入数据和读取数据. BLE API是用Java编写的,通过JNI和驱动程序调用与硬件连接.然后我编写了使用BLE API的应用程序.