Hallo zusammen,
es ist ja nicht so, dass überhaupt nicht über die PGNs bekannt ist.
Mit diesen beiden Kommandos wäre es möglich, eine Route abzufahren.
Erst: Mode Auto setzen und dann den Kurs entsprechend der Route ändern
Viele Grüße
Andreas
void RaymarinePilot:

etEvoPilotMode(tN2kMsg &N2kMsg, uint8_t destinationAddress, RaymarinePilotModes mode) {
N2kMsg.SetPGN(126208UL);
N2kMsg.Priority = 3;
N2kMsg.Destination = destinationAddress;
N2kMsg.AddByte(1); // Field 1, 1 = Command Message, 2 = Acknowledge Message...
N2kMsg.AddByte(0x63);
N2kMsg.AddByte(0xff);
N2kMsg.AddByte(0x00);
N2kMsg.AddByte(0xf

;
N2kMsg.AddByte(0x04);
N2kMsg.AddByte(0x01);
N2kMsg.AddByte(0x3b);
N2kMsg.AddByte(0x07);
N2kMsg.AddByte(0x03);
N2kMsg.AddByte(0x04);
N2kMsg.AddByte(0x04);
// 0x00 = standby, 0x40 = auto, 0x0100=vane, 0x0180=track
switch (mode) {
case PILOT_MODE_STANDBY:
N2kMsg.AddByte(0x00);
N2kMsg.AddByte(0x00);
break;
case PILOT_MODE_AUTO:
N2kMsg.AddByte(0x40);
N2kMsg.AddByte(0x00);
break;
case PILOT_MODE_WIND:
N2kMsg.AddByte(0x00);
N2kMsg.AddByte(0x01);
break;
case PILOT_MODE_TRACK:
N2kMsg.AddByte(0x80);
N2kMsg.AddByte(0x01);
break;
}
N2kMsg.AddByte(0x05);
N2kMsg.AddByte(0xff);
N2kMsg.AddByte(0xff);
/*N2kMsg.Add3ByteInt(126208UL); // Field 2, commanded PGN 3 byte, LSB is transmitted first
N2kMsg.AddByte(0xf0 | 0x8 ); // Field 3, 0x8 = Do not change priority and field 4 is nmea reserved
N2kMsg.AddByte(1); // Field 5, 1 field/value pair
N2kMsg.AddByte(4); // Field 6, field 4 to be commanded
N2kMsg.Add4ByteUInt(0); // Field 7, value for first pair =0 for reset distance log.*/
}
void RaymarinePilot:

etEvoPilotCourse(tN2kMsg &N2kMsg, uint8_t destinationAddress, double heading, int change) {
double course = heading + change;
if ((course) >= 360) {
course -= 360;
} else if ((course) < 0) {
course += 360;
}
uint16_t courseRadials10000 = (uint16_t) (DegToRad(course) * 10000); //(newCourse * 174.53);
byte byte0, byte1;
byte0 = courseRadials10000 & 0xff;
byte1 = courseRadials10000 >> 8;
//01,50,ff,00,f8,03,01,3b,07,03,04,06,00,00
N2kMsg.SetPGN(126208UL);
N2kMsg.Priority = 3;
N2kMsg.Destination = destinationAddress;
N2kMsg.AddByte(1); // Field 1, 1 = Command Message, 2 = Acknowledge Message...
N2kMsg.AddByte(0x50);
N2kMsg.AddByte(0xff);
N2kMsg.AddByte(0x00);
N2kMsg.AddByte(0xf

;
N2kMsg.AddByte(0x03);
N2kMsg.AddByte(0x01);
N2kMsg.AddByte(0x3b);
N2kMsg.AddByte(0x07);
N2kMsg.AddByte(0x03);
N2kMsg.AddByte(0x04);
N2kMsg.AddByte(0x06);
N2kMsg.AddByte(byte0);
N2kMsg.AddByte(byte1);
}