void m_AISParser_DynamicInformationReceived(int iMMIS, double dLat, double dLot, double dSOG, double dCOG, int iQI, int iHDG, double dROT, int iageofDiffCorr, int iNavi, int time) { try { jsonParse.AisMessage m_ais = new jsonParse.AisMessage(); m_ais.ProtocolNo = "01"; // m_ais.UniqueCode = iMMIS.ToString(); m_ais.MMSI = iMMIS.ToString(); m_ais.Lat = dLat; m_ais.Lon = dLot; m_ais.SOG = dSOG; m_ais.COG = dCOG; m_ais.PositionAccuracy = iQI.ToString(); m_ais.Heading = (double)iHDG; m_ais.ROT = dROT; m_ais.AISVersion = iageofDiffCorr.ToString(); m_ais.NavigationalStatus = iNavi.ToString(); m_ais.CollTime = DateTime.Now; string str = jsonParse.GetMessage(m_ais); str = "~" + str + "~"; //m_tcpClient.SendData(str); udpSendCentrlIP(str); // 更新船舶目标集合 UpdatePosition(iMMIS, dLat, dLot, dSOG, dCOG, iHDG); //定义SQL语句replace string SqlString = "replace into realtimeaisdynamicinfotable set MMSI = " + iMMIS.ToString() + ","; SqlString += "Latitude =" + dLat.ToString() + "," + "Longitude = " + dLot.ToString() + ","; SqlString += "SpeedOverGround = " + dSOG.ToString() + ","; SqlString += "CourseOverGround = " + dCOG.ToString() + ","; SqlString += "QuanlityIndicatior = " + iQI.ToString() + ","; SqlString += "TrueHeading = " + iHDG.ToString() + "," + "RateOfTurn = " + dROT.ToString() + ","; SqlString += "AgeOfDiffCorrection = " + iageofDiffCorr.ToString() + ","; SqlString += "NavigationalStatus = " + iNavi.ToString() + ","; SqlString += "AISTimeStamp = '" + DateTime.Now.ToString() + "';"; // 添加到集合中 if (m_DynamicLocker.WaitOne(1000)) { m_DynamicCommandCollection.Add(SqlString); m_DynamicLocker.ReleaseMutex(); } } catch (System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } }
void m_AISParser_StaticInformationReceived(int iMMIS, int iIMO, string strCallSign, string name, int ShipCargoTyp, int iDimensionA, int iDimensionB, int iDimensionC, int iDimensionD, int iPositionDeviceTyp, string ETA, double dMaxDraught, string destination) { try { // MessageBox.Show("aaaaaaaaaaaaaaa"); // 更新船舶目标 UpdateData(iMMIS, name, strCallSign, destination); string etaMonth = ETA[0].ToString() + ETA[1].ToString(); string etaDay = ETA[2].ToString() + ETA[3].ToString(); string etaHour = ETA[4].ToString() + ETA[5].ToString(); string etaMin = ETA[6].ToString() + ETA[7].ToString(); jsonParse.AisMessage m_ais = new jsonParse.AisMessage(); m_ais.ProtocolNo = "01"; // m_ais.UniqueCode = iMMIS.ToString(); m_ais.MMSI = iMMIS.ToString(); m_ais.IMO = iIMO; m_ais.CallSign = strCallSign; m_ais.Name = name; m_ais.ShipCarGoType = ShipCargoTyp.ToString(); m_ais.DimA = iDimensionA; m_ais.DimB = iDimensionB; m_ais.DimC = iDimensionC; m_ais.DimD = iDimensionD; m_ais.PositionDeviceType = iPositionDeviceTyp.ToString(); //m_ais.EATMinute = (Convert.ToDateTime(ETA)).Minute; //m_ais.ETAMonth = (Convert.ToDateTime(ETA)).Month; //m_ais.ETADay =(Convert.ToDateTime(ETA)).Day; //m_ais.ETAHour = (Convert.ToDateTime(ETA)).Hour; m_ais.MaximumDraught = (int)dMaxDraught; m_ais.Destination = destination; m_ais.ETAMonth = int.Parse(etaMonth); m_ais.ETADay = int.Parse(etaDay); m_ais.ETAHour = int.Parse(etaHour); m_ais.ETAMinute = int.Parse(etaMin); string str = jsonParse.GetMessage(m_ais); str = "~" + str + "~"; //m_tcpClient.SendData(str); udpSendCentrlIP(str); // 生成更新数据库的SQL命令 string SqlString = "replace into realtimeaisstaticinfotable set MMSI = " + iMMIS.ToString() + ","; SqlString += "IMONumber = " + iIMO.ToString() + "," + "CallSign = '" + strCallSign + "',"; SqlString += "ShipName = '" + name + "'," + "ShipCargoType = " + ShipCargoTyp.ToString() + ","; SqlString += "ShipDimensionA = " + iDimensionA.ToString() + "," + "ShipDimensionB = " + iDimensionB.ToString() + ","; SqlString += "ShipDimensionC = " + iDimensionC.ToString() + "," + "ShipDimensionD = " + iDimensionD.ToString() + ","; SqlString += "PositionDeviceType = " + iPositionDeviceTyp.ToString() + "," + "EstimatedTimeOfArrival = '" + ETA + "',"; SqlString += "MaximumDraught = " + dMaxDraught.ToString() + "," + "Destination = '" + destination + "',"; SqlString += "Timestamp = '" + DateTime.Now + "';"; // 添加到集合中 if (m_StaticLocker.WaitOne(1000)) { m_StaticCommandCollection.Add(SqlString); m_StaticLocker.ReleaseMutex(); } // 更新船舶目标 // UpdateData(iMMIS, name, strCallSign, destination); } catch (System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } }