⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 productdata.java

📁 gps garmingpstool-src-0[1].9.tar.gz
💻 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 + -