KRITSADA icon

Processing Serial

KRITSADA | PRO | 09/19/19 04:03:55 AM UTC | 0 ⭐ | 1129 👁️ | Never ⏰ | []
Java |

2.9 KB

|

None

|

0 👍

/

0 👎

import processing.serial.*;
 
      String val;     // Data received from the serial port
      Serial serialConnectionObject;
      int serialChannelIndexInt;
      float lat;
      float lng;
      int rectSizeX = 40 ;
      int rectSizeY = 40;
      float latcoord = 0;
      float longcoord = 0;
      boolean newData = false;
      float xCoord;
      float yCoord;
 
      void setup()
      {
        background(0);
        size(400,400, P2D);
        InitSerialConnectionVoid(0);
        String portName = Serial.list()[serialChannelIndexInt]; //change the 0 to a 1 or 2 etc. to match your port
        println(portName);
        serialConnectionObject.bufferUntil('n');
      }
 
      void draw()
      { 
        beginCamera();
        camera();
        translate(lat,lng);
        endCamera();
 
        if(newData) {
          fill(#FFFFFF, 10);
          noStroke();
          rectMode(CENTER);
          scale(2);
          rect(xCoord, yCoord, rectSizeX, rectSizeY);
        }
 
      }
 
      void serialEvent(Serial p) {
        try {
          println("test");
            val = p.readString();
              println(val);
            JSONObject json = parseJSONObject(val);
            if (json == null) {
              newData = false;
            } else {
              println(json.toString());
              lat = json.getFloat("lat");
              lng = json.getFloat("lng");
              println(lat);
              LatLngtoXY(lat,lng);
              println(xCoord, yCoord);
              newData=true;
            }
            //latcoord = map(lat, lat-0.00045000045, lat+0.00045000045, 0, width);
            //longcoord = map(lng, lng-0.00045000063, lng+0.00045000063, 0, height);
 
 
          }
        catch(RuntimeException e) {
           e.printStackTrace(); 
        }
 
      }
 
      void LatLngtoXY(float lat, float lon) {
          float mapWidth    = width;
          float mapHeight   = height;
 
          // get x value
          xCoord = (lon+180)*(mapWidth/360);
 
          // convert from degrees to radians
          float latRad = lat*PI/180;
          // get y value
          float mercN = log(tan((PI/4)+(latRad/2)));
          yCoord     = (mapHeight/2)-(mapWidth*mercN/(2*PI));
      }
 
      void InitSerialConnectionVoid(int _serialChannelIndexInt){
 
          serialChannelIndexInt = _serialChannelIndexInt;
 
          if(serialChannelIndexInt == Serial.list().length){ return; }
          try{
 
              serialConnectionObject = new Serial(this, Serial.list()[serialChannelIndexInt], 115200);
              serialConnectionObject.bufferUntil('n');
 
          }
          catch (RuntimeException e){
 
              serialConnectionObject = null;
              println(e);
              println("SERIAL CONNECTION FAILED");
              InitSerialConnectionVoid(serialChannelIndexInt + 1);
 
          }
 
      }

Comments