📄 productdata.java
字号:
package net.aetherial.gis.garmin;
import java.io.*;
import java.util.*;
import javax.comm.*;
import net.aetherial.gis.garmin.*;
public class ProductData
{
private int productID;
private float softwareVersion;
private String about;
private String[] productCapability;
public ProductData ()
{
byte[] rawBytes = new byte[2];
rawBytes[0] = 0;
rawBytes[1] = 0;
LinkPacketConnection lpc = new LinkPacketConnection ();
LinkPacket ProductRequest = new LinkPacket (Garmin.PRODUCT_RQST, rawBytes);
lpc.send (ProductRequest);
LinkPacket ProductData = lpc.receive ();
LinkPacket productCap = lpc.receive ();
rawBytes = ProductData.getPacketData ();
productID = ((int) rawBytes[1] * 256) + ((int) rawBytes[0]);
softwareVersion = ((float) (((int) rawBytes[3] * 256) + ((int) rawBytes[2]))) / 100;
ByteArrayOutputStream baos = new ByteArrayOutputStream ();
for (int i = 4; i < rawBytes.length && rawBytes[i] != (byte) 0; i++)
{
baos.write (rawBytes[i]);
}
byte[] aboutBytes = baos.toByteArray ();
try
{
about = new String (aboutBytes, 0, aboutBytes.length, "US-ASCII");
}
catch (UnsupportedEncodingException e)
{
about = new String ("Unknown");
System.err.println (e);
}
byte[] dataBytes = productCap.getPacketData ();
productCapability = new String[dataBytes.length / 3];
for (int i = 0; i < dataBytes.length; i += 3)
{
int db1, db2;
if ((int) dataBytes[i+1] < 0)
db1 = 256 + (int) dataBytes[i+1];
else
db1 = (int) dataBytes[i+1];
if ((int) dataBytes[i+2] < 0)
db2 = 256 + (int) dataBytes[i+2];
else
db2 = (int) dataBytes[i+2];
int dataField = (db2 * 256) + db1;
String dataString;
if (dataField < 10)
dataString = new String ("00"+dataField);
else if (dataField < 100)
dataString = new String ("0"+dataField);
else
dataString = new String (""+dataField);
char c = (char) dataBytes[i];
productCapability[i / 3] = new String (c+dataString);
}
lpc.destroy ();
}
public String[] getProductCapabilities ()
{
return productCapability;
}
public int getProductID ()
{
return productID;
}
public float getSoftwareVersion ()
{
return softwareVersion;
}
public String getProductDescription ()
{
return about;
}
public String[] getProtocols (String prefix)
{
int count = 0;
for (int i = 0; i < productCapability.length; i++)
{
if (productCapability[i].startsWith (prefix))
count++;
}
String protocols[] = new String[count];
count = 0;
for (int i = 0; i < productCapability.length; i++)
{
if (productCapability[i].startsWith (prefix))
{
protocols[count] = new String (productCapability[i]);
count++;
}
}
return protocols;
}
public String[] getLinkProtocols ()
{
return getProtocols ("L");
}
public String[] getPhysicalProtocols ()
{
return getProtocols ("P");
}
public String[] getApplicationProtocols ()
{
return getProtocols ("A");
}
public String[] getDataFormats ()
{
return getProtocols ("D");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -