制作一个USB设备,用Java控制它

15

我正在考虑制作一个带有旋钮、按钮和LED的物理控制器(设备?)。我想使用Java与它互动(响应旋钮,点亮LED等)。提到Java的原因有两个:首先,我很熟悉Java1。其次,我已经用Java编写了我需要接口的其他程序(尽管有其他方法可以从另一种语言与Java程序交互)。

我希望这个设备通过USB连接并且(计算机)平台独立。

除了开始阅读Arduino网站之外,我完全不知道该从哪里开始,这是我的最佳/唯一选择吗? 是否有更适合与Java通信的东西?

注意:我知道Arduino与Java有关(不确定具体是什么),但似乎必须在C的子集中编写代码。

我该如何开始解决这个问题呢?


1- 请勿嘲笑。

6个回答

7
Arduino开发环境是用Java编写的。但是,你为Arduino平台编写程序的标准语言实际上是C ++。Arduino平台基于Atmel AVR芯片。至少有一个AVR芯片的Java VM。AVR还有其他可用的语言,如Forth和BASIC(尽管我只找到商业版本,所以如果你想找到它们,请搜索“AVR BASIC”)。Arduino使用虚拟COM端口在主机计算机和设备之间进行通信。虚拟COM端口模拟旧式串行线路,但使用USB完成。然后,您可以使用Java通信API使运行在主机计算机上的Java程序与您的物理设备通信。

@R Samuel Klatchko:我很好奇,它是否独立于平台,比如Linux,驱动程序呢?我听到很多关于Arduino的好评... :) - t0mm13b
IDE是跨平台的,但虚拟COM端口驱动程序不是。话虽如此,我相信最近版本的Linux内核已经内置了必要的驱动程序。 - R Samuel Klatchko
非常有趣的东西,特别是与NanoVM的链接。我还在消化所有这些内容,但似乎最简单的事情,尽管听起来不像,就是用Arduino语言完成Arduino部分...? - Dan Rosenstark
1
我已经使用Arduino一年多了——它支持Windows和Linux的跨平台功能非常棒。阅读《入门Arduino》这本书会在你刚开始学习时提供巨大的帮助。如果你懂Java,那么学习Arduino语言将会是非常轻松的事情。 - JohnForDummies
谢谢@JohnForDummies,我刚看到这个评论。我会尽快查看。最好的祝福。 - Dan Rosenstark

4
对于某些编码器和按钮,您可能希望实现USB HID设备。如果您要生产超过几个设备,您需要自定义板子。请查看V-USB,这是一个使用Atmel微控制器制作USB HID设备的开源库。他们有许多使用此库的项目示例。
您可以将其制作成HID游戏杆的外观,使用编码器生成X/Y轴信息并使按钮充当按钮。然后,您可以使用标准Java游戏API读取游戏杆的值。

1

请问您需要定制设备的具体需求是什么呢?在我看来,设计硬件有着非常高的门槛,而且大多数情况下,通过重新利用现有的游戏控制器硬件可以更好地解决问题。如果确实需要新的硬件,那么我建议您先搜索“USB开发套件”或“USB开发板”,这将为您提供诸如this, thisthis的链接。

至于如何使用Java与USB硬件进行交互,我曾经试过JUSB库,并且看起来很有前途,但是由于该库的本地库部分的Windows版本尚未编写,因此它似乎只能在Linux上运行。其他选择可以通过搜索“HID Java”来找到。


谢谢Jherico。该设备将具有一些“带LED环的无限旋转编码器:这些控件没有端点,因此提供完整的360度移动。这些控件提供速度相关的可变分辨率,因此缓慢移动编码器比快速移动编码器具有更好的分辨率。”它还将具有一些“LED背光按钮”。这就是第一次运行的全部内容...希望这能有所帮助。现在我实际写下来,听起来有些令人生畏。 - Dan Rosenstark

0

1
你是否遇到了难以理解其相关性的困境…? - Dan Rosenstark

0

好的,计算机平台无关?你的目标平台是哪些?这将取决于驱动程序和对该平台的支持,这个 USB 设备是做什么用的?它是一个大容量存储设备吗?您可能需要四处寻找并查看是否可以找到一个能够与该设备通信的设备驱动程序...

希望这有所帮助, 最好的问候, 汤姆。


谢谢,如果问题不清楚很抱歉:设备还没有建造。 - Dan Rosenstark

0

我知道对于串口,有一些库可以用来进行交互(如rs232库)。在谷歌上搜索Java和USB会返回多个答案(第一个叫做jUSB)。这将是我首先寻找的类型。


好的,但接下来你会怎么做?拿出你的焊铁并临时 improvisation(创作)吗?我也不知道如何制造 USB 设备,尽管我有人可以帮我焊接东西并遵循原理图(尽管我个人对此一无所知)。 - Dan Rosenstark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接