private bool sendPacket(Packet AHRSPacket)
{
int i;
UInt16 checksum;
if (!connected)
return false;
byte[] packet = new byte[AHRSPacket.DataLength + 120];
// Build packet header
packet[0] = (byte)'s';
packet[1] = (byte)'n';
packet[2] = (byte)'p';
packet[3] = AHRSPacket.PacketType;
packet[4] = AHRSPacket.DataLength;
// Fill data section
for (i = 0; i < AHRSPacket.DataLength; i++)
{
packet[5 + i] = AHRSPacket.Data[i];
}
// Compute Checksum
checksum = ComputeChecksum( packet, 5 + AHRSPacket.DataLength);
// Add checksum to end of packet
packet[5 + AHRSPacket.DataLength] = (byte)(checksum >> 8);
packet[6 + AHRSPacket.DataLength] = (byte)(checksum & 0x0FF);
packet[7+AHRSPacket.DataLength] = (byte)('\n');
//packet[8 + AHRSPacket.DataLength] = (byte)('\r');
// Now write the packet to the serial port
try
{
serialPort.Write(packet, 0,( AHRSPacket.DataLength + 120));
serialPort.BaseStream.Flush();
PacketSentEvent((PName)getTypeIndex(AHRSPacket.PacketType), 0);
System.Threading.Thread.Sleep(1000);
}
catch
{
return false;
}
return true;
}