Example #1
0
 private static AisData? DecodeAisDataMessage(string dataMessage)
 {
     StringBuilder sb = new StringBuilder();
     foreach (char c in dataMessage)
     {
         int i = c;
         i -= 48;
         if (i > 40)
             i -= 8;
         for (int j = 5; j >= 0; j--)
         {
             if (((i >> j) & 1) == 1)
                 sb.Append("1");
             else
                 sb.Append("0");
         }
     }
     if (sb.Length < 89 + 27)
         return null;
     string bitString = sb.ToString();
     long lat = TreatAsSigned(bitString.Substring(89, 27));
     long lon = TreatAsSigned(bitString.Substring(61, 28));
     AisData aisObj = new AisData();
     aisObj.Latitude = lat / 600000.0;
     aisObj.Longitude = lon / 600000.0;
     aisObj.TransponderID = Convert.ToInt32(bitString.Substring(8, 30), 2);
     aisObj.RateOfTurn = Convert.ToInt32(bitString.Substring(42, 8), 2);
     aisObj.SpeedOverGround = Convert.ToInt32(bitString.Substring(50, 10), 2) / 10;
     aisObj.CourseOverGround = Convert.ToInt32(bitString.Substring(116, 12), 2);
     aisObj.PositionAccuracy = Convert.ToInt32(bitString.Substring(60, 1), 2);
     aisObj.TrueHeading = Convert.ToInt32(bitString.Substring(128, 9), 2);
     return aisObj;
 }
Example #2
0
 public static void DumpAis(AisData aisObj)
 {
     Console.WriteLine("Transponder MMSI: " + aisObj.TransponderID);
     Console.WriteLine("Latitude: " + aisObj.Latitude);
     Console.WriteLine("Longitude: " + aisObj.Longitude);
     Console.WriteLine("SpeedOverGround: " + aisObj.SpeedOverGround);
     Console.WriteLine("CourseOverGround: " + aisObj.CourseOverGround);
     Console.WriteLine("PositionAccuracy: " + aisObj.PositionAccuracy);
     Console.WriteLine("TrueHeading: " + aisObj.TrueHeading);
     Console.WriteLine("RateOfTurn: " + aisObj.RateOfTurn);
 }
Example #3
0
 public String AddOrUpdateAisTransponder(AisData aisData)
 {
     Console.WriteLine("Received transponder data: " + aisData.TransponderID);
     lock (_knownTransponders)
     {
         if (_knownTransponders.ContainsKey(aisData.TransponderID))
             _knownTransponders[aisData.TransponderID] = aisData;
         else
             _knownTransponders.Add(aisData.TransponderID, aisData);
     }
     return "OK";
 }