You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MWV is referenced as Apparent wind OR Theoretical wind. I quote
When the reference field is set to T (Theoretical, calculated actual wind), data is provided giving the wind angle in relation to the vessel's bow/centerline and the wind speed as if the vessel was stationary. On a moving ship these data can be calculated by combining the measured relative wind with the vessel's own speed.
The code assumes that 'T' refers to True which is misleading. There is nothing wrong with the way things are written but an implementor might be mislead sending true wind values instead of Theoretical.
The library should probably be modified to change references to NMEA0183Wind_True to NMEA0183Wind_Theoretical
enum tNMEA0183WindReference {
NMEA0183Wind_True=0,
// Apparent Wind (relative to the vessel centerline)
NMEA0183Wind_Apparent=1
};
//*****************************************************************************
// MWV - Wind Speed and Angle
//$IIMWV,120.1,R,9.5,M,A,a*hh
bool NMEA0183ParseMWV_nc(const tNMEA0183Msg &NMEA0183Msg,double &WindAngle, tNMEA0183WindReference &Reference, double &WindSpeed) {
bool result=( NMEA0183Msg.FieldCount()>=4 );
if ( result ) {
WindAngle=atof(NMEA0183Msg.Field(0))*degToRad;
switch ( NMEA0183Msg.Field(1)[0] ) {
case 'T' : Reference=NMEA0183Wind_True; break;
case 'R' :
default : Reference=NMEA0183Wind_Apparent; break;
}
WindSpeed=atof(NMEA0183Msg.Field(2));
switch ( NMEA0183Msg.Field(3)[0] ) {
case 'K' : WindSpeed*=kmhToms; break;
case 'N' : WindSpeed*=knToms; break;
case 'M' :
default : ;
}
}
return result;
}
The text was updated successfully, but these errors were encountered:
I agree that this is very problematic. But the link I sent you is for the NMEA183 spec from NMEA. And it clearly states that "T" means Theoretical and not true. It then goes on to describe what that means.
I first ran into this when looking at output from the YD N2k to NMEA converter. They use the correct definition for "theoretical" as defined by NMEA.
NMEA 0183 Standard For Interfacing Marine Electronic Devices Version 3.01 January 1, 2002
I would say that the entry for this sentence at gpsd.gitlab.io is suspect and should be looked at more closely.
The question is what to do... Although changing True to Theoretical will break many applications the fact is that these applications are probably broken anyway. So... changing NMEA0183Wind_True to NMEA0183Wind_Theoretical will cause a compile error that will cause the developer to revisit this. I suggest putting a note in the include file that describes the issue with possibly a link to the NMEA0183 spec.
http://caxapa.ru/thumbs/214299/NMEA0183_.pdf
MWV is referenced as Apparent wind OR Theoretical wind. I quote
When the reference field is set to T (Theoretical, calculated actual wind), data is provided giving the wind angle in relation to the vessel's bow/centerline and the wind speed as if the vessel was stationary. On a moving ship these data can be calculated by combining the measured relative wind with the vessel's own speed.
The code assumes that 'T' refers to True which is misleading. There is nothing wrong with the way things are written but an implementor might be mislead sending true wind values instead of Theoretical.
The library should probably be modified to change references to NMEA0183Wind_True to NMEA0183Wind_Theoretical
The text was updated successfully, but these errors were encountered: