2011-06-03 57 views
0

我正在开发一个项目,我需要从铱星公司的short burst data service转换突发数据(范围为300字节)。这是为了取代拨号连接,所以我需要从短突发中获取这些突发数据,并将它们转换为拨号连接的连续流。如何将突发数据打包为连续拨号式连接?

我是一个相对缺乏经验的程序员,我唯一知道的语言是java。

我怎么能转换数据呢?有没有关于如何操作信息包的类型以及如何在java中操纵它们的背景材料?

[编辑为清晰起见]

EDIT2:我不需要数据的其他方式转换(从流的块)

+2

你的问题不是很清楚。你想要将*从*和*转换为*到底是什么? – 2011-06-03 00:48:45

+0

您不能直接将字节写入OutputStream吗?它是内部将字节分组为数据包并管理拨号连接的低级别机制的流。 – ignis 2011-06-03 00:58:05

+0

您是否需要双向访问(即也可以获取数据并以300字节块的形式突发出来?) – Foon 2011-06-03 01:19:21

回答

1

你的问题不是您是否正在编写软件清除与Iridium收发器对话,或者你是否在服务器端,但我会认为你在客户端,因为从他们的网站判断服务器端是标准的IP网络。

该程序使用RS-232接口和AT(调制解调器)命令集与收发器通信。使用Java你将需要某种串行库;我在这方面有丰富的经验,特别是一个管理调制解调器的程序,将他们的通信连接到IP网络,当时唯一能够工作并且稳定的通信包是SerialPort from SerialIO。另一个潜在可行的选择是RxTx,但是当我几年前使用它时,它不稳定并且会每隔几天就会使JVM崩溃。无论哪一种,你都可以(也应该)将自己限制为JavaComm API,这将使你能够轻松地切换出串行库。

一旦你对你的串行端口说话,操作收发器应该和操作调制解调器一样,你需要参考doco的细节。如果它忠实于调制解调器,它将运行两种模式,命令和数据。在命令模式下,您正在发送由CRLF终止的AT xxx命令。当你处于数据模式时,你正在发送二进制数据。

二进制数据的结构几乎肯定是由铱星系统决定的,您需要遵守这一点;再次看到他们的doco。

如果你有定义你自己的数据协议的奢望,或者你的协议上面有自由格式的消息,我最好的建议是使你的消息在逻辑上成为关键字/值对,以确保长期的灵活性。如果你在空间上很紧张(而且看起来铱星设备的尺寸限制相当严格),你可以预先定义你的关键字(由客户端和服务器同意)并发送一个二进制整数,而不是UTF-8或ASCII串。该协议应该包括或推断一个非常基本的类型,以便数值特别是可以尽可能精简。

无论如何,我希望能给你一些指导和想法......请随时通过评论提问,特别是关于使用Java串行端口的特殊问题。