📄 mapperclientapplet.java
字号:
}
//Main method
public static void main(String[] args) {
MapperClientApplet applet = new MapperClientApplet();
applet.isStandalone = true;
Frame frame;
frame = new Frame() {
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
public synchronized void setTitle(String title) {
super.setTitle(title);
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
}
};
frame.setTitle("亚太安讯 WebGis");
frame.add(applet, BorderLayout.CENTER);
applet.init();
applet.start();
frame.setSize(800,710);
//Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
//frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
frame.setVisible(true);
}
/*//////////////////////////////////////////////////////////////////////////////////////////////////
呼叫车辆的线程。连接WebGps服务得到GPS车辆信息字符串,根据车辆经度,纬度,显示车辆信息
///////////////////////////////////////////////////////////////////////////////////////////////////*/
class tcpServerThread extends Thread
{
private String telelphone;
private String the_CarPlate;
public String in_string;
JLabel lCarStatus = new JLabel();
MCanvas m_map;
public Vector getMsg;
public String myurl;
public tcpServerThread(String m_SIMNum,String O_CarPlate,JLabel lStatus,String url,MCanvas m_mapx){
telelphone=m_SIMNum;
the_CarPlate=O_CarPlate;
lCarStatus=lStatus;
myurl=url;
m_map=m_mapx;
//m_map=m_mapx;
}
public Vector getPosMessage(String Msg)//解析收到的定位信息
{
Vector v=new Vector();
String k="";
double j=0.0;
String ff="";
String sub="/";
String result="";
String dd="";
// 0000000000000000$GPRMC 064935.000 A 3955.5850 N 11619.6262 E 009 312 281004 *FF
// 0000000000000400$GPRMC 221018.000 V 4057.3118 N 11757.6691 E 000 120 031104 *FF
//in_string=0000000000000000$GPRMC 084754.000 V 4057.3174 N 11757.6659 E 000 144 051104 *FF
int index1=Msg.indexOf(" ");
int index2=Msg.indexOf(" ",index1+1);
int index3=Msg.indexOf(" ",index2+1);
int index4=Msg.indexOf(" ",index3+1);
k=Msg.substring(index3+3,index4);
j = Double.valueOf(k).doubleValue()/60;
DecimalFormat nf = new DecimalFormat("0.####");
ff =nf.format(j);
ff = ff.substring(2,ff.length());
// ff = Integer.toString(j);
String Latitude=Msg.substring(index3+1,index3+3)+"."+ff;
// double Lati=Double.parseDouble(Latitude)*0.01;
// Latitude=String.valueOf(Lati);
int index5=Msg.indexOf(" ",index4+1);
int index6=Msg.indexOf(" ",index5+1);
k=Msg.substring(index5+4,index6);
j = Double.valueOf(k).doubleValue()/60;
// DecimalFormat nf = new DecimalFormat("0.####");
ff =nf.format(j);
ff = ff.substring(2,ff.length());
// ff = Integer.toString(j);
String Longitude=Msg.substring(index5+1,index5+4)+"."+ff;
// double Longi=Double.parseDouble(Longitude)*0.01;
// Longitude=String.valueOf(Longi);
int index7=Msg.indexOf(" ",index6+1);
int index8=Msg.indexOf(" ",index7+1);
String Speed=Msg.substring(index7+1,index8);
double Sp=Double.parseDouble(Speed)*1.85;
Speed=String.valueOf(Sp);
int index9=Msg.indexOf(" ",index8+1);
int index10=Msg.indexOf(" ",index9+1);
String Date=Msg.substring(index9+1,index10);
Date = Date.substring(0,2)+"/"+Date.substring( 2,4)+"/" +Date.substring(4);
String Time = Msg.substring(index1+1,index2);
String OriginalHours = Time.substring(0,2);
int Add_Hours = (Integer.parseInt(OriginalHours)+8);
if(Add_Hours>24){
Add_Hours = Add_Hours-24;
}
String AlterHours=String.valueOf(Add_Hours);
Time = AlterHours+":"+Time.substring(2,4)+":" +Time.substring(4,6);
Date = Date+" "+Time;
v.addElement(Latitude);
v.addElement(Longitude);
v.addElement(Speed);
v.addElement(Date);
return v;
}
public void run(){
try{
// 得到ROW
int y=jTable.getSelectedRow();
in_string=ReturnS(telelphone);
// Vector PosInfo=getPosMessage(in_string);
System.out.println("after call recieve this message: "+in_string);
// myurl += "&message=" + in_string;
// myurl += "&CarTel=" + telelphone;
// System.out.println("here is the message sent to servlet: myurl "+myurl);
getMsg = getPosMessage(in_string);
//in_str="13693548440*D1359523955594511619611160023030603400000#";
//in_string=0000000000000000$GPRMC 084754.000 V 4057.3174 N 11757.6659 E 000 144 051104 *FF
String i="";
String dd ="";
String tel;
int j;
// String Latitude = (String)getMsg.elementAt(0);
// i = in_string.substring(21,27);
// j = Integer.valueOf(i).intValue()/60;
// dd = Integer.toString(j);
// String str_y=in_string.substring(19,21)+"."+dd;
String str_y=(String)getMsg.elementAt(1);
// i = in_string.substring(30,36);
// j = Integer.valueOf(i).intValue()/60;
// dd = Integer.toString(j);
// String str_x=in_string.substring(27,30)+"."+dd;
String str_x=(String)getMsg.elementAt(0);
// tel=in_string.substring(0,11);
String sSpeed=(String)getMsg.elementAt(2);
// sSpeed=in_string.substring(38,40);
//显示车辆状态
String sCarStatus=null;
String CallDate=(String)getMsg.elementAt(3);
myurl += "&m_x=" + str_y;
myurl += "&m_y=" + str_x;
String plate1=convertToChinese(the_CarPlate.substring(0,2));
String plate2=convertToChinese(the_CarPlate.substring(2,the_CarPlate.length()));
myurl += "&plate1="+plate1;
myurl += "&plate2="+plate2;
// String url = Initurl+"&CarPlate_1=" + plate1+"&CarPlate_2="+plate2 + "&m_x=" +
// m_Longitude + "&m_y=" + m_Latitude;
// myurl += "&CarTel=" + the_CarPlate;
// sCarStatus="车辆:" + CarPlate+"经度"+str_x+" 纬度"+str_y+" 速度 "+String.valueOf( Integer.valueOf(sSpeed).intValue()*1.852)+"公里/小时";
sCarStatus="车辆:" + CarPlate+"经度"+str_x+" 纬度"+str_y+" 速度 "+sSpeed+"公里/小时";
tableModel.setValueAt(str_x,y,6);
tableModel.setValueAt(str_y,y,7);
tableModel.setValueAt(CallDate,y,9);
tableModel.setValueAt(sSpeed,y,8);
lCarStatus.setText(sCarStatus);
adjustMap(myurl);
//完成呼叫,停止线程
// this.destroy();
}catch(Exception e){
System.out.println(e);
}
}
private String getTime()
{
Date currentTime=new Date();
//SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy MMMM dd,EEEE, HH:mm:ss");
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
String timeString=dateFormat.format(currentTime);
return timeString;
}
/*//////////////////////////////////////////////////////////////////////////////////////////////////
在线程中,画地图,连接servelet得到images画地图
///////////////////////////////////////////////////////////////////////////////////////////////////*/
void adjustMap(String url)
{
try
{
//even a checker board can never be bigger then 2 x width and height
byte[] img = new byte[m_map.getPreferredSize().width * m_map.getPreferredSize().height * 2];
//url=m_servletName;
URL mapServer = new URL(url);
URLConnection con = mapServer.openConnection();
System.out.println("In the adjustMap methord url: " + mapServer);
DataInputStream in = new DataInputStream(con.getInputStream());
try
{
in.readFully(img);
}
catch (EOFException ei)
{
}
in.close();
m_map.setImage(getToolkit().createImage(img));
//m_map.repaint();
m_map.update(m_map.getGraphics());
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
/*//////////////////////////////////////////////////////////////////////////////////////////////////
在线程中与连接WebGps Socket服务得到GPS车辆信息字符串,
///////////////////////////////////////////////////////////////////////////////////////////////////*/
public String HexString(String hint)
{
//System.out.println(hint);
int Hx_num=Integer.parseInt(hint);
String hex = Integer.toHexString(Hx_num);
//System.out.println(hex);
return hex;
}
/////在线程中与连接WebGps Socket服务,得到GPS车辆信息字符串
public String ReturnS(String Tel)
{
String Call_Mode="";
int CallSerial=10000;
String s="";
byte[] buffer = new byte[1024];
int bytesRead;
int i;
Socket tcpSocket;
try{
//服务器地址
//lCarStatus.setText("呼叫车辆0:"+Tel);
String server="219.237.4.34";
//断口号
int port= 8877;
System.out.println ("Connecting to " +server);
// 与服务器建立连接
tcpSocket = new Socket(InetAddress.getByName(server), port);
//超时限制
tcpSocket.setSoTimeout(360000);
//建立输入输出流
PrintStream out = new PrintStream( tcpSocket.getOutputStream()) ;
DataInputStream in = new DataInputStream(tcpSocket.getInputStream());
out.println("WEBGIS");
// bytesRead=in.read(buffer);
// System.out.println(new String(buffer, 0, bytesRead));
//呼叫设置
DialogSetCall m_SetCall = new DialogSetCall();
// m_SetCall.setModal(true);
// m_SetCall.setSize(400,290);
m_SetCall.setModal(true);
m_SetCall.setSize(500,290);
String m_Call="";
//熄火设置
// DialogStopCar m_StopCar = new DialogStopCar();
// m_StopCar.setModal(true);
// m_StopCar.setSize(480,320);
/////////////////////////////////////////////////////////////
//呼叫车辆,根据不同的状态m_tool,组织字符串 if 呼叫车辆位置,还是熄火,改变m_Call字符串
////////////////////////////////////////////////////////////////
if(m_tool==Telephone_tool){
m_SetCall.show();
Call_Mode=m_SetCall.CallMode;
// Thread TelThread =new tcpServerThread(m_SIMNum,lCarStatus,url,m_map);
// TelThread.start();
//Tel="";
m_Call="3#"+"$"+">"+ ++CallSerial +","+"SM,命令,"+Call_Mode+","+ CarPlate + ",,,"+"<";
//m_CarNum +"$"+ m_username +"$"+ Tel + ":*D" +m_CallNum + m_Interval + "#";//以前判断GPRS GSM
System.out.println(m_Call);
out.println(m_Call);
lCarStatus.setText("呼叫车辆: "+CarPlate);
// for(i=0;i<5;i++)//取几次,排除错误信息
// {String d="";
bytesRead=in.read(buffer);
s= new String(buffer, 0, bytesRead);
System.out.println("receive from SocketServer: "+s);
//receive from webServer: 0000000000000000$GPRMC 011735.000 V 4058.5987 N 11755.8865 E 000 204 081104 *FF
// d=s.substring(12,13);
// if (d.equals("D") )//如果是车辆经纬度信息
// {
// break;
// }
// bytesRead=in.read(buffer);
// }
}
else if(m_tool == KILLCAR_TOOL){
String m_StopNum="";
String m_confirm="win2000tm";
boolean ok_StopCar = false;
// m_StopCar.show();
// if (m_StopCar.jTextConfirm.getText()!=null)
// {
// ok_StopCar = m_confirm.equalsIgnoreCase(m_StopCar.jTextConfirm.
// getText());
// }
if(ok_StopCar)
{
//m_SIMNum="";
m_Call="3#"+"$"+"熄火"+"$"+ CarPlate +"$"+ m_CarNum +"$"+ m_username +"$"+ Tel + ":*LWIN2000TM#"; //以前判断GPRS GSM
}
//m_Call="3#";
System.out.println(m_Call);
out.println(m_Call);
lCarStatus.setText("车辆熄火:" + m_CarNum);
// }
bytesRead=in.read(buffer);
for(i=0;i<4;i++)//取几次,排除错误信息
{String d="";
s= new String(buffer, 0, bytesRead);
System.out.println(s);
d=s.substring(12,13);
if (d.equals("D") )//如果是车辆经纬度信息
{
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -