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

📄 mapperclientapplet.java

📁 实现网络GPS定位车辆的位置
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
  }

  //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 + -