tkurki / navgauge

Navigation gauges & display in your browser
MIT License
36 stars 6 forks source link

actisense-serial - Limited Message Size on I/O? #5

Closed KadarMarine closed 10 years ago

KadarMarine commented 10 years ago

Hi All,

I'm new here. Recently I stumbled on the actisense-serial.c code. I had been trying to make sense of the stream coming from the NGT-1 for quite some time. Finding the actisense-serial.c code was a real WOW moment for me, and I'd like to extend my thanks and appreciation to the author(s).

So here's my issue... Why are we limited to such small messages size I/O? Aren't NMEA 2000 data buffers suppose to be capable of storing [and transmitting] 1785 Bytes?

Is there a way to send/receive such large messages once we increase our buffer size?

I note several limitations in the message coding: unsigned char *lenPtr; //limits us to a value of 255

*m++ = (unsigned char) prio;
*m++ = (unsigned char) pgn;
*m++ = (unsigned char) (pgn >> 8);
*m++ = (unsigned char) (pgn >> 16);
*m++ = (unsigned char) dst;
//*m++ = (unsigned char) 0;
*m++ = (unsigned char) bytes;              //...as does this

Is the NGT-1 I/O format flexible enough to to change these to two byte values?...

Or is it even necessary to do so? I note that an extended message length could be derived simply by counting the number of bytes between STX and ETX.

I'm just cracking into this, so please forgive the current state of my ignorance:)

Any guidance or suggestions would be appreciated.

Thanks! Kadar

KadarMarine commented 10 years ago

Further thought may be leading me to answer my own question here.

Mulling the problem over, I begin to wonder if the data payload size is indeed limited to a maximum of 255 Bytes (or a maximum of 249 bytes on a send).

In this scenario, I would expect that lager data payloads would be sent through the NGT-1 via multiple packets.

In this case there must be some mechanism to indicate how subsequent packet payloads are to be associated with, and re-assembled (or appended to) the previously received data payloads correctly.

A similar situation exists when receiving NMEA 1.83 "sentences" for AIS data. You get one small chunk of data at a time until the end of the message. The incoming data chunks have to be associated with a particular vessel's incoming transmission queue, and then reassembled prior to processing.

Am I barking up the right tree here? Kadar (Keith)

keesverruijt commented 10 years ago

Guess you found out that you were indeed barking up the wrong tree. Longest message found in product independent PGNs fits comfortably in the current restrictions. Long data such as a firmware update is always manufacturer specific, and uses an extra blocking layer on top of normal N2K fast packets.

Furthermore, changing the NGT messaging format is not up to us. It's what we have to live with.

KadarMarine commented 10 years ago

I'm getting a better handle on it now.

I spoke with Actisense support, and it turns out that they have a different format for "Multi-Packet" transport; but of course they weren't giving up the info.

If I could cause a multi-packet message to be received I would try to break it down; but I don't know how I could do that. My understanding is that the chances of encountering a multi-packet message "in the wild" are pretty slim.

My navigation program (KNav) is only going to support certain PGNs anyway; but I was hoping to get all of the Tx & Rx bases covered before moving ahead with the N2K adaptations.

Thanks! Kadar (Keith)

keesverruijt commented 10 years ago

By the way, you do realize that you are asking on the Navgauge items regarding actisense-serial.c which is part of CANboat? Navgauge, CANboat, Freeboard and several others are all collaborating in Signal K which is intended to minimize the re-inventing-the-wheel syndrome.

Also, note that anything that you derive from these projects must also be open source.

KadarMarine commented 10 years ago

Hello Tkurki,

To be perfectly honest, I was scrambling to find some kind of entry point to break into the NGT-1 I/O format. That's when I stumbled onto your group.

I thank you and your team for the education, and for helping me to get started with my own N2K code.

Though the code I've adapted for the input and output parsing would probably be recognizable; not much else would be. If you'd prefer I'll rewrite that code so that there is no resemblance to the actisense-serial.c code. I'm not sure I see the point - but I'm sure I can do so if you wish. At this point I can't unlearn what I have learned; and again I thank you and your contributors for that.

I was unaware that anything derived from the actisense-serial.c code would have to be open source. I've worked on my navigation program privately for more than 18 years, and it is not open source.

The recognizable part of the actisense-serial.c code that I used amounts to 100 lines of code in a single 8850 line module of a windows based program that handles 64 c++ modules, and about 1.76 gigabytes of data (plus help files). Even if it was open source I doubt anyone could make heads or tails out of it.

Those hundred lines of code are now part of a multi-threaded & multi-buffered serial port I/O system that I have used for at least a decade and a half:)

On your request I will rewrite those 100 lines of code.

I do make the ongoing project "KNav" freely available for anyone to use (and or comment on); but I am keeping the code private for now - is has become a life's work for me.

If you're curious, KNav 2013 can be freely downloaded at: https://kadarmarine-ftp.sharefile.com/d/s93118fc56104f4b9

Please be assured, I never meant to infringe on anyone's work; or to be offensive to anyone. Like most code slingers; for me it's all about the quest for knowledge. Though I have to admit; having KNav on the bridge is like having another bridge officer. It makes my job easier, and safer.

Best regards, Keith Davis

On 6/9/2014 10:44 AM, canboat wrote:

By the way, you do realize that you are asking on the Navgauge items regarding actisense-serial.c https://github.com/canboat/canboat/tree/master/actisense-serial which is part of CANboat https://github.com/canboat/canboat? Navgauge, CANboat, Freeboard http://www.42.co.nz/freeboard/ and several others are all collaborating in Signal K http://signalk.github.io which is intended to minimize the re-inventing-the-wheel syndrome.

Also, note that anything that you derive from these projects must also be open source.

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-45498240.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com

KadarMarine commented 10 years ago

For those that are curious and have downloaded the KNav Installer files:

Please note that the current "in-Line" help system is dated 2007. I have used the "New Features.pdf" throughout the intervening years to document the changes that have occurred in KNav along the way. The "New Features.pdf" file is more representative of the current status and features of this system. The older help files still serve to guide the user in some of the more technical matters.

I have initiated a rewrite of the help file system, but I estimate it will take 6 months to write. I only have a staff of ten code slingers; and they all have to use the same keyboard and mouse:)

Please note that KNav is released once every two years. This version will expire in early 2015. At system start up you will begin receiving a count down of the number of days before expiry well in advance of the expiry date. I will have released a new revision of the KNav program, and you will need the to get the new download URL from me. This restriction is only applicable to "System" mode operation. KNav will never expire while operated in "Simulator" mode. -System mode means that you are utilizing inputs with the Comport Manager.

If you develop an ongoing interest, drop me an email to be placed on my KNav mailing list. You will then be kept informed of future upgrades, updates, download notifications, etc.

KNav is a real time plotter that has a built in autopilot feature: "KPilot", which is capable of accurate survey line tracking operations. Once you get use to KNav you will literally drive lines everywhere you go. It also features an AIS interface and Alert system, ROV tracking, Wind Indicators, and many additional features.

Creating an interface that gives KPilot control of the ship's steering system can be labor intensive; but I'm currently invested in trying to make this interface easier by employing some of the newer technologies available today. Documentation on some of these older interfaces (constructed and in service today) can be found under the folder labeled: "KPilot Info".

If you have any questions about the system, please feel free to contact me.

Regards to all, Keith (Kadar)

Hello Tkurki,

To be perfectly honest, I was scrambling to find some kind of entry point to break into the NGT-1 I/O format. That's when I stumbled onto your group.

I thank you and your team for the education, and for helping me to get started with my own N2K code.

Though the code I've adapted for the input and output parsing would probably be recognizable; not much else would be. If you'd prefer I'll rewrite that code so that there is no resemblance to the actisense-serial.c code. I'm not sure I see the point - but I'm sure I can do so if you wish. At this point I can't unlearn what I have learned; and again I thank you and your contributors for that.

I was unaware that anything derived from the actisense-serial.c code would have to be open source. I've worked on my navigation program privately for more than 18 years, and it is not open source.

The recognizable part of the actisense-serial.c code that I used amounts to 100 lines of code in a single 8850 line module of a windows based program that handles 64 c++ modules, and about 1.76 gigabytes of data (plus help files). Even if it was open source I doubt anyone could make heads or tails out of it.

Those hundred lines of code are now part of a multi-threaded & multi-buffered serial port I/O system that I have used for at least a decade and a half:)

On your request I will rewrite those 100 lines of code.

I do make the ongoing project "KNav" freely available for anyone to use (and or comment on); but I am keeping the code private for now - is has become a life's work for me.

If you're curious, KNav 2013 can be freely downloaded at: https://kadarmarine-ftp.sharefile.com/d/s93118fc56104f4b9

Please be assured, I never meant to infringe on anyone's work; or to be offensive to anyone. Like most code slingers; for me it's all about the quest for knowledge. Though I have to admit; having KNav on the bridge is like having another bridge officer. It makes my job easier, and safer.

Best regards, Keith Davis

On 6/9/2014 10:44 AM, canboat wrote:

By the way, you do realize that you are asking on the Navgauge items regarding actisense-serial.c https://github.com/canboat/canboat/tree/master/actisense-serial which is part of CANboat https://github.com/canboat/canboat? Navgauge, CANboat, Freeboard http://www.42.co.nz/freeboard/ and several others are all collaborating in Signal K http://signalk.github.io which is intended to minimize the re-inventing-the-wheel syndrome.

Also, note that anything that you derive from these projects must also be open source.

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-45498240.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com

keesverruijt commented 10 years ago

Hi Keith,

I'm sorry but "I was not aware" does not cut it. That file you just copied contains a clear reference to the GPL:

...
CANboat is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
....

This means that you cannot use it in non GPL code.

Something tells me you are probably also considering using the PGN definitions that are part of CANboat. Those are also licensed under GPL. Please be aware of that.

If you use my knowledge but choose not to abide with my licensing terms then I consider that theft, sorry. I spent many evenings and nights building the knowledge required to create CANboat. The amount of code is irrelevant IMO.

If you don't want to use my IP you could license the Actisense SDK, which is easy to do, and free, and buy the NMEA 2000 PGN documents (about 700 USD for the relevant set, if I remember correctly) (= pay the NMEA).

I see you created a huge whopping application, but you don't have any online presence. I can't find any website for it?

KadarMarine commented 10 years ago

Hi Tkurki,

I am in complete agreement. I never want to infringe on anyone's work. I thought this was just out there "free to use"; as so many code examples are.

I will remove the actisense-serial.c code from my project. Further; I will send you my resulting code concerning my new parsing algorithms once they are completed. I hope that this will rectify my intrusion onto your turf.

Concerning the Actisense SDK; I'm not sure I would use it even if I could just because it could not easily be incorporated into my existing multi-threaded system. I use Borland C++ Builder, and I have never been able to link with Microsoft flavor dll's or libraries. I almost always have to re-invent the wheel or start from scratch.

Concerning the PGNs that are part of Canboat: I have made the $4,000 dollar purchase through NMEA, which provides me with all of the NMEA 2000 documentation which is inclusive of the 20130118-NMEA-2000-Appendix-A-and-B-Version-2(2).000.pdf file.

Concerning the KNav on line presence: It's gona happen - just not there yet. I still want to include electronic navigation charts {ENC's} into my application. I have about half this code written; but I still need to work on the vender encryption part of things. Currently I only operate with a mailing list to keep users up to date.

Again my apologies for my blundering about with your hard earned code. I will make this right with you. You may even like my parsing algorithms; and I will give permission in advance to use them when I have them completed.

I'll get back to you on this.

Best regards, Keith

On 6/10/2014 2:06 PM, canboat wrote:

Hi Keith,

I'm sorry but "I was not aware" does not cut it. That file you just copied contains a clear reference to the GPL:

... CANboat is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ....

This means that you cannot use it in non GPL code.

Something tells me you are probably also considering using the PGN definitions that are part of CANboat. Those are also licensed under GPL. Please be aware of that.

If you use my knowledge but choose not to abide with my licensing terms then I consider that theft, sorry. I spent many evenings and nights building the knowledge required to create CANboat. The amount of code is irrelevant IMO.

If you don't want to use my IP you could license the Actisense SDK, which is easy to do, and free, and buy the NMEA 2000 PGN documents (about 700 USD for the relevant set, if I remember correctly) (= pay the NMEA).

I see you created a huge whopping application, but you don't have any online presence. I can't find any website for it?

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-45650012.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com

KadarMarine commented 10 years ago

Hi again Tkurki,

I finished my new thread (I/O) code today. It's working well.

Please find attached: C++ N2K - Parse.txt

I hope this squares us. Please feel free to share it if you'd like.

Best regards, Keith (Kadar)

Hi Tkurki,

I am in complete agreement. I never want to infringe on anyone's work. I thought this was just out there "free to use"; as so many code examples are.

I will remove the actisense-serial.c code from my project. Further; I will send you my resulting code concerning my new parsing algorithms once they are completed. I hope that this will rectify my intrusion onto your turf.

Concerning the Actisense SDK; I'm not sure I would use it even if I could just because it could not easily be incorporated into my existing multi-threaded system. I use Borland C++ Builder, and I have never been able to link with Microsoft flavor dll's or libraries. I almost always have to re-invent the wheel or start from scratch.

Concerning the PGNs that are part of Canboat: I have made the $4,000 dollar purchase through NMEA, which provides me with all of the NMEA 2000 documentation which is inclusive of the 20130118-NMEA-2000-Appendix-A-and-B-Version-2(2).000.pdf file.

Concerning the KNav on line presence: It's gona happen - just not there yet. I still want to include electronic navigation charts {ENC's} into my application. I have about half this code written; but I still need to work on the vender encryption part of things. Currently I only operate with a mailing list to keep users up to date.

Again my apologies for my blundering about with your hard earned code. I will make this right with you. You may even like my parsing algorithms; and I will give permission in advance to use them when I have them completed.

I'll get back to you on this.

Best regards, Keith

On 6/10/2014 2:06 PM, canboat wrote:

Hi Keith,

I'm sorry but "I was not aware" does not cut it. That file you just copied contains a clear reference to the GPL:

... CANboat is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ....

This means that you cannot use it in non GPL code.

Something tells me you are probably also considering using the PGN definitions that are part of CANboat. Those are also licensed under GPL. Please be aware of that.

If you use my knowledge but choose not to abide with my licensing terms then I consider that theft, sorry. I spent many evenings and nights building the knowledge required to create CANboat. The amount of code is irrelevant IMO.

If you don't want to use my IP you could license the Actisense SDK, which is easy to do, and free, and buy the NMEA 2000 PGN documents (about 700 USD for the relevant set, if I remember correctly) (= pay the NMEA).

I see you created a huge whopping application, but you don't have any online presence. I can't find any website for it?

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-45650012.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com

/relevant defines and typedefs (.h file)/

define SOF (0x02) // Start of Frame //N2K Defines

define EOF (0x03) // End of Frame

define PCT (0x10) //Get Ready - something is coming "like printf flag %"

//--------------------------------------------------------------------------- typedef struct N2K_FRAME{ DWORD PGN; BYTE Pri; BYTE Dst; BYTE Src; BYTE Len; BYTE CRC; BYTE Data[672]; }N2KFrame; //--------------------------------------------------------------------------- typedef struct NGT_FRAME{ BYTE Len; DWORD PGN; DWORD ID; BYTE CRC; BYTE Data[672]; }NGTFrame; //--------------------------------------------------------------------------- typedef struct _N2KBuff{ //for input (Rx) buffer, and frame queue N2KFrame Frm[24]; }N2KBuff; //--------------------------------------------------------------------------- typedef struct Nkst{ //for output (Tx) queue BYTE str[255]; short lgth; }N2Kstr; //--------------------------------------------------------------------------- DWORD ti; //really just a temporaty counter for studying dropped frames

BYTE bi; //for counter BYTE _zpk,_ppk,_xpk,_fpk,_gpk,_dpk,_strt,_end,*bpk; //Thread [parsing] pointers used //--------------------------------------------------------------------------- //Those are the main things anyhow.

//Here is the main part of the thread code.... //Sorry if it's a little crowded - it's just my style. //--------------------------------------------------------------------------- void _fastcall TRead::Execute(){ while(!Terminated){ if(isN2K){ ReadFile(hComm,zpk,BytesToRead,&dwBytesRead,NULL);//was 50 if(dwBytesRead){ xpk = zpk + dwBytesRead; gpk = zpk; do{ if(ppk=(BYTE)memchr((BYTE_)gpk,PCT,dwBytesRead-1)){ fpk=ppk+1; if(_fpk==SOF){ strt=fpk+1; fpk+=2;//len byte gpk=strt + fpk; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } }else{ if(_fpk==EOF){ if(strt){//if we have a SOF end=ppk-1;//should be the CRC if(strt==0x93){//it is a N2K Msg bpk=(BYTE)&cpa->Frm[Fpos].PGN; dpk=strt+2; cpa->Frm[Fpos].Pri=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk;_bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Dst=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Src=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//get past the if(_dpk++==PCT && _dpk==PCT){dpk++;}//4 Byte Time Stamp if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;} cpa->Frm[Fpos].Len=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//start the data for(bi=0;biFrm[Fpos].Len;bi++){ cpa->Frm[Fpos].Data[bi]=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} } cpa->Frm[Fpos].CRC=end; N2kQ->Push((void)&cpa->Frm[Fpos]);//Queue the Frame for processing if(++Fpos>23){Fpos=0;} Synchronize(DisplayN2K); }else{ if(strt==0xA0){//it is a NGT Msg bi=0; bpk=(BYTE)&NGTFrm.PGN; dpk=strt+2; bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk=(BYTE)&NGTFrm.ID; _bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} while(dpk<end){ NGTFrm.Data[bi++]=_dpk; if(_dpk++==PCT && *dpk==PCT){dpk++;} } NGTFrm.Len=bi; NGTFrm.CRC=_end; Synchronize(DisplayNGT); } } strt=NULL; end=NULL; gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=&cpa->BuffA[0]; goto ENDIT; } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } } } }while(ppk!=NULL); if(strt){ if(xpk>&cpa->BuffA[446]){//then we need to shift the buffer contents memcpy(&cpa->BuffA[0],strt,(xpk-strt)+1); zpk=&cpa->BuffA[xpk-strt]; strt=&cpa->BuffA[0]; }else{ zpk=xpk; } }else{ zpk=&cpa->BuffA[0]; } ENDIT: }//bottom of: if(dwByteRead){

 while(MyQue->Count()){           //this is for the outgoing message queue
        sendN2K=(N2Kstr*)MyQue->Pop();
        WriteFile(hComm,sendN2K->str,sendN2K->lgth,&dwBytesRead,NULL);
     }

  }else{   //using NMEA 1.83
     .............
  }

} } //---------------------------------------------------------------------------

//These are for the thread outputs....

//--------------------------------------------------------------------------- void __fastcall TRead::DisplayGen(void){

KPCon->Edit1->Text=IntToStr(++KPCon->Edit1->Tag);//to count dropped frame events

if(!KPCon->CheckBox1->Checked){ //This is used to temporarily stop the scrolling display

  Form1->Memo1->Lines->Add(Rprt);

  BYTE *plc;
  plc=&cpa->BuffA[0];
  String gen="";

  for(DWORD j=0;j<ti;j++){
     if(*plc==PCT){
        gen=gen+AnsiString().sprintf("[PCT] ");
     }else{
        if(*plc==SOF){
           gen=gen+AnsiString().sprintf("[SOF] ");
        }else{
           if(*plc==EOF){
              gen=gen+AnsiString().sprintf("[EOF] ");
           }else{
              gen=gen+AnsiString().sprintf("%02X ",*plc);
           }
        }
     }
     plc++;
  }

  Form1->Memo1->Lines->Add(gen);

} } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayNGT(void){

if(KPCon->CheckBox1->Checked){return;}//This is used to temporarily stop the scrolling display

String gen=IntToStr(NGTFrm.PGN)+", "+ IntToStr(NGTFrm.ID)+", "+ IntToStr(NGTFrm.Len)+", "; for(BYTE j=0;j<NGTFrm.Len;j++){ gen=gen+AnsiString().sprintf("%02X ",NGTFrm.Data[j]);//IntToHex(int value, 2); } gen=gen+", "+IntToStr(NGTFrm.CRC); Form1->Memo1->Lines->Add(gen); } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayN2K(){

N2KFrame *Frm; while(N2kQ->Count()){

  Frm=(N2KFrame*)N2kQ->Pop();   //read from the output queue

  if(!KPCon->CheckBox1->Checked){//temporarily halt the scrolling display

     String gen=IntToStr(Frm->Pri)+", "+
                IntToStr(Frm->PGN)+", "+
                IntToStr(Frm->Src)+", "+
                IntToStr(Frm->Dst)+", "+
                IntToStr(Frm->Len)+", ";
     for(BYTE j=0;j<Frm->Len;j++){
        gen=gen+AnsiString().sprintf("%02X ",Frm->Data[j]);//IntToHex(int value, 2);
     }
     gen=gen+", "+IntToStr(Frm->CRC);
     Form1->Memo1->Lines->Add(gen);
  }

} } //---------------------------------------------------------------------------

//These are the Main Form fuctions for creating output frames //--------------------------------------------------------------------------- void __fastcall TForm1::Send_ISO_Request(int indx, BYTE pri, DWORD pgn, BYTE dst){

N2KFrame frm; BYTE bt; bt=(BYTE)&pgn;

frm.Pri=pri; frm.PGN=59904;//ISO Request for a particular PGN frm.Dst=dst; frm.Len=3; frm.Data[0]=_bt++; frm.Data[1]=_bt++; frm.Data[2]=*bt;

SendN2K(indx, &frm);

} //--------------------------------------------------------------------------- void __fastcall TForm1::SendN2K(int indx, N2KFrame *N2kFrm){

if(ReadCom[indx]){ BYTE _bt,_bpk,dpk,j,xrc=148; bpk=(BYTE)&N2kFrm->PGN; dpk=&ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->str[0]; bt=dpk; _dpk++=PCT; dpk++=SOF; dpk++=148; dpk++=(N2kFrm->Len+6); dpk++=N2kFrm->Pri;xrc+=N2kFrm->Pri; dpk++=_bpk;xrc+=_bpk++;//get the PGN dpk++=_bpk;xrc+=_bpk++; dpk++=_bpk;xrc+=_bpk; dpk++=N2kFrm->Dst;xrc+=N2kFrm->Dst; dpk++=N2kFrm->Len;xrc+=N2kFrm->Len; for(j=0;jLen;j++){ dpk++=N2kFrm->Data[j]; xrc+=N2kFrm->Data[j]; if(N2kFrm->Data[j]==PCT){_dpk++=PCT;} } xrc+=(N2kFrm->Len+6); dpk++=(256-xrc); dpk++=PCT; *dpk++=EOF;

  ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->lgth=(dpk-bt);
  ReadCom[indx]->MyQue->Push((void*)ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]);
  if(++ReadCom[indx]->Ncnt>11){ReadCom[indx]->Ncnt=0;}

} } //---------------------------------------------------------------------------

Some sample output....

Note: I have two NGT-1s plugged in from my N2K Bus, so many of the outputs appear to be duplicated. Good for load testing:)

NGT Output...

918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 NGT PGN, NGT Serial# Len Data.... CRC

N2K Output...

2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 Pri PGN Src Dest Len Data... CRC

Responses to ISO Request for PGN 60928 = Request for ISO Address Claim...

7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6

A dumped buffer (error) will be displayed like this:

Got Dropped Frame!!!! [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] E4 08 13 08 *08 CB BD B0 11 9D 80 88 CE 92 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 00 [SOF] E7 08 13 08 08 E8 FC 11 DD 04 00 FF FF 76 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] 48 09 13 08 08 CB BD B0 11 9D 80 88 CE 2D [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] 4B 09 13 08 08 E9 FC 11 DD 04 00 FF FF [PCT] [PCT] [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 FF [SOF] AC 09 13 08 08 CB BD B0 11 9D 80 88 CE C9 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] AF 09 13 08 08 EA FC 11 DD 04 00 FF FF AB [PCT] [EOF]

You may occaisionally get one or two of those at start up:)

Output.... //--------------------------------------------------------------------------- 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 917777, 147479, 6, 00 00 00 00 02 00 , 215 918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 918000, 147479, 7, 00 00 00 00 A2 08 00 , 79 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 28 2, 129026, 2, 255, 8, 6B FC E3 2A 03 00 FF FF , 144 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 183 2, 129026, 2, 255, 8, 6C FC E3 2A 03 00 FF FF , 42 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 83 2, 129026, 2, 255, 8, 6D FC E3 2A 03 00 FF FF , 197 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 236 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 96 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 135 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 35 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 149 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 190 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 47 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 188 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 227 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 87 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 126 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 241 917777, 147482, 6, 00 00 00 00 02 00 , 212 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 169 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 33 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 169 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 179 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 81 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 193 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 68 918000, 147482, 7, 00 00 00 00 A2 08 00 , 76 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 26 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 140 7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 126 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 6 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 16 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 161 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 174 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 30 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 239 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 93 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 179 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 138 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 01 00 00 00 04 59 02 01 00 01 04 01 00 00 00 , 116 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 248 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 38 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 230 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 147 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 85 7, 59904, 1, 255, 3, 00 EE 00 , 233 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 130 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 207 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 238 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 08 4D 02 01 00 00 00 02 00 00 00 , 129 6, 60928, 0, 255, 8, 17 40 22 22 00 82 32 C0 , 24 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 193 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 44 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 45 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 29 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 137 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 92 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 35 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 81 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 246 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 190 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 99 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 237 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 144 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 89 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 253 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 137 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 44 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 244 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 152 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 36 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 199 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 141 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 49 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 235 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 72 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 172 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 8 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 251 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 87 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 92 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 196 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 184 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 32 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 242 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 150 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 84 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 248 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 95 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 186 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 147 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 249 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 240 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 85 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 01 00 00 00 00 00 07 19 02 01 00 00 00 02 00 00 00 , 180 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 47 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 148 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 140 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 240 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 0F 02 01 00 00 00 02 00 00 00 , 194 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 202 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 39 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 138 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 102 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 195 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 36 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 253 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 98 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 89 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 190 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 152 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 245 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 90 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 145 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 245 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 52 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 208 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 44 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 143 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 185 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 44 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 21 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 137 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 33 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 196 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 101 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 197 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 194 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 34 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 147 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 54 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 3 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 95 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 158 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 251 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 90 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 1F 02 01 00 00 00 02 00 00 00 , 177 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 58 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 151 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 245 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 14 02 01 00 00 00 02 00 00 00 , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 214 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 50 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 50 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 142 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 113 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 204 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 206 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 7 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 104 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 99 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 196 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 162 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 2 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 255 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 95 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 62 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 157 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 155 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 218 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 54 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 147 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 132 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 47 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 225 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 140 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 148 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 109 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 201 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 241 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 202 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 38 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 84 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 177 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 11 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 102 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 104 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 194 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 166 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 0 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 2 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 93 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 0D 02 01 00 00 00 02 00 00 00 , 195 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 66 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 155 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 158 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 248 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 2F 02 01 00 00 00 02 00 00 00 , 164 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 222 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 54 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 57 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 146 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 121 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 208 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 213 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 18 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 107 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 110 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 200 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 173 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 4 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 9 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 97 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 73 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 158 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 165 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 250 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 223 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 51 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 126 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 227 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 59 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 142 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 217 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 62 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 204 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 168 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 250 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 39 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 4 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 86 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 194 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 29 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 69 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 152 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 162 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 244 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 225 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 51 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 61 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 142 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 168 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 124 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 205 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 217 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 24 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 103 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 1B 02 01 00 00 00 02 00 00 00 , 182 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 117 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 195 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 179 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 1 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 16 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 93 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 79 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 157 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 172 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 249 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 230 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 66 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 147 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 129 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 222 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 46 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 29 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 108 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 122 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 201 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 78 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 233 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 169 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 69 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 188 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 178 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 255 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 24 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 14 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 92 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 19 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 111 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 79 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 155 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 172 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 248 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 235 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 54 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 71 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 146 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 31 02 01 00 00 00 02 00 00 00 , 157 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 134 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 208 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 227 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 45 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 34 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 107 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 127 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 200 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 171 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 190 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 7 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 26 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 89 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 161 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 182 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 254 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 238 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 60 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 74 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 137 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 214 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 230 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 37 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 114 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 130 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 207 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 24 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 236 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 116 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 72 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 15 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 185 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 3 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 107 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 21 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 95 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 100 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 192 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 86 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 179 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 252 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 159 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 57 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 78 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 149 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 222 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 246 7, 59904, 0, 255, 3, 00 EE 00 , 108 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 82 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 20 02 01 00 00 00 02 00 00 00 , 174 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 141 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 212 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 233 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 49 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 133 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 202 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 41 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 109 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 07 15 02 01 00 00 00 02 00 00 00 , 186 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 197 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 32 2, 129026, 2, 255, 8, BA FC E3 2A 07 00 FF FF , 98 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 96 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 161 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 188 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 254 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 251 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 60 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 87 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 153 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 150 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 214 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 51 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 50 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 142 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 207 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 114 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 227 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 238 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 64 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 75 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 66 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 197 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 3 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 33 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 95 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 160 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 97 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 190 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 159 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 90 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 151 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 253 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 59 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 13 02 01 00 00 00 02 00 00 00 , 187 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 245 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 49 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 153 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 213 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 145 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 204 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 34 02 01 00 00 00 02 00 00 00 , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 52 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 112 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 44 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 10 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 101 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 200 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 0 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 107 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 164 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 6 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 63 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 99 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 155 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 162 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 254 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 54 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 219 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 154 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 61 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 117 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 14 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 205 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 177 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 113 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 20 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 112 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 47 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 100 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 212 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 9 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 1 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 93 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 205 2, 129026, 2, 255, 8, CC FC E3 2A 04 00 FF FF , 1

KadarMarine commented 10 years ago

I noticed that one of the buffers in the typedefs when missing from the text that file I sent.

You can cut and paste this in...

typedef struct _N2KBuff{ BYTE BuffA[672]; //<<<this main input buffer when missing N2KFrame Frm[24]; //those darn buffers always straying away!:) }N2KBuff;

KD

Hi again Tkurki,

I finished my new thread (I/O) code today. It's working well.

Please find attached: C++ N2K - Parse.txt

I hope this squares us. Please feel free to share it if you'd like.

Best regards, Keith (Kadar)

Hi Tkurki,

I am in complete agreement. I never want to infringe on anyone's work. I thought this was just out there "free to use"; as so many code examples are.

I will remove the actisense-serial.c code from my project. Further; I will send you my resulting code concerning my new parsing algorithms once they are completed. I hope that this will rectify my intrusion onto your turf.

Concerning the Actisense SDK; I'm not sure I would use it even if I could just because it could not easily be incorporated into my existing multi-threaded system. I use Borland C++ Builder, and I have never been able to link with Microsoft flavor dll's or libraries. I almost always have to re-invent the wheel or start from scratch.

Concerning the PGNs that are part of Canboat: I have made the $4,000 dollar purchase through NMEA, which provides me with all of the NMEA 2000 documentation which is inclusive of the 20130118-NMEA-2000-Appendix-A-and-B-Version-2(2).000.pdf file.

Concerning the KNav on line presence: It's gona happen - just not there yet. I still want to include electronic navigation charts {ENC's} into my application. I have about half this code written; but I still need to work on the vender encryption part of things. Currently I only operate with a mailing list to keep users up to date.

Again my apologies for my blundering about with your hard earned code. I will make this right with you. You may even like my parsing algorithms; and I will give permission in advance to use them when I have them completed.Â

I'll get back to you on this.

Best regards, Keith

On 6/10/2014 2:06 PM, canboat wrote:

Hi Keith,

I'm sorry but "I was not aware" does not cut it. That file you just copied contains a clear reference to the GPL:

... CANboat is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ....

This means that you cannot use it in non GPL code.

Something tells me you are probably also considering using the PGN definitions that are part of CANboat. Those are also licensed under GPL. Please be aware of that.

If you use my knowledge but choose not to abide with my licensing terms then I consider that theft, sorry. I spent many evenings and nights building the knowledge required to create CANboat. The amount of code is irrelevant IMO.

If you don't want to use my IP you could license the Actisense SDK, which is easy to do, and free, and buy the NMEA 2000 PGN documents (about 700 USD for the relevant set, if I remember correctly) (= pay the NMEA).

I see you created a huge whopping application, but you don't have any online presence. I can't find any website for it?

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-45650012.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com

/relevant defines and typedefs (.h file)/

define SOF (0x02) // Start of Frame //N2K Defines

define EOF (0x03) // End of Frame

define PCT (0x10) //Get Ready - something is coming "like printf flag %"

//--------------------------------------------------------------------------- typedef struct N2K_FRAME{ DWORD PGN; BYTE Pri; BYTE Dst; BYTE Src; BYTE Len; BYTE CRC; BYTE Data[672]; }N2KFrame; //--------------------------------------------------------------------------- typedef struct NGT_FRAME{ BYTE Len; DWORD PGN; DWORD ID; BYTE CRC; BYTE Data[672]; }NGTFrame; //--------------------------------------------------------------------------- typedef struct _N2KBuff{ //for input (Rx) buffer, and frame queue N2KFrame Frm[24]; }N2KBuff; //--------------------------------------------------------------------------- typedef struct Nkst{ //for output (Tx) queue BYTE str[255]; short lgth; }N2Kstr; //--------------------------------------------------------------------------- DWORD ti; //really just a temporaty counter for studying dropped frames

BYTE bi; //for counter BYTE _zpk,_ppk,_xpk,_fpk,_gpk,_dpk,_strt,_end,*bpk; //Thread [parsing] pointers used //--------------------------------------------------------------------------- //Those are the main things anyhow.

//Here is the main part of the thread code.... //Sorry if it's a little crowded - it's just my style. //--------------------------------------------------------------------------- void _fastcall TRead::Execute(){ while(!Terminated){ if(isN2K){ ReadFile(hComm,zpk,BytesToRead,&dwBytesRead,NULL);//was 50 if(dwBytesRead){ xpk = zpk + dwBytesRead; gpk = zpk; do{ if(ppk=(BYTE)memchr((BYTE_)gpk,PCT,dwBytesRead-1)){ fpk=ppk+1; if(_fpk==SOF){ strt=fpk+1; fpk+=2;//len byte gpk=strt + fpk; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } }else{ if(_fpk==EOF){ if(strt){//if we have a SOF end=ppk-1;//should be the CRC if(strt==0x93){//it is a N2K Msg bpk=(BYTE)&cpa->Frm[Fpos].PGN; dpk=strt+2; cpa->Frm[Fpos].Pri=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk;_bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Dst=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Src=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//get past the if(_dpk++==PCT && _dpk==PCT){dpk++;}//4 Byte Time Stamp if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;} cpa->Frm[Fpos].Len=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//start the data for(bi=0;biFrm[Fpos].Len;bi++){ cpa->Frm[Fpos].Data[bi]=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} } cpa->Frm[Fpos].CRC=end; N2kQ->Push((void)&cpa->Frm[Fpos]);//Queue the Frame for processing if(++Fpos>23){Fpos=0;} Synchronize(DisplayN2K); }else{ if(strt==0xA0){//it is a NGT Msg bi=0; bpk=(BYTE)&NGTFrm.PGN; dpk=strt+2; bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk=(BYTE)&NGTFrm.ID; _bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} while(dpk<end){ NGTFrm.Data[bi++]=_dpk; if(_dpk++==PCT && *dpk==PCT){dpk++;} } NGTFrm.Len=bi; NGTFrm.CRC=_end; Synchronize(DisplayNGT); } } strt=NULL; end=NULL; gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=&cpa->BuffA[0]; goto ENDIT; } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } } } }while(ppk!=NULL); if(strt){ if(xpk>&cpa->BuffA[446]){//then we need to shift the buffer contents memcpy(&cpa->BuffA[0],strt,(xpk-strt)+1); zpk=&cpa->BuffA[xpk-strt]; strt=&cpa->BuffA[0]; }else{ zpk=xpk; } }else{ zpk=&cpa->BuffA[0]; } ENDIT: }//bottom of: if(dwByteRead){

 while(MyQue->Count()){           //this is for the outgoing message queue
        sendN2K=(N2Kstr*)MyQue->Pop();
        WriteFile(hComm,sendN2K->str,sendN2K->lgth,&dwBytesRead,NULL);
     }

  }else{   //using NMEA 1.83
     .............
  }

} } //---------------------------------------------------------------------------

//These are for the thread outputs....

//--------------------------------------------------------------------------- void __fastcall TRead::DisplayGen(void){

KPCon->Edit1->Text=IntToStr(++KPCon->Edit1->Tag);//to count dropped frame events

if(!KPCon->CheckBox1->Checked){ //This is used to temporarily stop the scrolling display

  Form1->Memo1->Lines->Add(Rprt);

  BYTE *plc;
  plc=&cpa->BuffA[0];
  String gen="";

  for(DWORD j=0;j<ti;j++){
     if(*plc==PCT){
        gen=gen+AnsiString().sprintf("[PCT] ");
     }else{
        if(*plc==SOF){
           gen=gen+AnsiString().sprintf("[SOF] ");
        }else{
           if(*plc==EOF){
              gen=gen+AnsiString().sprintf("[EOF] ");
           }else{
              gen=gen+AnsiString().sprintf("%02X ",*plc);
           }
        }
     }
     plc++;
  }

  Form1->Memo1->Lines->Add(gen);

} } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayNGT(void){

if(KPCon->CheckBox1->Checked){return;}//This is used to temporarily stop the scrolling display

String gen=IntToStr(NGTFrm.PGN)+", "+ IntToStr(NGTFrm.ID)+", "+ IntToStr(NGTFrm.Len)+", "; for(BYTE j=0;j<NGTFrm.Len;j++){ gen=gen+AnsiString().sprintf("%02X ",NGTFrm.Data[j]);//IntToHex(int value, 2); } gen=gen+", "+IntToStr(NGTFrm.CRC); Form1->Memo1->Lines->Add(gen); } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayN2K(){

N2KFrame *Frm; while(N2kQ->Count()){

  Frm=(N2KFrame*)N2kQ->Pop();   //read from the output queue

  if(!KPCon->CheckBox1->Checked){//temporarily halt the scrolling display

     String gen=IntToStr(Frm->Pri)+", "+
                IntToStr(Frm->PGN)+", "+
                IntToStr(Frm->Src)+", "+
                IntToStr(Frm->Dst)+", "+
                IntToStr(Frm->Len)+", ";
     for(BYTE j=0;j<Frm->Len;j++){
        gen=gen+AnsiString().sprintf("%02X ",Frm->Data[j]);//IntToHex(int value, 2);
     }
     gen=gen+", "+IntToStr(Frm->CRC);
     Form1->Memo1->Lines->Add(gen);
  }

} } //---------------------------------------------------------------------------

//These are the Main Form fuctions for creating output frames //--------------------------------------------------------------------------- void __fastcall TForm1::Send_ISO_Request(int indx, BYTE pri, DWORD pgn, BYTE dst){

N2KFrame frm; BYTE bt; bt=(BYTE)&pgn;

frm.Pri=pri; frm.PGN=59904;//ISO Request for a particular PGN frm.Dst=dst; frm.Len=3; frm.Data[0]=_bt++; frm.Data[1]=_bt++; frm.Data[2]=*bt;

SendN2K(indx, &frm);

} //--------------------------------------------------------------------------- void __fastcall TForm1::SendN2K(int indx, N2KFrame *N2kFrm){

if(ReadCom[indx]){ BYTE _bt,_bpk,dpk,j,xrc=148; bpk=(BYTE)&N2kFrm->PGN; dpk=&ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->str[0]; bt=dpk; _dpk++=PCT; dpk++=SOF; dpk++=148; dpk++=(N2kFrm->Len+6); dpk++=N2kFrm->Pri;xrc+=N2kFrm->Pri; dpk++=_bpk;xrc+=_bpk++;//get the PGN dpk++=_bpk;xrc+=_bpk++; dpk++=_bpk;xrc+=_bpk; dpk++=N2kFrm->Dst;xrc+=N2kFrm->Dst; dpk++=N2kFrm->Len;xrc+=N2kFrm->Len; for(j=0;jLen;j++){ dpk++=N2kFrm->Data[j]; xrc+=N2kFrm->Data[j]; if(N2kFrm->Data[j]==PCT){_dpk++=PCT;} } xrc+=(N2kFrm->Len+6); dpk++=(256-xrc); dpk++=PCT; *dpk++=EOF;

  ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->lgth=(dpk-bt);
  ReadCom[indx]->MyQue->Push((void*)ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]);
  if(++ReadCom[indx]->Ncnt>11){ReadCom[indx]->Ncnt=0;}

} } //---------------------------------------------------------------------------

Some sample output....

Note: I have two NGT-1s plugged in from my N2K Bus, so many of the outputs appear to be duplicated. Good for load testing:)

NGT Output...

918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 NGT PGN, NGT Serial# Len Data.... CRC

N2K Output...

2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 Pri PGN Src Dest Len Data... CRC

Responses to ISO Request for PGN 60928 = Request for ISO Address Claim...

7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6

A dumped buffer (error) will be displayed like this:

Got Dropped Frame!!!! [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] E4 08 13 08 *08 CB BD B0 11 9D 80 88 CE 92 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 00 [SOF] E7 08 13 08 08 E8 FC 11 DD 04 00 FF FF 76 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] 48 09 13 08 08 CB BD B0 11 9D 80 88 CE 2D [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] 4B 09 13 08 08 E9 FC 11 DD 04 00 FF FF [PCT] [PCT] [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 FF [SOF] AC 09 13 08 08 CB BD B0 11 9D 80 88 CE C9 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] AF 09 13 08 08 EA FC 11 DD 04 00 FF FF AB [PCT] [EOF]

You may occaisionally get one or two of those at start up:)

Output.... //--------------------------------------------------------------------------- 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 917777, 147479, 6, 00 00 00 00 02 00 , 215 918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 918000, 147479, 7, 00 00 00 00 A2 08 00 , 79 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 28 2, 129026, 2, 255, 8, 6B FC E3 2A 03 00 FF FF , 144 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 183 2, 129026, 2, 255, 8, 6C FC E3 2A 03 00 FF FF , 42 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 83 2, 129026, 2, 255, 8, 6D FC E3 2A 03 00 FF FF , 197 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 236 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 96 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 135 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 35 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 149 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 190 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 47 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 188 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 227 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 87 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 126 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 241 917777, 147482, 6, 00 00 00 00 02 00 , 212 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 169 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 33 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 169 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 179 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 81 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 193 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 68 918000, 147482, 7, 00 00 00 00 A2 08 00 , 76 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 26 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 140 7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 126 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 6 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 16 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 161 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 174 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 30 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 239 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 93 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 179 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 138 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 01 00 00 00 04 59 02 01 00 01 04 01 00 00 00 , 116 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 248 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 38 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 230 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 147 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 85 7, 59904, 1, 255, 3, 00 EE 00 , 233 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 130 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 207 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 238 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 08 4D 02 01 00 00 00 02 00 00 00 , 129 6, 60928, 0, 255, 8, 17 40 22 22 00 82 32 C0 , 24 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 193 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 44 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 45 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 29 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 137 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 92 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 35 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 81 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 246 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 190 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 99 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 237 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 144 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 89 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 253 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 137 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 44 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 244 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 152 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 36 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 199 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 141 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 49 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 235 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 72 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 172 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 8 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 251 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 87 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 92 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 196 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 184 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 32 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 242 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 150 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 84 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 248 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 95 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 186 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 147 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 249 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 240 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 85 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 01 00 00 00 00 00 07 19 02 01 00 00 00 02 00 00 00 , 180 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 47 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 148 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 140 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 240 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 0F 02 01 00 00 00 02 00 00 00 , 194 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 202 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 39 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 138 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 102 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 195 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 36 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 253 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 98 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 89 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 190 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 152 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 245 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 90 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 145 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 245 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 52 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 208 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 44 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 143 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 185 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 44 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 21 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 137 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 33 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 196 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 101 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 197 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 194 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 34 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 147 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 54 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 3 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 95 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 158 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 251 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 90 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 1F 02 01 00 00 00 02 00 00 00 , 177 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 58 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 151 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 245 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 14 02 01 00 00 00 02 00 00 00 , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 214 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 50 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 50 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 142 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 113 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 204 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 206 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 7 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 104 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 99 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 196 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 162 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 2 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 255 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 95 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 62 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 157 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 155 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 218 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 54 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 147 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 132 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 47 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 225 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 140 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 148 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 109 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 201 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 241 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 202 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 38 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 84 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 177 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 11 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 102 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 104 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 194 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 166 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 0 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 2 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 93 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 0D 02 01 00 00 00 02 00 00 00 , 195 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 66 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 155 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 158 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 248 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 2F 02 01 00 00 00 02 00 00 00 , 164 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 222 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 54 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 57 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 146 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 121 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 208 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 213 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 18 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 107 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 110 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 200 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 173 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 4 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 9 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 97 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 73 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 158 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 165 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 250 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 223 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 51 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 126 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 227 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 59 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 142 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 217 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 62 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 204 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 168 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 250 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 39 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 4 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 86 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 194 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 29 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 69 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 152 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 162 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 244 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 225 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 51 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 61 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 142 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 168 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 124 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 205 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 217 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 24 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 103 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 1B 02 01 00 00 00 02 00 00 00 , 182 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 117 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 195 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 179 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 1 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 16 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 93 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 79 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 157 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 172 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 249 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 230 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 66 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 147 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 129 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 222 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 46 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 29 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 108 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 122 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 201 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 78 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 233 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 169 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 69 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 188 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 178 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 255 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 24 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 14 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 92 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 19 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 111 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 79 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 155 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 172 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 248 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 235 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 54 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 71 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 146 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 31 02 01 00 00 00 02 00 00 00 , 157 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 134 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 208 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 227 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 45 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 34 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 107 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 127 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 200 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 171 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 190 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 7 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 26 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 89 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 161 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 182 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 254 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 238 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 60 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 74 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 137 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 214 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 230 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 37 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 114 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 130 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 207 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 24 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 236 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 116 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 72 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 15 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 185 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 3 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 107 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 21 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 95 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 100 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 192 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 86 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 179 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 252 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 159 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 57 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 78 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 149 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 222 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 246 7, 59904, 0, 255, 3, 00 EE 00 , 108 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 82 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 20 02 01 00 00 00 02 00 00 00 , 174 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 141 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 212 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 233 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 49 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 133 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 202 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 41 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 109 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 07 15 02 01 00 00 00 02 00 00 00 , 186 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 197 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 32 2, 129026, 2, 255, 8, BA FC E3 2A 07 00 FF FF , 98 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 96 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 161 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 188 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 254 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 251 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 60 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 87 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 153 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 150 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 214 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 51 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 50 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 142 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 207 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 114 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 227 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 238 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 64 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 75 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 66 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 197 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 3 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 33 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 95 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 160 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 97 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 190 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 159 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 90 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 151 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 253 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 59 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 13 02 01 00 00 00 02 00 00 00 , 187 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 245 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 49 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 153 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 213 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 145 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 204 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 34 02 01 00 00 00 02 00 00 00 , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 52 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 112 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 44 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 10 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 101 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 200 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 0 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 107 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 164 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 6 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 63 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 99 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 155 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 162 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 254 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 54 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 219 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 154 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 61 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 117 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 14 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 205 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 177 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 113 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 20 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 112 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 47 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 100 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 212 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 9 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 1 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 93 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 205 2, 129026, 2, 255, 8, CC FC E3 2A 04 00 FF FF , 1

KadarMarine commented 10 years ago

Hi again,

After kicking back with a few Coronas and mulling things over I realized another booboo.

I probably should have mulled it over for a day or so before pushing it out the door:)

From within the main thread code, find the following function call (it only happens once): Look for: Synchronize(DisplayN2K); and move it out of the do/while loop....

                           if(*dpk++==PCT && 

_dpk==PCT){dpk++;}//start the data for(bi=0;biFrm[Fpos].Len;bi++){ cpa->Frm[Fpos].Data[bi]=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} } cpa->Frm[Fpos].CRC=end; N2kQ->Push((void)&cpa->Frm[Fpos]);//Queue the Frame for processing if(++Fpos>23){Fpos=0;} //Synchronize(DisplayN2K); <<<---Does not make use of the FIFO buffers }else{ Move it out of the do/while loop if(strt==0xA0){//it is a NGT Msg bi=0; bpk=(BYTE)&NGTFrm.PGN; dpk=strt+2; bpk++ = dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}

Move it down to outside of the do/while loop to here...

         }
         ENDIT:
         Synchronize(DisplayN2K); //<<<<----Moved here, more 

efficient use of FIFO Buffers }//bottom of: if(dwByteRead)

  while(MyQue->Count()){           //this is for the outgoing 

message queue sendN2K=(N2Kstr*)MyQue->Pop(); WriteFile(hComm,sendN2K->str,sendN2K->lgth,&dwBytesRead,NULL); }

   }else{   //using NMEA 1.83
      .............
   }

I've revised the previous text file. Please find attached: C++ N2K - Parse - Rev-01.txt

Fixed that missing buffer too:)

Cheers, Keith

I noticed that one of the buffers in the typedefs when missing from the text that file I sent.

You can cut and paste this in...

typedef struct _N2KBuff{ BYTE BuffA[672]; //<<<this main input buffer when missing N2KFrame Frm[24]; //those darn buffers always straying away!:) }N2KBuff;

KD

Hi again Tkurki,

I finished my new thread (I/O) code today. It's working well.

Please find attached: C++ N2K - Parse.txt

I hope this squares us. Please feel free to share it if you'd like.

Best regards, Keith (Kadar)

Hi Tkurki,

I am in complete agreement. I never want to infringe on anyone's work. I thought this was just out there "free to use"; as so many code examples are.

I will remove the actisense-serial.c code from my project. Further; I will send you my resulting code concerning my new parsing algorithms once they are completed. I hope that this will rectify my intrusion onto your turf.

Concerning the Actisense SDK; I'm not sure I would use it even if I could just because it could not easily be incorporated into my existing multi-threaded system. I use Borland C++ Builder, and I have never been able to link with Microsoft flavor dll's or libraries. I almost always have to re-invent the wheel or start from scratch.

Concerning the PGNs that are part of Canboat: I have made the $4,000 dollar purchase through NMEA, which provides me with all of the NMEA 2000 documentation which is inclusive of the 20130118-NMEA-2000-Appendix-A-and-B-Version-2(2).000.pdf file.

Concerning the KNav on line presence: It's gona happen - just not there yet. I still want to include electronic navigation charts {ENC's} into my application. I have about half this code written; but I still need to work on the vender encryption part of things. Currently I only operate with a mailing list to keep users up to date.

Again my apologies for my blundering about with your hard earned code. I will make this right with you. You may even like my parsing algorithms; and I will give permission in advance to use them when I have them completed.Â

I'll get back to you on this.

Best regards, Keith

On 6/10/2014 2:06 PM, canboat wrote:

Hi Keith,

I'm sorry but "I was not aware" does not cut it. That file you just copied contains a clear reference to the GPL:

... CANboat is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ....

This means that you cannot use it in non GPL code.

Something tells me you are probably also considering using the PGN definitions that are part of CANboat. Those are also licensed under GPL. Please be aware of that.

If you use my knowledge but choose not to abide with my licensing terms then I consider that theft, sorry. I spent many evenings and nights building the knowledge required to create CANboat. The amount of code is irrelevant IMO.

If you don't want to use my IP you could license the Actisense SDK, which is easy to do, and free, and buy the NMEA 2000 PGN documents (about 700 USD for the relevant set, if I remember correctly) (= pay the NMEA).

I see you created a huge whopping application, but you don't have any online presence. I can't find any website for it?

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-45650012.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com

/relevant defines and typedefs (.h file)/

define SOF (0x02) // Start of Frame //N2K Defines

define EOF (0x03) // End of Frame

define PCT (0x10) //Get Ready - something is coming "like printf flag %"

//--------------------------------------------------------------------------- typedef struct N2K_FRAME{ DWORD PGN; BYTE Pri; BYTE Dst; BYTE Src; BYTE Len; BYTE CRC; BYTE Data[672]; }N2KFrame; //--------------------------------------------------------------------------- typedef struct NGT_FRAME{ BYTE Len; DWORD PGN; DWORD ID; BYTE CRC; BYTE Data[672]; }NGTFrame; //--------------------------------------------------------------------------- typedef struct _N2KBuff{ //for input (Rx) buffer, and frame queue BYTE BuffA[672]; N2KFrame Frm[24]; }N2KBuff; //--------------------------------------------------------------------------- typedef struct Nkst{ //for output (Tx) queue BYTE str[255]; short lgth; }N2Kstr; //--------------------------------------------------------------------------- DWORD ti; //really just a temporaty counter for studying dropped frames

BYTE bi; //for counter BYTE _zpk,_ppk,_xpk,_fpk,_gpk,_dpk,_strt,_end,*bpk; //Thread [parsing] pointers used //--------------------------------------------------------------------------- //Those are the main things anyhow.

//Here is the main part of the thread code.... //Sorry if it's a little crowded - it's just my style. //--------------------------------------------------------------------------- void _fastcall TRead::Execute(){ while(!Terminated){ if(isN2K){ ReadFile(hComm,zpk,BytesToRead,&dwBytesRead,NULL);//was 50 if(dwBytesRead){ xpk = zpk + dwBytesRead; gpk = zpk; do{ if(ppk=(BYTE)memchr((BYTE_)gpk,PCT,dwBytesRead-1)){ fpk=ppk+1; if(_fpk==SOF){ strt=fpk+1; fpk+=2;//len byte gpk=strt + fpk; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } }else{ if(_fpk==EOF){ if(strt){//if we have a SOF end=ppk-1;//should be the CRC if(strt==0x93){//it is a N2K Msg bpk=(BYTE)&cpa->Frm[Fpos].PGN; dpk=strt+2; cpa->Frm[Fpos].Pri=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk;_bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Dst=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Src=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//get past the if(_dpk++==PCT && _dpk==PCT){dpk++;}//4 Byte Time Stamp if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;} cpa->Frm[Fpos].Len=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//start the data for(bi=0;biFrm[Fpos].Len;bi++){ cpa->Frm[Fpos].Data[bi]=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} } cpa->Frm[Fpos].CRC=end; N2kQ->Push((void)&cpa->Frm[Fpos]);//Queue the Frame for processing if(++Fpos>23){Fpos=0;} //Synchronize(DisplayN2K); <<<---Does not make use of the FIFO buffers }else{ Move it out of the do/while loop if(strt==0xA0){//it is a NGT Msg bi=0; bpk=(BYTE)&NGTFrm.PGN; dpk=strt+2; bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk=(BYTE)&NGTFrm.ID; _bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} while(dpk<end){ NGTFrm.Data[bi++]=_dpk; if(_dpk++==PCT && *dpk==PCT){dpk++;} } NGTFrm.Len=bi; NGTFrm.CRC=_end; Synchronize(DisplayNGT); } } strt=NULL; end=NULL; gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=&cpa->BuffA[0]; goto ENDIT; } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } } } }while(ppk!=NULL); if(strt){ if(xpk>&cpa->BuffA[446]){//then we need to shift the buffer contents memcpy(&cpa->BuffA[0],strt,(xpk-strt)+1); zpk=&cpa->BuffA[xpk-strt]; strt=&cpa->BuffA[0]; }else{ zpk=xpk; } }else{ zpk=&cpa->BuffA[0]; } ENDIT: Synchronize(DisplayN2K); //<<<<----Moved here, more efficient use of FIFO Buffers }//bottom of: if(dwByteRead)

 while(MyQue->Count()){           //this is for the outgoing message queue
        sendN2K=(N2Kstr*)MyQue->Pop();
        WriteFile(hComm,sendN2K->str,sendN2K->lgth,&dwBytesRead,NULL);
     }

  }else{   //using NMEA 1.83
     .............
  }

} } //---------------------------------------------------------------------------

//These are for the thread outputs....

//--------------------------------------------------------------------------- void __fastcall TRead::DisplayGen(void){

KPCon->Edit1->Text=IntToStr(++KPCon->Edit1->Tag);//to count dropped frame events

if(!KPCon->CheckBox1->Checked){ //This is used to temporarily stop the scrolling display

  Form1->Memo1->Lines->Add(Rprt);

  BYTE *plc;
  plc=&cpa->BuffA[0];
  String gen="";

  for(DWORD j=0;j<ti;j++){
     if(*plc==PCT){
        gen=gen+AnsiString().sprintf("[PCT] ");
     }else{
        if(*plc==SOF){
           gen=gen+AnsiString().sprintf("[SOF] ");
        }else{
           if(*plc==EOF){
              gen=gen+AnsiString().sprintf("[EOF] ");
           }else{
              gen=gen+AnsiString().sprintf("%02X ",*plc);
           }
        }
     }
     plc++;
  }

  Form1->Memo1->Lines->Add(gen);

} } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayNGT(void){

if(KPCon->CheckBox1->Checked){return;}//This is used to temporarily stop the scrolling display

String gen=IntToStr(NGTFrm.PGN)+", "+ IntToStr(NGTFrm.ID)+", "+ IntToStr(NGTFrm.Len)+", "; for(BYTE j=0;j<NGTFrm.Len;j++){ gen=gen+AnsiString().sprintf("%02X ",NGTFrm.Data[j]);//IntToHex(int value, 2); } gen=gen+", "+IntToStr(NGTFrm.CRC); Form1->Memo1->Lines->Add(gen); } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayN2K(){

N2KFrame *Frm; while(N2kQ->Count()){

  Frm=(N2KFrame*)N2kQ->Pop();   //read from the output queue

  if(!KPCon->CheckBox1->Checked){//temporarily halt the scrolling display

     String gen=IntToStr(Frm->Pri)+", "+
                IntToStr(Frm->PGN)+", "+
                IntToStr(Frm->Src)+", "+
                IntToStr(Frm->Dst)+", "+
                IntToStr(Frm->Len)+", ";
     for(BYTE j=0;j<Frm->Len;j++){
        gen=gen+AnsiString().sprintf("%02X ",Frm->Data[j]);//IntToHex(int value, 2);
     }
     gen=gen+", "+IntToStr(Frm->CRC);
     Form1->Memo1->Lines->Add(gen);
  }

} } //---------------------------------------------------------------------------

//These are the Main Form fuctions for creating output frames //--------------------------------------------------------------------------- void __fastcall TForm1::Send_ISO_Request(int indx, BYTE pri, DWORD pgn, BYTE dst){

N2KFrame frm; BYTE bt; bt=(BYTE)&pgn;

frm.Pri=pri; frm.PGN=59904;//ISO Request for a particular PGN frm.Dst=dst; frm.Len=3; frm.Data[0]=_bt++; frm.Data[1]=_bt++; frm.Data[2]=*bt;

SendN2K(indx, &frm);

} //--------------------------------------------------------------------------- void __fastcall TForm1::SendN2K(int indx, N2KFrame *N2kFrm){

if(ReadCom[indx]){ BYTE _bt,_bpk,dpk,j,xrc=148; bpk=(BYTE)&N2kFrm->PGN; dpk=&ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->str[0]; bt=dpk; _dpk++=PCT; dpk++=SOF; dpk++=148; dpk++=(N2kFrm->Len+6); dpk++=N2kFrm->Pri;xrc+=N2kFrm->Pri; dpk++=_bpk;xrc+=_bpk++;//get the PGN dpk++=_bpk;xrc+=_bpk++; dpk++=_bpk;xrc+=_bpk; dpk++=N2kFrm->Dst;xrc+=N2kFrm->Dst; dpk++=N2kFrm->Len;xrc+=N2kFrm->Len; for(j=0;jLen;j++){ dpk++=N2kFrm->Data[j]; xrc+=N2kFrm->Data[j]; if(N2kFrm->Data[j]==PCT){_dpk++=PCT;} } xrc+=(N2kFrm->Len+6); dpk++=(256-xrc); dpk++=PCT; *dpk++=EOF;

  ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->lgth=(dpk-bt);
  ReadCom[indx]->MyQue->Push((void*)ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]);
  if(++ReadCom[indx]->Ncnt>11){ReadCom[indx]->Ncnt=0;}

} } //---------------------------------------------------------------------------

Some sample output....

Note: I have two NGT-1s plugged in from my N2K Bus, so many of the outputs appear to be duplicated. Good for load testing:)

NGT Output...

918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 NGT PGN, NGT Serial# Len Data.... CRC

N2K Output...

2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 Pri PGN Src Dest Len Data... CRC

Responses to ISO Request for PGN 60928 = Request for ISO Address Claim...

7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6

A dumped buffer (error) will be displayed like this:

Got Dropped Frame!!!! [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] E4 08 13 08 *08 CB BD B0 11 9D 80 88 CE 92 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 00 [SOF] E7 08 13 08 08 E8 FC 11 DD 04 00 FF FF 76 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] 48 09 13 08 08 CB BD B0 11 9D 80 88 CE 2D [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] 4B 09 13 08 08 E9 FC 11 DD 04 00 FF FF [PCT] [PCT] [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 FF [SOF] AC 09 13 08 08 CB BD B0 11 9D 80 88 CE C9 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] AF 09 13 08 08 EA FC 11 DD 04 00 FF FF AB [PCT] [EOF]

You may occaisionally get one or two of those at start up:)

Output.... //--------------------------------------------------------------------------- 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 917777, 147479, 6, 00 00 00 00 02 00 , 215 918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 918000, 147479, 7, 00 00 00 00 A2 08 00 , 79 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 28 2, 129026, 2, 255, 8, 6B FC E3 2A 03 00 FF FF , 144 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 183 2, 129026, 2, 255, 8, 6C FC E3 2A 03 00 FF FF , 42 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 83 2, 129026, 2, 255, 8, 6D FC E3 2A 03 00 FF FF , 197 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 236 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 96 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 135 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 35 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 149 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 190 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 47 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 188 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 227 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 87 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 126 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 241 917777, 147482, 6, 00 00 00 00 02 00 , 212 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 169 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 33 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 169 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 179 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 81 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 193 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 68 918000, 147482, 7, 00 00 00 00 A2 08 00 , 76 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 26 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 140 7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 126 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 6 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 16 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 161 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 174 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 30 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 239 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 93 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 179 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 138 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 01 00 00 00 04 59 02 01 00 01 04 01 00 00 00 , 116 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 248 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 38 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 230 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 147 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 85 7, 59904, 1, 255, 3, 00 EE 00 , 233 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 130 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 207 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 238 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 08 4D 02 01 00 00 00 02 00 00 00 , 129 6, 60928, 0, 255, 8, 17 40 22 22 00 82 32 C0 , 24 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 193 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 44 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 45 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 29 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 137 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 92 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 35 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 81 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 246 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 190 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 99 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 237 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 144 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 89 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 253 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 137 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 44 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 244 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 152 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 36 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 199 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 141 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 49 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 235 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 72 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 172 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 8 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 251 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 87 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 92 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 196 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 184 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 32 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 242 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 150 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 84 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 248 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 95 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 186 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 147 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 249 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 240 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 85 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 01 00 00 00 00 00 07 19 02 01 00 00 00 02 00 00 00 , 180 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 47 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 148 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 140 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 240 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 0F 02 01 00 00 00 02 00 00 00 , 194 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 202 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 39 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 138 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 102 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 195 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 36 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 253 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 98 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 89 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 190 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 152 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 245 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 90 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 145 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 245 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 52 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 208 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 44 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 143 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 185 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 44 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 21 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 137 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 33 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 196 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 101 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 197 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 194 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 34 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 147 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 54 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 3 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 95 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 158 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 251 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 90 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 1F 02 01 00 00 00 02 00 00 00 , 177 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 58 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 151 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 245 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 14 02 01 00 00 00 02 00 00 00 , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 214 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 50 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 50 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 142 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 113 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 204 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 206 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 7 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 104 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 99 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 196 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 162 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 2 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 255 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 95 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 62 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 157 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 155 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 218 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 54 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 147 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 132 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 47 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 225 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 140 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 148 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 109 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 201 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 241 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 202 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 38 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 84 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 177 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 11 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 102 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 104 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 194 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 166 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 0 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 2 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 93 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 0D 02 01 00 00 00 02 00 00 00 , 195 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 66 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 155 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 158 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 248 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 2F 02 01 00 00 00 02 00 00 00 , 164 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 222 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 54 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 57 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 146 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 121 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 208 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 213 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 18 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 107 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 110 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 200 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 173 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 4 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 9 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 97 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 73 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 158 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 165 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 250 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 223 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 51 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 126 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 227 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 59 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 142 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 217 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 62 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 204 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 168 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 250 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 39 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 4 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 86 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 194 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 29 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 69 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 152 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 162 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 244 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 225 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 51 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 61 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 142 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 168 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 124 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 205 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 217 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 24 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 103 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 1B 02 01 00 00 00 02 00 00 00 , 182 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 117 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 195 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 179 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 1 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 16 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 93 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 79 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 157 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 172 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 249 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 230 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 66 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 147 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 129 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 222 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 46 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 29 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 108 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 122 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 201 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 78 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 233 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 169 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 69 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 188 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 178 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 255 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 24 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 14 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 92 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 19 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 111 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 79 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 155 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 172 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 248 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 235 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 54 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 71 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 146 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 31 02 01 00 00 00 02 00 00 00 , 157 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 134 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 208 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 227 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 45 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 34 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 107 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 127 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 200 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 171 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 190 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 7 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 26 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 89 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 161 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 182 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 254 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 238 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 60 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 74 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 137 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 214 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 230 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 37 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 114 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 130 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 207 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 24 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 236 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 116 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 72 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 15 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 185 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 3 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 107 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 21 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 95 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 100 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 192 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 86 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 179 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 252 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 159 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 57 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 78 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 149 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 222 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 246 7, 59904, 0, 255, 3, 00 EE 00 , 108 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 82 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 20 02 01 00 00 00 02 00 00 00 , 174 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 141 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 212 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 233 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 49 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 133 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 202 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 41 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 109 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 07 15 02 01 00 00 00 02 00 00 00 , 186 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 197 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 32 2, 129026, 2, 255, 8, BA FC E3 2A 07 00 FF FF , 98 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 96 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 161 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 188 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 254 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 251 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 60 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 87 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 153 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 150 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 214 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 51 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 50 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 142 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 207 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 114 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 227 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 238 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 64 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 75 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 66 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 197 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 3 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 33 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 95 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 160 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 97 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 190 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 159 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 90 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 151 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 253 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 59 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 13 02 01 00 00 00 02 00 00 00 , 187 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 245 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 49 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 153 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 213 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 145 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 204 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 34 02 01 00 00 00 02 00 00 00 , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 52 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 112 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 44 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 10 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 101 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 200 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 0 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 107 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 164 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 6 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 63 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 99 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 155 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 162 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 254 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 54 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 219 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 154 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 61 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 117 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 14 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 205 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 177 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 113 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 20 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 112 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 47 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 100 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 212 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 9 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 1 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 93 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 205 2, 129026, 2, 255, 8, CC FC E3 2A 04 00 FF FF , 1

KadarMarine commented 10 years ago

Here are a some initializations that should happen when the comport threat is started...

   BytesToRead=224; //sets the size of the data to be read in
   strt=NULL;
   end=NULL;
   Fpos=0;

Hi again,

After kicking back with a few Coronas and mulling things over I realized another booboo.

I probably should have mulled it over for a day or so before pushing it out the door:)

From within the main thread code, find the following function call (it only happens once): Look for: Synchronize(DisplayN2K); and move it out of the do/while loop....

                           if(*dpk++==PCT && 

_dpk==PCT){dpk++;}//start the data for(bi=0;biFrm[Fpos].Len;bi++){ cpa->Frm[Fpos].Data[bi]=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} } cpa->Frm[Fpos].CRC=end; N2kQ->Push((void)&cpa->Frm[Fpos]);//Queue the Frame for processing if(++Fpos>23){Fpos=0;} //Synchronize(DisplayN2K); <<<---Does not make use of the FIFO buffers }else{ Move it out of the do/while loop if(strt==0xA0){//it is a NGT Msg bi=0; bpk=(BYTE)&NGTFrm.PGN; dpk=strt+2; bpk++ = dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}

Move it down to outside of the do/while loop to here...

         }
         ENDIT:
         Synchronize(DisplayN2K); //<<<<----Moved here, more 

efficient use of FIFO Buffers }//bottom of: if(dwByteRead)

  while(MyQue->Count()){           //this is for the outgoing 

message queue sendN2K=(N2Kstr*)MyQue->Pop(); WriteFile(hComm,sendN2K->str,sendN2K->lgth,&dwBytesRead,NULL); }

   }else{   //using NMEA 1.83
      .............
   }

I've revised the previous text file. Please find attached: C++ N2K - Parse - Rev-01.txt

Fixed that missing buffer too:)

Cheers, Keith

I noticed that one of the buffers in the typedefs when missing from the text that file I sent.

You can cut and paste this in...

typedef struct _N2KBuff{ BYTE BuffA[672]; //<<<this main input buffer when missing N2KFrame Frm[24]; //those darn buffers always straying away!:) }N2KBuff;

KD

Hi again Tkurki,

I finished my new thread (I/O) code today. It's working well.

Please find attached: C++ N2K - Parse.txt

I hope this squares us. Please feel free to share it if you'd like.

Best regards, Keith (Kadar)

Hi Tkurki,

I am in complete agreement. I never want to infringe on anyone's work. I thought this was just out there "free to use"; as so many code examples are.

I will remove the actisense-serial.c code from my project. Further; I will send you my resulting code concerning my new parsing algorithms once they are completed. I hope that this will rectify my intrusion onto your turf.

Concerning the Actisense SDK; I'm not sure I would use it even if I could just because it could not easily be incorporated into my existing multi-threaded system. I use Borland C++ Builder, and I have never been able to link with Microsoft flavor dll's or libraries. I almost always have to re-invent the wheel or start from scratch.

Concerning the PGNs that are part of Canboat: I have made the $4,000 dollar purchase through NMEA, which provides me with all of the NMEA 2000 documentation which is inclusive of the 20130118-NMEA-2000-Appendix-A-and-B-Version-2(2).000.pdf file.

Concerning the KNav on line presence: It's gona happen - just not there yet. I still want to include electronic navigation charts {ENC's} into my application. I have about half this code written; but I still need to work on the vender encryption part of things. Currently I only operate with a mailing list to keep users up to date.

Again my apologies for my blundering about with your hard earned code. I will make this right with you. You may even like my parsing algorithms; and I will give permission in advance to use them when I have them completed.Â

I'll get back to you on this.

Best regards, Keith

On 6/10/2014 2:06 PM, canboat wrote:

Hi Keith,

I'm sorry but "I was not aware" does not cut it. That file you just copied contains a clear reference to the GPL:

... CANboat is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ....

This means that you cannot use it in non GPL code.

Something tells me you are probably also considering using the PGN definitions that are part of CANboat. Those are also licensed under GPL. Please be aware of that.

If you use my knowledge but choose not to abide with my licensing terms then I consider that theft, sorry. I spent many evenings and nights building the knowledge required to create CANboat. The amount of code is irrelevant IMO.

If you don't want to use my IP you could license the Actisense SDK, which is easy to do, and free, and buy the NMEA 2000 PGN documents (about 700 USD for the relevant set, if I remember correctly) (= pay the NMEA).

I see you created a huge whopping application, but you don't have any online presence. I can't find any website for it?

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-45650012.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com

/relevant defines and typedefs (.h file)/

define SOF (0x02) // Start of Frame //N2K Defines

define EOF (0x03) // End of Frame

define PCT (0x10) //Get Ready - something is coming "like printf flag %"

//--------------------------------------------------------------------------- typedef struct N2K_FRAME{ DWORD PGN; BYTE Pri; BYTE Dst; BYTE Src; BYTE Len; BYTE CRC; BYTE Data[672]; }N2KFrame; //--------------------------------------------------------------------------- typedef struct NGT_FRAME{ BYTE Len; DWORD PGN; DWORD ID; BYTE CRC; BYTE Data[672]; }NGTFrame; //--------------------------------------------------------------------------- typedef struct _N2KBuff{ //for input (Rx) buffer, and frame queue BYTE BuffA[672]; N2KFrame Frm[24]; }N2KBuff; //--------------------------------------------------------------------------- typedef struct Nkst{ //for output (Tx) queue BYTE str[255]; short lgth; }N2Kstr; //--------------------------------------------------------------------------- DWORD ti; //really just a temporaty counter for studying dropped frames

BYTE bi; //for counter BYTE _zpk,_ppk,_xpk,_fpk,_gpk,_dpk,_strt,_end,*bpk; //Thread [parsing] pointers used //--------------------------------------------------------------------------- //Those are the main things anyhow.

//Here is the main part of the thread code.... //Sorry if it's a little crowded - it's just my style. //--------------------------------------------------------------------------- void _fastcall TRead::Execute(){ while(!Terminated){ if(isN2K){ ReadFile(hComm,zpk,BytesToRead,&dwBytesRead,NULL);//was 50 if(dwBytesRead){ xpk = zpk + dwBytesRead; gpk = zpk; do{ if(ppk=(BYTE)memchr((BYTE_)gpk,PCT,dwBytesRead-1)){ fpk=ppk+1; if(_fpk==SOF){ strt=fpk+1; fpk+=2;//len byte gpk=strt + fpk; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } }else{ if(_fpk==EOF){ if(strt){//if we have a SOF end=ppk-1;//should be the CRC if(strt==0x93){//it is a N2K Msg bpk=(BYTE)&cpa->Frm[Fpos].PGN; dpk=strt+2; cpa->Frm[Fpos].Pri=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk;_bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Dst=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Src=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//get past the if(_dpk++==PCT && _dpk==PCT){dpk++;}//4 Byte Time Stamp if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;} cpa->Frm[Fpos].Len=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//start the data for(bi=0;biFrm[Fpos].Len;bi++){ cpa->Frm[Fpos].Data[bi]=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} } cpa->Frm[Fpos].CRC=end; N2kQ->Push((void)&cpa->Frm[Fpos]);//Queue the Frame for processing if(++Fpos>23){Fpos=0;} //Synchronize(DisplayN2K); <<<---Does not make use of the FIFO buffers }else{ Move it out of the do/while loop if(strt==0xA0){//it is a NGT Msg bi=0; bpk=(BYTE)&NGTFrm.PGN; dpk=strt+2; bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk=(BYTE)&NGTFrm.ID; _bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} while(dpk<end){ NGTFrm.Data[bi++]=_dpk; if(_dpk++==PCT && *dpk==PCT){dpk++;} } NGTFrm.Len=bi; NGTFrm.CRC=_end; Synchronize(DisplayNGT); } } strt=NULL; end=NULL; gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=&cpa->BuffA[0]; goto ENDIT; } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } } } }while(ppk!=NULL); if(strt){ if(xpk>&cpa->BuffA[446]){//then we need to shift the buffer contents memcpy(&cpa->BuffA[0],strt,(xpk-strt)+1); zpk=&cpa->BuffA[xpk-strt]; strt=&cpa->BuffA[0]; }else{ zpk=xpk; } }else{ zpk=&cpa->BuffA[0]; } ENDIT: Synchronize(DisplayN2K); //<<<<----Moved here, more efficient use of FIFO Buffers }//bottom of: if(dwByteRead)

 while(MyQue->Count()){           //this is for the outgoing message queue
        sendN2K=(N2Kstr*)MyQue->Pop();
        WriteFile(hComm,sendN2K->str,sendN2K->lgth,&dwBytesRead,NULL);
     }

  }else{   //using NMEA 1.83
     .............
  }

} } //---------------------------------------------------------------------------

//These are for the thread outputs....

//--------------------------------------------------------------------------- void __fastcall TRead::DisplayGen(void){

KPCon->Edit1->Text=IntToStr(++KPCon->Edit1->Tag);//to count dropped frame events

if(!KPCon->CheckBox1->Checked){ //This is used to temporarily stop the scrolling display

  Form1->Memo1->Lines->Add(Rprt);

  BYTE *plc;
  plc=&cpa->BuffA[0];
  String gen="";

  for(DWORD j=0;j<ti;j++){
     if(*plc==PCT){
        gen=gen+AnsiString().sprintf("[PCT] ");
     }else{
        if(*plc==SOF){
           gen=gen+AnsiString().sprintf("[SOF] ");
        }else{
           if(*plc==EOF){
              gen=gen+AnsiString().sprintf("[EOF] ");
           }else{
              gen=gen+AnsiString().sprintf("%02X ",*plc);
           }
        }
     }
     plc++;
  }

  Form1->Memo1->Lines->Add(gen);

} } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayNGT(void){

if(KPCon->CheckBox1->Checked){return;}//This is used to temporarily stop the scrolling display

String gen=IntToStr(NGTFrm.PGN)+", "+ IntToStr(NGTFrm.ID)+", "+ IntToStr(NGTFrm.Len)+", "; for(BYTE j=0;j<NGTFrm.Len;j++){ gen=gen+AnsiString().sprintf("%02X ",NGTFrm.Data[j]);//IntToHex(int value, 2); } gen=gen+", "+IntToStr(NGTFrm.CRC); Form1->Memo1->Lines->Add(gen); } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayN2K(){

N2KFrame *Frm; while(N2kQ->Count()){

  Frm=(N2KFrame*)N2kQ->Pop();   //read from the output queue

  if(!KPCon->CheckBox1->Checked){//temporarily halt the scrolling display

     String gen=IntToStr(Frm->Pri)+", "+
                IntToStr(Frm->PGN)+", "+
                IntToStr(Frm->Src)+", "+
                IntToStr(Frm->Dst)+", "+
                IntToStr(Frm->Len)+", ";
     for(BYTE j=0;j<Frm->Len;j++){
        gen=gen+AnsiString().sprintf("%02X ",Frm->Data[j]);//IntToHex(int value, 2);
     }
     gen=gen+", "+IntToStr(Frm->CRC);
     Form1->Memo1->Lines->Add(gen);
  }

} } //---------------------------------------------------------------------------

//These are the Main Form fuctions for creating output frames //--------------------------------------------------------------------------- void __fastcall TForm1::Send_ISO_Request(int indx, BYTE pri, DWORD pgn, BYTE dst){

N2KFrame frm; BYTE bt; bt=(BYTE)&pgn;

frm.Pri=pri; frm.PGN=59904;//ISO Request for a particular PGN frm.Dst=dst; frm.Len=3; frm.Data[0]=_bt++; frm.Data[1]=_bt++; frm.Data[2]=*bt;

SendN2K(indx, &frm);

} //--------------------------------------------------------------------------- void __fastcall TForm1::SendN2K(int indx, N2KFrame *N2kFrm){

if(ReadCom[indx]){ BYTE _bt,_bpk,dpk,j,xrc=148; bpk=(BYTE)&N2kFrm->PGN; dpk=&ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->str[0]; bt=dpk; _dpk++=PCT; dpk++=SOF; dpk++=148; dpk++=(N2kFrm->Len+6); dpk++=N2kFrm->Pri;xrc+=N2kFrm->Pri; dpk++=_bpk;xrc+=_bpk++;//get the PGN dpk++=_bpk;xrc+=_bpk++; dpk++=_bpk;xrc+=_bpk; dpk++=N2kFrm->Dst;xrc+=N2kFrm->Dst; dpk++=N2kFrm->Len;xrc+=N2kFrm->Len; for(j=0;jLen;j++){ dpk++=N2kFrm->Data[j]; xrc+=N2kFrm->Data[j]; if(N2kFrm->Data[j]==PCT){_dpk++=PCT;} } xrc+=(N2kFrm->Len+6); dpk++=(256-xrc); dpk++=PCT; *dpk++=EOF;

  ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->lgth=(dpk-bt);
  ReadCom[indx]->MyQue->Push((void*)ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]);
  if(++ReadCom[indx]->Ncnt>11){ReadCom[indx]->Ncnt=0;}

} } //---------------------------------------------------------------------------

Some sample output....

Note: I have two NGT-1s plugged in from my N2K Bus, so many of the outputs appear to be duplicated. Good for load testing:)

NGT Output...

918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 NGT PGN, NGT Serial# Len Data.... CRC

N2K Output...

2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 Pri PGN Src Dest Len Data... CRC

Responses to ISO Request for PGN 60928 = Request for ISO Address Claim...

7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6

A dumped buffer (error) will be displayed like this:

Got Dropped Frame!!!! [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] E4 08 13 08 *08 CB BD B0 11 9D 80 88 CE 92 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 00 [SOF] E7 08 13 08 08 E8 FC 11 DD 04 00 FF FF 76 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] 48 09 13 08 08 CB BD B0 11 9D 80 88 CE 2D [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] 4B 09 13 08 08 E9 FC 11 DD 04 00 FF FF [PCT] [PCT] [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 FF [SOF] AC 09 13 08 08 CB BD B0 11 9D 80 88 CE C9 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] AF 09 13 08 08 EA FC 11 DD 04 00 FF FF AB [PCT] [EOF]

You may occaisionally get one or two of those at start up:)

Output.... //--------------------------------------------------------------------------- 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 917777, 147479, 6, 00 00 00 00 02 00 , 215 918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 918000, 147479, 7, 00 00 00 00 A2 08 00 , 79 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 28 2, 129026, 2, 255, 8, 6B FC E3 2A 03 00 FF FF , 144 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 183 2, 129026, 2, 255, 8, 6C FC E3 2A 03 00 FF FF , 42 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 83 2, 129026, 2, 255, 8, 6D FC E3 2A 03 00 FF FF , 197 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 236 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 96 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 135 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 35 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 149 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 190 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 47 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 188 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 227 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 87 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 126 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 241 917777, 147482, 6, 00 00 00 00 02 00 , 212 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 169 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 33 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 169 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 179 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 81 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 193 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 68 918000, 147482, 7, 00 00 00 00 A2 08 00 , 76 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 26 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 140 7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 126 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 6 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 16 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 161 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 174 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 30 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 239 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 93 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 179 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 138 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 01 00 00 00 04 59 02 01 00 01 04 01 00 00 00 , 116 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 248 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 38 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 230 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 147 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 85 7, 59904, 1, 255, 3, 00 EE 00 , 233 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 130 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 207 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 238 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 08 4D 02 01 00 00 00 02 00 00 00 , 129 6, 60928, 0, 255, 8, 17 40 22 22 00 82 32 C0 , 24 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 193 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 44 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 45 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 29 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 137 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 92 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 35 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 81 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 246 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 190 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 99 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 237 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 144 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 89 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 253 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 137 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 44 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 244 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 152 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 36 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 199 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 141 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 49 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 235 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 72 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 172 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 8 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 251 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 87 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 92 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 196 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 184 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 32 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 242 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 150 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 84 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 248 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 95 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 186 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 147 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 249 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 240 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 85 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 01 00 00 00 00 00 07 19 02 01 00 00 00 02 00 00 00 , 180 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 47 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 148 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 140 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 240 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 0F 02 01 00 00 00 02 00 00 00 , 194 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 202 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 39 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 138 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 102 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 195 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 36 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 253 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 98 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 89 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 190 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 152 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 245 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 90 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 145 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 245 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 52 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 208 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 44 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 143 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 185 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 44 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 21 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 137 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 33 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 196 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 101 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 197 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 194 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 34 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 147 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 54 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 3 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 95 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 158 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 251 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 90 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 1F 02 01 00 00 00 02 00 00 00 , 177 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 58 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 151 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 245 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 14 02 01 00 00 00 02 00 00 00 , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 214 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 50 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 50 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 142 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 113 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 204 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 206 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 7 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 104 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 99 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 196 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 162 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 2 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 255 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 95 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 62 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 157 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 155 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 218 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 54 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 147 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 132 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 47 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 225 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 140 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 148 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 109 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 201 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 241 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 202 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 38 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 84 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 177 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 11 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 102 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 104 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 194 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 166 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 0 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 2 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 93 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 0D 02 01 00 00 00 02 00 00 00 , 195 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 66 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 155 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 158 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 248 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 2F 02 01 00 00 00 02 00 00 00 , 164 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 222 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 54 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 57 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 146 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 121 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 208 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 213 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 18 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 107 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 110 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 200 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 173 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 4 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 9 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 97 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 73 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 158 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 165 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 250 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 223 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 51 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 126 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 227 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 59 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 142 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 217 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 62 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 204 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 168 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 250 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 39 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 4 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 86 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 194 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 29 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 69 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 152 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 162 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 244 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 225 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 51 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 61 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 142 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 168 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 124 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 205 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 217 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 24 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 103 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 1B 02 01 00 00 00 02 00 00 00 , 182 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 117 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 195 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 179 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 1 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 16 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 93 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 79 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 157 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 172 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 249 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 230 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 66 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 147 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 129 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 222 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 46 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 29 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 108 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 122 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 201 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 78 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 233 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 169 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 69 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 188 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 178 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 255 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 24 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 14 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 92 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 19 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 111 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 79 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 155 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 172 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 248 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 235 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 54 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 71 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 146 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 31 02 01 00 00 00 02 00 00 00 , 157 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 134 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 208 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 227 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 45 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 34 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 107 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 127 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 200 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 171 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 190 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 7 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 26 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 89 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 161 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 182 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 254 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 238 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 60 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 74 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 137 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 214 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 230 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 37 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 114 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 130 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 207 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 24 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 236 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 116 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 72 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 15 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 185 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 3 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 107 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 21 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 95 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 100 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 192 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 86 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 179 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 252 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 159 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 57 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 78 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 149 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 222 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 246 7, 59904, 0, 255, 3, 00 EE 00 , 108 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 82 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 20 02 01 00 00 00 02 00 00 00 , 174 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 141 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 212 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 233 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 49 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 133 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 202 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 41 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 109 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 07 15 02 01 00 00 00 02 00 00 00 , 186 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 197 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 32 2, 129026, 2, 255, 8, BA FC E3 2A 07 00 FF FF , 98 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 96 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 161 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 188 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 254 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 251 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 60 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 87 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 153 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 150 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 214 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 51 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 50 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 142 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 207 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 114 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 227 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 238 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 64 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 75 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 66 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 197 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 3 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 33 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 95 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 160 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 97 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 190 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 159 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 90 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 151 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 253 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 59 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 13 02 01 00 00 00 02 00 00 00 , 187 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 245 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 49 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 153 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 213 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 145 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 204 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 34 02 01 00 00 00 02 00 00 00 , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 52 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 112 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 44 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 10 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 101 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 200 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 0 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 107 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 164 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 6 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 63 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 99 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 155 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 162 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 254 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 54 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 219 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 154 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 61 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 117 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 14 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 205 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 177 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 113 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 20 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 112 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 47 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 100 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 212 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 9 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 1 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 93 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 205 2, 129026, 2, 255, 8, CC FC E3 2A 04 00 FF FF , 1

KadarMarine commented 10 years ago

Please find attached: C++ N2K - Parse - Rev-02.txt

This new code allow for error checking of the inputs: isErrChck=true; // (Boolean) initialize to true if added error checking is desired

Also, modified the function call: void __fastcall TRead::DisplayGen(void){

KPCon->Edit1->Text=IntToStr(++KPCon->Edit1->Tag);
if(!KPCon->CheckBox1->Checked){
   Form1->Memo1->Lines->Add(Rprt);
   if(!Rprt.Pos("Dropped")){return;}         //Added this so that 

the new error messages can be ...... //displayed without dumping the buffer to the display ...... ...... ...... }

Cheers, KD

Here are a some initializations that should happen when the comport threat is started...

   BytesToRead=224; //sets the size of the data to be read in
   strt=NULL;
   end=NULL;
   Fpos=0;

Hi again,

After kicking back with a few Coronas and mulling things over I realized another booboo.

I probably should have mulled it over for a day or so before pushing it out the door:)

From within the main thread code, find the following function call (it only happens once): Look for: Synchronize(DisplayN2K); and move it out of the do/while loop....

                           if(*dpk++==PCT && 

_dpk==PCT){dpk++;}//start the data for(bi=0;biFrm[Fpos].Len;bi++){ cpa->Frm[Fpos].Data[bi]=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} } cpa->Frm[Fpos].CRC=end; N2kQ->Push((void)&cpa->Frm[Fpos]);//Queue the Frame for processing if(++Fpos>23){Fpos=0;} //Synchronize(DisplayN2K); <<<---Does not make use of the FIFO buffers }else{ Move it out of the do/while loop if(strt==0xA0){//it is a NGT Msg bi=0; bpk=(BYTE)&NGTFrm.PGN; dpk=strt+2; bpk++ = dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}

Move it down to outside of the do/while loop to here...

         }
         ENDIT:
         Synchronize(DisplayN2K); //<<<<----Moved here, more 

efficient use of FIFO Buffers }//bottom of: if(dwByteRead)

  while(MyQue->Count()){           //this is for the outgoing 

message queue sendN2K=(N2Kstr*)MyQue->Pop(); WriteFile(hComm,sendN2K->str,sendN2K->lgth,&dwBytesRead,NULL); }

   }else{   //using NMEA 1.83
      .............
   }

I've revised the previous text file. Please find attached: C++ N2K - Parse - Rev-01.txt

Fixed that missing buffer too:)

Cheers, Keith

I noticed that one of the buffers in the typedefs when missing from the text that file I sent.

You can cut and paste this in...

typedef struct _N2KBuff{ BYTE BuffA[672]; //<<<this main input buffer when missing N2KFrame Frm[24]; //those darn buffers always straying away!:) }N2KBuff;

KD

Hi again Tkurki,

I finished my new thread (I/O) code today. It's working well.

Please find attached: C++ N2K - Parse.txt

I hope this squares us. Please feel free to share it if you'd like.

Best regards, Keith (Kadar)

Hi Tkurki,

I am in complete agreement. I never want to infringe on anyone's work. I thought this was just out there "free to use"; as so many code examples are.

I will remove the actisense-serial.c code from my project. Further; I will send you my resulting code concerning my new parsing algorithms once they are completed. I hope that this will rectify my intrusion onto your turf.

Concerning the Actisense SDK; I'm not sure I would use it even if I could just because it could not easily be incorporated into my existing multi-threaded system. I use Borland C++ Builder, and I have never been able to link with Microsoft flavor dll's or libraries. I almost always have to re-invent the wheel or start from scratch.

Concerning the PGNs that are part of Canboat: I have made the $4,000 dollar purchase through NMEA, which provides me with all of the NMEA 2000 documentation which is inclusive of the 20130118-NMEA-2000-Appendix-A-and-B-Version-2(2).000.pdf file.

Concerning the KNav on line presence: It's gona happen - just not there yet. I still want to include electronic navigation charts {ENC's} into my application. I have about half this code written; but I still need to work on the vender encryption part of things. Currently I only operate with a mailing list to keep users up to date.

Again my apologies for my blundering about with your hard earned code. I will make this right with you. You may even like my parsing algorithms; and I will give permission in advance to use them when I have them completed.Â

I'll get back to you on this.

Best regards, Keith

On 6/10/2014 2:06 PM, canboat wrote:

Hi Keith,

I'm sorry but "I was not aware" does not cut it. That file you just copied contains a clear reference to the GPL:

... CANboat is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ....

This means that you cannot use it in non GPL code.

Something tells me you are probably also considering using the PGN definitions that are part of CANboat. Those are also licensed under GPL. Please be aware of that.

If you use my knowledge but choose not to abide with my licensing terms then I consider that theft, sorry. I spent many evenings and nights building the knowledge required to create CANboat. The amount of code is irrelevant IMO.

If you don't want to use my IP you could license the Actisense SDK, which is easy to do, and free, and buy the NMEA 2000 PGN documents (about 700 USD for the relevant set, if I remember correctly) (= pay the NMEA).

I see you created a huge whopping application, but you don't have any online presence. I can't find any website for it?

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-45650012.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com

/relevant defines and typedefs (.h file)/

define SOF (0x02) // Start of Frame //N2K Defines

define EOF (0x03) // End of Frame

define PCT (0x10) //Get Ready - something is coming "like printf flag %"

//--------------------------------------------------------------------------- typedef struct N2K_FRAME{ DWORD PGN; BYTE Pri; BYTE Dst; BYTE Src; BYTE Len; BYTE CRC; BYTE Data[672]; }N2KFrame; //--------------------------------------------------------------------------- typedef struct NGT_FRAME{ BYTE Len; DWORD PGN; DWORD ID; BYTE CRC; BYTE Data[672]; }NGTFrame; //--------------------------------------------------------------------------- typedef struct _N2KBuff{ //for input (Rx) buffer, and frame queue BYTE BuffA[672]; N2KFrame Frm[24]; }N2KBuff; //--------------------------------------------------------------------------- typedef struct Nkst{ //for output (Tx) queue BYTE str[255]; short lgth; }N2Kstr; //--------------------------------------------------------------------------- DWORD ti; //really just a temporaty counter for studying dropped frames BYTE XRC; //used xrc checking BYTE bi; //for counter BYTE _zpk,_ppk,_xpk,_fpk,_gpk,_dpk,_strt,_end,*bpk; //Thread [parsing] pointers used

//Initialize these values when the thread is initialized...

isErrChck=true; // (Boolean) initialize to true if added error checking is desired
BytesToRead=224; // (DWORD) sets the max size of the data block to be read in strt=NULL; end=NULL; Fpos=0; //--------------------------------------------------------------------------- //Those are the main things anyhow.

//Here is the main part of the thread code.... //Sorry if it's a little crowded - it's just my style. //--------------------------------------------------------------------------- void _fastcall TRead::Execute(){ while(!Terminated){ if(isN2K){ ReadFile(hComm,zpk,BytesToRead,&dwBytesRead,NULL);//was 50 if(dwBytesRead){ xpk = zpk + dwBytesRead; gpk = zpk; do{ if(ppk=(BYTE)memchr((BYTE_)gpk,PCT,dwBytesRead-1)){ fpk=ppk+1; if(_fpk==SOF){ strt=fpk+1; fpk+=2;//len byte gpk=strt + fpk; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } }else{ if(_fpk==EOF){ if(strt){//if we have a SOF end=ppk-1;//should be the CRC if(_strt==0x93){//it is a N2K Msg if(isErrChck){//employ added error checking bpk=strt+1; if(_bpk<11){ Rprt="NK2 Message (<11) Too Short!!!!"; Synchronize(DisplayGen); }else{ XRC=158; bpk=(BYTE)&cpa->Frm[Fpos].PGN; dpk=strt+2; cpa->Frm[Fpos].Pri=_dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk++ = dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk++ = dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk++ = dpk;_bpk = 0;XRC+=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} cpa->Frm[Fpos].Dst=_dpk;XRC+=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} cpa->Frm[Fpos].Src=_dpk;XRC+=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;}//get past the XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//4 Byte Time Stamp XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}// XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}// XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} if(_dpk>223){ Rprt="NK2 Message (>223) Too Long!!!!"; Synchronize(DisplayGen); goto SKIPIT; } cpa->Frm[Fpos].Len=_dpk; XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//start the data for(bi=0;biFrm[Fpos].Len;bi++){ cpa->Frm[Fpos].Data[bi]=_dpk; XRC+=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} } XRC+=bi; XRC=256-XRC; cpa->Frm[Fpos].CRC=end; if(cpa->Frm[Fpos].CRC!=XRC){ Rprt="NK2 Message XRC ("+IntToStr(XRC)+ ") Does not Match CRC ("+IntToStr(cpa->Frm[Fpos].CRC)+")"; Synchronize(DisplayGen); }else{ N2kQ->Push((void)&cpa->Frm[Fpos]);//Queue the Frame for processing if(++Fpos>23){Fpos=0;} } } }else{ bpk=(BYTE_)&cpa->Frm[Fpos].PGN; dpk=strt+2; cpa->Frm[Fpos].Pri=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk;_bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Dst=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} cpa->Frm[Fpos].Src=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//get past the if(_dpk++==PCT && _dpk==PCT){dpk++;}//4 Byte Time Stamp if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;}// if(_dpk++==PCT && _dpk==PCT){dpk++;} cpa->Frm[Fpos].Len=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;}//start the data for(bi=0;biFrm[Fpos].Len;bi++){ cpa->Frm[Fpos].Data[bi]=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} } cpa->Frm[Fpos].CRC=end; N2kQ->Push((void)&cpa->Frm[Fpos]);//Queue the Frame for processing if(++Fpos>23){Fpos=0;} } //Synchronize(DisplayN2K); moved to loop exit }else{ if(_strt==0xA0){//it is a NGT Msg if(isErrChck){//employ added error checking bpk=strt+1; if(bpk<12){ Rprt="NGT Message (<12) Too Short!!!!"; Synchronize(DisplayGen); }else{ bi=0;XRC=168; bpk=(BYTE)&NGTFrm.PGN; dpk=strt+2; _bpk++ = dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk++ = dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk++ = dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk = 0;XRC+=_dpk; if(dpk++==PCT && *dpk==PCT){dpk++;} bpk=(BYTE)&NGTFrm.ID; _bpk++ = dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk++ = dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk++ = dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk++ = dpk;XRC+=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} while(dpk<end){ NGTFrm.Data[bi++]=_dpk; XRC+=_dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} } if(bi>223){ Rprt="NGT Message (>223) Too Long!!!!"; Synchronize(DisplayGen); goto SKIPIT; } NGTFrm.Len=bi;XRC+=bi; XRC=256-XRC; NGTFrm.CRC=end; if(NGTFrm.CRC!=XRC){ Rprt="NGT Message XRC ("+IntToStr(XRC)+ ") Does not Match CRC ("+IntToStr(NGTFrm.CRC)+")"; Synchronize(DisplayGen); }else{ Synchronize(DisplayNGT); } } }else{ bi=0; bpk=(BYTE)&NGTFrm.PGN; dpk=strt+2; bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk = 0; if(_dpk++==PCT && dpk==PCT){dpk++;} bpk=(BYTE)&NGTFrm.ID; _bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} bpk++ = dpk; if(_dpk++==PCT && _dpk==PCT){dpk++;} while(dpk<end){ NGTFrm.Data[bi++]=_dpk; if(_dpk++==PCT && dpk==PCT){dpk++;} } NGTFrm.Len=bi; NGTFrm.CRC=_end; Synchronize(DisplayNGT); } } } SKIPIT: strt=NULL; end=NULL; gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=&cpa->BuffA[0]; goto ENDIT; } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } }else{ gpk=fpk+1; if(xpk>gpk){//then we can keep searching dwBytesRead=(xpk-gpk); }else{//we'll need to read in some more zpk=xpk; if(zpk > &cpa->BuffA[446]){ //for dropped frame examination... strt=NULL; ti=(xpk-&cpa->BuffA[0])+1; zpk=&cpa->BuffA[0];//drop the frame Rprt="Got Dropped Frame!!!!"; Synchronize(DisplayGen); } goto ENDIT; } } } } }while(ppk!=NULL); if(strt){ if(xpk>&cpa->BuffA[446]){//then we need to shift the buffer contents memcpy(&cpa->BuffA[0],strt,(xpk-strt)+1); zpk=&cpa->BuffA[xpk-strt]; strt=&cpa->BuffA[0]; }else{ zpk=xpk; } }else{ zpk=&cpa->BuffA[0]; } ENDIT: Synchronize(DisplayN2K); }//bottom of: if(dwByteRead)

 while(MyQue->Count()){           //this is for the outgoing message queue
        sendN2K=(N2Kstr*)MyQue->Pop();
        WriteFile(hComm,sendN2K->str,sendN2K->lgth,&dwBytesRead,NULL);
     }

  }else{   //using NMEA 1.83
     .............
  }

} } //---------------------------------------------------------------------------

//These are for the thread outputs....

//--------------------------------------------------------------------------- void __fastcall TRead::DisplayGen(void){

KPCon->Edit1->Text=IntToStr(++KPCon->Edit1->Tag);//to count dropped frame events

if(!KPCon->CheckBox1->Checked){ //This is used to temporarily stop the scrolling display

  Form1->Memo1->Lines->Add(Rprt);
  if(!Rprt.Pos("Dropped")){return;}//Added this line so that only dropped frames are displayed

  BYTE *plc;
  plc=&cpa->BuffA[0];
  String gen="";

  for(DWORD j=0;j<ti;j++){
     if(*plc==PCT){
        gen=gen+AnsiString().sprintf("[PCT] ");
     }else{
        if(*plc==SOF){
           gen=gen+AnsiString().sprintf("[SOF] ");
        }else{
           if(*plc==EOF){
              gen=gen+AnsiString().sprintf("[EOF] ");
           }else{
              gen=gen+AnsiString().sprintf("%02X ",*plc);
           }
        }
     }
     plc++;
  }

  Form1->Memo1->Lines->Add(gen);

} } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayNGT(void){

if(KPCon->CheckBox1->Checked){return;}//This is used to temporarily stop the scrolling display

String gen=IntToStr(NGTFrm.PGN)+", "+ IntToStr(NGTFrm.ID)+", "+ IntToStr(NGTFrm.Len)+", "; for(BYTE j=0;j<NGTFrm.Len;j++){ gen=gen+AnsiString().sprintf("%02X ",NGTFrm.Data[j]);//IntToHex(int value, 2); } gen=gen+", "+IntToStr(NGTFrm.CRC); Form1->Memo1->Lines->Add(gen); } //--------------------------------------------------------------------------- void __fastcall TRead::DisplayN2K(){

N2KFrame *Frm; while(N2kQ->Count()){

  Frm=(N2KFrame*)N2kQ->Pop();   //read from the output queue

  if(!KPCon->CheckBox1->Checked){//temporarily halt the scrolling display

     String gen=IntToStr(Frm->Pri)+", "+
                IntToStr(Frm->PGN)+", "+
                IntToStr(Frm->Src)+", "+
                IntToStr(Frm->Dst)+", "+
                IntToStr(Frm->Len)+", ";
     for(BYTE j=0;j<Frm->Len;j++){
        gen=gen+AnsiString().sprintf("%02X ",Frm->Data[j]);//IntToHex(int value, 2);
     }
     gen=gen+", "+IntToStr(Frm->CRC);
     Form1->Memo1->Lines->Add(gen);
  }

} } //---------------------------------------------------------------------------

//These are the Main Form fuctions for creating output frames //--------------------------------------------------------------------------- void __fastcall TForm1::Send_ISO_Request(int indx, BYTE pri, DWORD pgn, BYTE dst){

N2KFrame frm; BYTE bt; bt=(BYTE)&pgn;

frm.Pri=pri; frm.PGN=59904;//ISO Request for a particular PGN frm.Dst=dst; frm.Len=3; frm.Data[0]=_bt++; frm.Data[1]=_bt++; frm.Data[2]=*bt;

SendN2K(indx, &frm);

} //--------------------------------------------------------------------------- void __fastcall TForm1::SendN2K(int indx, N2KFrame *N2kFrm){

if(ReadCom[indx]){ BYTE _bt,_bpk,dpk,j,xrc=148; bpk=(BYTE)&N2kFrm->PGN; dpk=&ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->str[0]; bt=dpk; _dpk++=PCT; dpk++=SOF; dpk++=148; dpk++=(N2kFrm->Len+6); dpk++=N2kFrm->Pri;xrc+=N2kFrm->Pri; dpk++=_bpk;xrc+=_bpk++;//get the PGN dpk++=_bpk;xrc+=_bpk++; dpk++=_bpk;xrc+=_bpk; dpk++=N2kFrm->Dst;xrc+=N2kFrm->Dst; dpk++=N2kFrm->Len;xrc+=N2kFrm->Len; for(j=0;jLen;j++){ dpk++=N2kFrm->Data[j]; xrc+=N2kFrm->Data[j]; if(N2kFrm->Data[j]==PCT){_dpk++=PCT;} } xrc+=(N2kFrm->Len+6); dpk++=(256-xrc); dpk++=PCT; *dpk++=EOF;

  ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]->lgth=(dpk-bt);
  ReadCom[indx]->MyQue->Push((void*)ReadCom[indx]->Nktr[ReadCom[indx]->Ncnt]);
  if(++ReadCom[indx]->Ncnt>11){ReadCom[indx]->Ncnt=0;}

} } //---------------------------------------------------------------------------

Some sample output....

Note: I have two NGT-1s plugged in from my N2K Bus, so many of the outputs appear to be duplicated. Good for load testing:)

NGT Output...

918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 NGT PGN, NGT Serial# Len Data.... CRC

N2K Output...

2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 Pri PGN Src Dest Len Data... CRC

Responses to ISO Request for PGN 60928 = Request for ISO Address Claim...

7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6

A dumped buffer (error) will be displayed like this:

Got Dropped Frame!!!! [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] E4 08 13 08 *08 CB BD B0 11 9D 80 88 CE 92 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 00 [SOF] E7 08 13 08 08 E8 FC 11 DD 04 00 FF FF 76 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 00 [SOF] 48 09 13 08 08 CB BD B0 11 9D 80 88 CE 2D [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] 4B 09 13 08 08 E9 FC 11 DD 04 00 FF FF [PCT] [PCT] [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] 01 F8 01 FF [SOF] AC 09 13 08 08 CB BD B0 11 9D 80 88 CE C9 [PCT] [EOF] [PCT] [SOF] 93 13 [SOF] [SOF] F8 01 FF [SOF] AF 09 13 08 08 EA FC 11 DD 04 00 FF FF AB [PCT] [EOF]

You may occaisionally get one or two of those at start up:)

Output.... //--------------------------------------------------------------------------- 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 71 917777, 147479, 6, 00 00 00 00 02 00 , 215 918002, 147479, 26, 00 00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 02 01 00 02 09 01 00 01 01 , 208 918000, 147479, 7, 00 00 00 00 A2 08 00 , 79 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 28 2, 129026, 2, 255, 8, 6B FC E3 2A 03 00 FF FF , 144 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 183 2, 129026, 2, 255, 8, 6C FC E3 2A 03 00 FF FF , 42 2, 129025, 2, 255, 8, 1B BD B0 11 7B 83 88 CE , 83 2, 129026, 2, 255, 8, 6D FC E3 2A 03 00 FF FF , 197 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 236 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 96 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 135 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 35 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 149 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 190 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 47 2, 129026, 2, 255, 8, 6E FC E3 2A 03 00 FF FF , 188 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 227 2, 129026, 2, 255, 8, 6F FC E3 2A 03 00 FF FF , 87 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 126 2, 129026, 2, 255, 8, 70 FC E3 2A 03 00 FF FF , 241 917777, 147482, 6, 00 00 00 00 02 00 , 212 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 169 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 33 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 169 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 179 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 81 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 193 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 68 918000, 147482, 7, 00 00 00 00 A2 08 00 , 76 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 26 2, 129026, 2, 255, 8, 71 FC E3 2A 03 00 FF FF , 140 7, 59904, 0, 255, 3, 00 EE 00 , 32 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 6 3, 126992, 2, 255, 8, 72 F0 6A 3F F0 1F 07 2A , 126 6, 129539, 2, 255, 8, 72 D3 5B 00 AD 00 73 00 , 6 3, 129029, 2, 255, 47, 72 6A 3F F0 1F 07 2A 80 E4 4C E9 DC 6D 1E 04 80 5B 18 38 64 8D 7B F4 94 8D DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 16 6, 129540, 2, 255, 111, 72 FD 09 01 73 14 43 66 2C 09 00 00 00 00 F2 03 E8 19 45 1B 2B 10 00 00 00 00 F2 07 C4 31 35 EB 2A 0E 00 00 00 00 F2 08 B9 20 FB E0 8A 0D 00 00 00 00 F2 0B D0 24 AC 5A FE 0A 00 00 00 00 F2 0D 8B 18 B7 89 03 0D 00 00 00 00 F2 13 68 21 45 1B B0 0F 00 00 00 00 F2 1B 45 0C F3 1B F1 07 00 00 00 00 F2 1C B9 11 08 C5 9F 0C 00 00 00 00 F2 , 161 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 174 2, 129026, 2, 255, 8, 73 FC E3 2A 02 00 FF FF , 30 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 239 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 93 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 179 2, 129026, 2, 255, 8, 74 FC E3 2A 03 00 FF FF , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 138 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 01 00 00 00 04 59 02 01 00 01 04 01 00 00 00 , 116 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 248 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 38 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 230 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 147 2, 129026, 2, 255, 8, 75 FC E3 2A 02 00 FF FF , 85 7, 59904, 1, 255, 3, 00 EE 00 , 233 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 130 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 207 2, 129026, 2, 255, 8, 76 FC E3 2A 02 00 FF FF , 238 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 08 4D 02 01 00 00 00 02 00 00 00 , 129 6, 60928, 0, 255, 8, 17 40 22 22 00 82 32 C0 , 24 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 193 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 44 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 45 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 29 2, 129026, 2, 255, 8, 77 FC E3 2A 02 00 FF FF , 137 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 185 2, 129025, 2, 255, 8, 1D BD B0 11 7C 83 88 CE , 92 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 35 2, 129026, 2, 255, 8, 78 FC E3 2A 02 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 81 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 246 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 190 2, 129026, 2, 255, 8, 79 FC E3 2A 02 00 FF FF , 99 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 237 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 144 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 89 2, 129026, 2, 255, 8, 7A FC E3 2A 02 00 FF FF , 253 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 137 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 44 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 244 2, 129026, 2, 255, 8, 7B FC E3 2A 02 00 FF FF , 152 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 36 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 199 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 141 2, 129026, 2, 255, 8, 7C FC E3 2A 02 00 FF FF , 49 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 235 3, 126992, 2, 255, 8, 7D F0 6A 3F 00 47 07 2A , 72 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 172 6, 129539, 2, 255, 8, 7D D3 5B 00 AD 00 73 00 , 8 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 251 3, 129029, 2, 255, 47, 7D 6A 3F 00 47 07 2A C0 03 80 50 DD 6D 1E 04 00 39 EB A4 64 8D 7B F4 0C 00 DD FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 87 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 92 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 196 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 184 2, 129026, 2, 255, 8, 7E FC E3 2A 02 00 FF FF , 32 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 242 6, 129540, 2, 255, 111, 7D FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 26 10 00 00 00 00 F2 07 C4 31 35 EB 15 0E 00 00 00 00 F2 08 B9 20 FB E0 7E 0D 00 00 00 00 F2 0B D0 24 AC 5A 04 0B 00 00 00 00 F2 0D 8B 18 B7 89 09 0D 00 00 00 00 F2 13 68 21 45 1B B1 0F 00 00 00 00 F2 1B 45 0C F3 1B D8 07 00 00 00 00 F2 1C B9 11 08 C5 85 0C 00 00 00 00 F2 , 150 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 84 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 248 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 95 2, 129026, 2, 255, 8, 7F FC E3 2A 03 00 FF FF , 186 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 147 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 249 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 240 2, 129026, 2, 255, 8, 80 FC E3 2A 03 00 FF FF , 85 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 01 00 00 00 00 00 07 19 02 01 00 00 00 02 00 00 00 , 180 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 47 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 148 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 140 2, 129026, 2, 255, 8, 81 FC E3 2A 03 00 FF FF , 240 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 0F 02 01 00 00 00 02 00 00 00 , 194 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 202 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 39 2, 129026, 2, 255, 8, 82 FC E3 2A 03 00 FF FF , 138 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 102 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 199 2, 129025, 2, 255, 8, 1E BD B0 11 7E 83 88 CE , 195 2, 129026, 2, 255, 8, 83 FC E3 2A 04 00 FF FF , 36 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 253 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 98 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 89 2, 129026, 2, 255, 8, 84 FC E3 2A 04 00 FF FF , 190 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 152 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 245 2, 129026, 2, 255, 8, 85 FC E3 2A 03 00 FF FF , 90 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 145 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 245 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 52 2, 129026, 2, 255, 8, 86 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 208 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 44 2, 129026, 2, 255, 8, 87 FC E3 2A 03 00 FF FF , 143 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 185 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 44 3, 126992, 2, 255, 8, 88 F0 6A 3F 10 6E 07 2A , 21 6, 129539, 2, 255, 8, 88 D3 69 00 F1 00 A4 00 , 137 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 33 3, 129029, 2, 255, 47, 88 6A 3F 10 6E 07 2A 40 21 81 ED DD 6D 1E 04 00 2D AF 23 65 8D 7B F4 BD 8E DC FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 196 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 101 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 197 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 194 2, 129026, 2, 255, 8, 89 FC E3 2A 04 00 FF FF , 34 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 147 6, 129540, 2, 255, 99, 88 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 27 10 00 00 00 00 F2 07 C4 31 35 EB 0E 0E 00 00 00 00 F2 08 B9 20 FB E0 72 0D 00 00 00 00 F2 0B D0 24 AC 5A 0F 0B 00 00 00 00 F2 0D 8B 18 B7 89 01 0D 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 74 0C 00 00 00 00 F2 , 54 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 3 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 95 2, 129026, 2, 255, 8, 8A FC E3 2A 03 00 FF FF , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 158 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 253 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 251 2, 129026, 2, 255, 8, 8B FC E3 2A 03 00 FF FF , 90 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 1F 02 01 00 00 00 02 00 00 00 , 177 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 58 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 151 2, 129026, 2, 255, 8, 8C FC E3 2A 03 00 FF FF , 245 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 14 02 01 00 00 00 02 00 00 00 , 191 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 214 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 50 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 50 2, 129026, 2, 255, 8, 8D FC E3 2A 04 00 FF FF , 142 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 113 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 204 2, 129025, 2, 255, 8, 21 BD B0 11 80 83 88 CE , 206 2, 129026, 2, 255, 8, 8E FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 7 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 104 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 99 2, 129026, 2, 255, 8, 8F FC E3 2A 03 00 FF FF , 196 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 162 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 2 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 255 2, 129026, 2, 255, 8, 90 FC E3 2A 03 00 FF FF , 95 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 62 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 157 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 155 2, 129026, 2, 255, 8, 91 FC E3 2A 03 00 FF FF , 250 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 218 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 54 2, 129026, 2, 255, 8, 92 FC E3 2A 04 00 FF FF , 147 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 132 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 47 3, 126992, 2, 255, 8, 93 F0 6A 3F 20 95 07 2A , 225 6, 129539, 2, 255, 8, 93 D3 69 00 F1 00 A4 00 , 140 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 148 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 109 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 201 3, 129029, 2, 255, 47, 93 6A 3F 20 95 07 2A 40 C8 D4 CC DE 6D 1E 04 80 E4 27 BA 65 8D 7B F4 52 D6 DB FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 241 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 202 2, 129026, 2, 255, 8, 94 FC E3 2A 03 00 FF FF , 38 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 84 6, 129540, 2, 255, 99, 93 FD 08 01 73 14 43 66 1E 09 00 00 00 00 F2 03 E8 19 45 1B 29 10 00 00 00 00 F2 07 C4 31 35 EB 06 0E 00 00 00 00 F2 08 B9 20 FB E0 63 0D 00 00 00 00 F2 0B D0 24 AC 5A 29 0B 00 00 00 00 F2 0D 8B 18 B7 89 07 0D 00 00 00 00 F2 13 68 21 45 1B 91 0F 00 00 00 00 F2 1C B9 11 08 C5 5F 0C 00 00 00 00 F2 , 177 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 11 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 102 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 104 2, 129026, 2, 255, 8, 95 FC E3 2A 03 00 FF FF , 194 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 166 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 0 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 2 2, 129026, 2, 255, 8, 96 FC E3 2A 03 00 FF FF , 93 918002, 147482, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 0D 02 01 00 00 00 02 00 00 00 , 195 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 66 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 155 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 158 2, 129026, 2, 255, 8, 97 FC E3 2A 03 00 FF FF , 248 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 2F 02 01 00 00 00 02 00 00 00 , 164 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 222 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 54 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 57 2, 129026, 2, 255, 8, 98 FC E3 2A 03 00 FF FF , 146 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 121 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 208 2, 129025, 2, 255, 8, 25 BD B0 11 82 83 88 CE , 213 2, 129026, 2, 255, 8, 99 FC E3 2A 03 00 FF FF , 45 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 18 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 107 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 110 2, 129026, 2, 255, 8, 9A FC E3 2A 03 00 FF FF , 200 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 173 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 4 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 9 2, 129026, 2, 255, 8, 9B FC E3 2A 04 00 FF FF , 97 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 73 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 158 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 165 2, 129026, 2, 255, 8, 9C FC E3 2A 05 00 FF FF , 250 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 223 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 51 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 126 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 227 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 59 2, 129026, 2, 255, 8, 9D FC E3 2A 05 00 FF FF , 142 3, 126992, 2, 255, 8, 9E F0 6A 3F 30 BC 07 2A , 217 6, 129539, 2, 255, 8, 9E D3 5B 00 AD 00 73 00 , 62 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 204 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 168 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 250 3, 129029, 2, 255, 47, 9E 6A 3F 30 BC 07 2A 40 8B 28 52 DF 6D 1E 04 80 0C B2 CB 65 8D 7B F4 CC 0D DB FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 39 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 4 2, 129026, 2, 255, 8, 9F FC E3 2A 05 00 FF FF , 86 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 194 6, 129540, 2, 255, 111, 9E FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 31 10 00 00 00 00 F2 07 C4 31 35 EB 04 0E 00 00 00 00 F2 08 B9 20 FB E0 57 0D 00 00 00 00 F2 0B D0 24 AC 5A 2C 0B 00 00 00 00 F2 0D 8B 18 B7 89 FE 0C 00 00 00 00 F2 13 68 21 45 1B 99 0F 00 00 00 00 F2 1B 45 0C F3 1B 57 06 00 00 00 00 F2 1C B9 11 08 C5 3F 0C 00 00 00 00 F2 , 29 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 69 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 152 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 162 2, 129026, 2, 255, 8, A0 FC E3 2A 04 00 FF FF , 244 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 225 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 51 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 61 2, 129026, 2, 255, 8, A1 FC E3 2A 04 00 FF FF , 142 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 168 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 124 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 205 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 217 2, 129026, 2, 255, 8, A2 FC E3 2A 04 00 FF FF , 41 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 24 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 103 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 1B 02 01 00 00 00 02 00 00 00 , 182 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 117 2, 129026, 2, 255, 8, A3 FC E3 2A 05 00 FF FF , 195 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 179 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 1 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 16 2, 129026, 2, 255, 8, A4 FC E3 2A 05 00 FF FF , 93 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 79 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 157 2, 129025, 2, 255, 8, 27 BD B0 11 83 83 88 CE , 172 2, 129026, 2, 255, 8, A5 FC E3 2A 04 00 FF FF , 249 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 230 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 55 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 66 2, 129026, 2, 255, 8, A6 FC E3 2A 04 00 FF FF , 147 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 129 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 222 2, 129026, 2, 255, 8, A7 FC E3 2A 04 00 FF FF , 46 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 29 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 108 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 122 2, 129026, 2, 255, 8, A8 FC E3 2A 03 00 FF FF , 201 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 78 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 233 3, 126992, 2, 255, 8, A9 F0 6A 3F 40 E3 07 2A , 169 6, 129539, 2, 255, 8, A9 D3 5B 00 AD 00 73 00 , 69 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 188 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 178 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 255 3, 129029, 2, 255, 47, A9 6A 3F 40 E3 07 2A 40 94 04 35 E0 6D 1E 04 00 88 CD 39 66 8D 7B F4 2F 3B DA FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 24 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 14 2, 129026, 2, 255, 8, AA FC E3 2A 03 00 FF FF , 92 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 19 6, 129540, 2, 255, 111, A9 FD 09 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 30 10 00 00 00 00 F2 07 C4 31 35 EB F3 0D 00 00 00 00 F2 08 B9 20 FB E0 54 0D 00 00 00 00 F2 0B D0 24 AC 5A 2E 0B 00 00 00 00 F2 0D 8B 18 B7 89 E9 0C 00 00 00 00 F2 13 68 21 45 1B 97 0F 00 00 00 00 F2 1B 45 0C F3 1B 6B 06 00 00 00 00 F2 1C B9 11 08 C5 0B 0C 00 00 00 00 F2 , 111 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 79 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 155 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 172 2, 129026, 2, 255, 8, AB FC E3 2A 04 00 FF FF , 248 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 235 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 54 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 71 2, 129026, 2, 255, 8, AC FC E3 2A 04 00 FF FF , 146 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 31 02 01 00 00 00 02 00 00 00 , 157 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 134 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 208 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 227 2, 129026, 2, 255, 8, AD FC E3 2A 04 00 FF FF , 45 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 34 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 107 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 127 2, 129026, 2, 255, 8, AE FC E3 2A 04 00 FF FF , 200 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 26 02 01 00 00 00 02 00 00 00 , 171 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 190 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 7 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 26 2, 129026, 2, 255, 8, AF FC E3 2A 03 00 FF FF , 99 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 89 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 161 2, 129025, 2, 255, 8, 2B BD B0 11 84 83 88 CE , 182 2, 129026, 2, 255, 8, B0 FC E3 2A 03 00 FF FF , 254 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 238 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 60 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 74 2, 129026, 2, 255, 8, B1 FC E3 2A 03 00 FF FF , 152 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 137 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 214 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 230 2, 129026, 2, 255, 8, B2 FC E3 2A 03 00 FF FF , 51 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 37 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 114 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 130 2, 129026, 2, 255, 8, B3 FC E3 2A 02 00 FF FF , 207 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 24 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 236 3, 126992, 2, 255, 8, B4 F0 6A 3F 50 0A 08 2A , 116 6, 129539, 2, 255, 8, B4 D3 5B 00 AD 00 73 00 , 72 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 15 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 185 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 3 3, 129029, 2, 255, 47, B4 6A 3F 50 0A 08 2A C0 5E FF 26 E1 6D 1E 04 00 E9 62 E3 66 8D 7B F4 77 95 D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 107 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 21 2, 129026, 2, 255, 8, B5 FC E3 2A 03 00 FF FF , 95 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 100 6, 129540, 2, 255, 111, B4 FD 09 01 73 14 43 66 16 09 00 00 00 00 F2 03 E8 19 45 1B 2E 10 00 00 00 00 F2 07 C4 31 35 EB E4 0D 00 00 00 00 F2 08 B9 20 FB E0 5F 0D 00 00 00 00 F2 0B D0 24 AC 5A 14 0B 00 00 00 00 F2 0D 8B 18 B7 89 DD 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 E7 0B 00 00 00 00 F2 , 192 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 86 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 179 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 252 2, 129026, 2, 255, 8, B6 FC E3 2A 03 00 FF FF , 159 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 57 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 78 2, 129026, 2, 255, 8, B7 FC E3 2A 03 00 FF FF , 149 6, 60928, 1, 255, 8, 1A 40 22 22 00 82 32 C0 , 222 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 246 7, 59904, 0, 255, 3, 00 EE 00 , 108 6, 60928, 2, 255, 8, 71 01 A1 1C 00 91 78 C0 , 82 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 20 02 01 00 00 00 02 00 00 00 , 174 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 141 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 212 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 233 2, 129026, 2, 255, 8, B8 FC E3 2A 03 00 FF FF , 49 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 133 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 202 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 41 2, 129026, 2, 255, 8, B9 FC E3 2A 05 00 FF FF , 109 918002, 147479, 26, 00 00 00 00 02 03 02 00 00 01 00 01 00 00 00 07 15 02 01 00 00 00 02 00 00 00 , 186 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 197 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 32 2, 129026, 2, 255, 8, BA FC E3 2A 07 00 FF FF , 98 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 96 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 161 2, 129025, 2, 255, 8, 2F BD B0 11 87 83 88 CE , 188 2, 129026, 2, 255, 8, BB FC E3 2A 06 00 FF FF , 254 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 251 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 60 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 87 2, 129026, 2, 255, 8, BC FC E3 2A 06 00 FF FF , 153 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 150 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 214 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 242 2, 129026, 2, 255, 8, BD FC E3 2A 06 00 FF FF , 51 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 50 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 142 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 207 2, 129026, 2, 255, 8, BE FC E3 2A 05 00 FF FF , 114 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 227 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 238 3, 126992, 2, 255, 8, BF F0 6A 3F 60 31 08 2A , 64 6, 129539, 2, 255, 8, BF D3 5B 00 AD 00 73 00 , 75 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 66 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 197 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 3 3, 129029, 2, 255, 47, BF 6A 3F 60 31 08 2A 00 40 C9 66 E1 6D 1E 04 80 9A D2 D6 66 8D 7B F4 D9 0B D9 FE FF FF FF FF 10 FC 09 5B 00 C4 00 65 F3 FF FF 00 FF FF FF FF , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 33 2, 129026, 2, 255, 8, C0 FC E3 2A 05 00 FF FF , 95 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 160 6, 129540, 2, 255, 111, BF FD 09 01 73 14 43 66 28 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB DA 0D 00 00 00 00 F2 08 B9 20 FB E0 60 0D 00 00 00 00 F2 0B D0 24 AC 5A FF 0A 00 00 00 00 F2 0D 8B 18 B7 89 DC 0C 00 00 00 00 F2 13 68 21 45 1B 9E 0F 00 00 00 00 F2 1B 45 0C F3 1B 75 06 00 00 00 00 F2 1C B9 11 08 C5 C1 0B 00 00 00 00 F2 , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 97 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 190 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 159 2, 129026, 2, 255, 8, C1 FC E3 2A 05 00 FF FF , 252 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 90 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 151 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 253 2, 129026, 2, 255, 8, C2 FC E3 2A 04 00 FF FF , 59 918002, 147482, 26, 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 07 13 02 01 00 00 00 02 00 00 00 , 187 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 245 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 49 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 153 2, 129026, 2, 255, 8, C3 FC E3 2A 04 00 FF FF , 213 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 145 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 204 918002, 147479, 26, 00 00 00 00 02 02 02 00 00 00 00 00 00 00 00 06 34 02 01 00 00 00 02 00 00 00 , 159 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 52 2, 129026, 2, 255, 8, C4 FC E3 2A 04 00 FF FF , 112 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 44 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 10 2, 129026, 2, 255, 8, C5 FC E3 2A 05 00 FF FF , 101 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 200 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 0 2, 129025, 2, 255, 8, 30 BD B0 11 87 83 88 CE , 107 2, 129026, 2, 255, 8, C6 FC E3 2A 05 00 FF FF , 164 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 6 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 63 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 99 2, 129026, 2, 255, 8, C7 FC E3 2A 05 00 FF FF , 155 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 162 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 254 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 54 2, 129026, 2, 255, 8, C8 FC E3 2A 04 00 FF FF , 219 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 154 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 209 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 61 2, 129026, 2, 255, 8, C9 FC E3 2A 04 00 FF FF , 117 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 14 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 205 3, 126992, 2, 255, 8, CA F0 6A 3F 70 58 08 2A , 177 6, 129539, 2, 255, 8, CA D3 69 00 F0 00 A4 00 , 113 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 20 3, 129029, 2, 255, 47, CA 6A 3F 70 58 08 2A 80 D7 66 B9 E1 6D 1E 04 80 B8 C4 C7 66 8D 7B F4 17 71 D8 FE FF FF FF FF 10 FC 08 69 00 07 01 65 F3 FF FF 00 FF FF FF FF , 112 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 47 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 100 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 212 2, 129026, 2, 255, 8, CB FC E3 2A 04 00 FF FF , 9 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 1 6, 129540, 2, 255, 99, CA FD 08 01 73 14 43 66 24 09 00 00 00 00 F2 03 E8 19 45 1B 28 10 00 00 00 00 F2 07 C4 31 35 EB D7 0D 00 00 00 00 F2 08 B9 20 FB E0 52 0D 00 00 00 00 F2 0B D0 24 AC 5A F0 0A 00 00 00 00 F2 0D 8B 18 B7 89 CB 0C 00 00 00 00 F2 13 68 21 45 1B A2 0F 00 00 00 00 F2 1C B9 11 08 C5 96 0B 00 00 00 00 F2 , 93 2, 129025, 2, 255, 8, 31 BD B0 11 87 83 88 CE , 205 2, 129026, 2, 255, 8, CC FC E3 2A 04 00 FF FF , 1

tkurki commented 10 years ago

Dear @KadarMarine / Keith,

I appreciate your efforts to share your work.

They are somewhat misplaced though.

If somebody who uses Canboat would like to benefit from your work they would have to find your comments here - under a project that can use Canboat but in itself contains no Canboat code or code interfacing with Nmea 2000 equipment.

Furthermore GitHub's Gist is for sharing code snippets like you've posted here. Gists can be versioned, so instead of posting updates and amendments you can change the snippet directly. Gists are easier to read online, copypaste or download. You can also create several gists for code, sample output etc and reference them in a Github issue discussion.

Gists are ok for small code snippets, but if you want to really contribute to the community you should consider creating a separate project for your code on Github. To make things simple for somebody to use your code you should create a README file in addition to the actual code. README should contain instructions to get the code up and running, for example instructions for compiling and starting the software. READMEs are also indexed by Google and other search engines, so adding a description with the relevant keywords makes your code easy to find.

If you create additions to an existing Github project such as Canboat you should consider creating a pull request containing your additions. You can find more information about contributing at https://guides.github.com/activities/contributing-to-open-source/.

Yours,

Teppo

KadarMarine commented 10 years ago

Dear Teppo,

I appreciate the pointers. As I said, I'm new to GitHub.

Presently my time at home grows short, as I am preparing for another 6 month tour overseas.

If I can find the time I will try to follow through, by posting the code in Gist. In the meantime I will be happy to answer any queries concerning the comport thread - which the code snippet is concerned with.

Again, your patience and guidance on this is much appreciated:)

Keith

On 6/15/2014 2:19 PM, tkurki wrote:

Dear @KadarMarine https://github.com/KadarMarine / Keith,

I appreciate your efforts to share your work.

They are somewhat misplaced though.

If somebody who uses Canboat would like to benefit from your work they would have to find your comments here - under a project that can use Canboat but in itself contains no Canboat code or code interfacing with Nmea 2000 equipment.

Furthermore GitHub's Gist https://gist.github.com/ is for sharing code snippets like you've posted here. Gists can be versioned, so instead of posting updates and amendments you can change the snippet directly. Gists are easier to read online, copypaste or download. You can also create several gists for code, sample output etc and reference them in a Github issue discussion.

Gists are ok for small code snippets, but if you want to really contribute to the community you should consider creating a separate project for your code on Github. To make things simple for somebody to use your code you should create a README file in addition to the actual code. README should contain instructions to get the code up and running, for example instructions for compiling and starting the software. READMEs are also indexed by Google and other search engines, so adding a description with the relevant keywords makes your code easy to find.

If you create additions to an existing Github project such as Canboat you should consider creating a pull request containing your additions. You can find more information about contributing at https://guides.github.com/activities/contributing-to-open-source/.

Yours,

Teppo

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-46123237.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com

KadarMarine commented 10 years ago

All,

I have posted this code snippet in a GitHub Gist:

KadarMarine/Actisense Serial Thread C++

I hope I did this correctly.

Best regards, Keith (Kadar)

On 6/15/2014 2:19 PM, tkurki wrote:

Dear @KadarMarine https://github.com/KadarMarine / Keith,

I appreciate your efforts to share your work.

They are somewhat misplaced though.

If somebody who uses Canboat would like to benefit from your work they would have to find your comments here - under a project that can use Canboat but in itself contains no Canboat code or code interfacing with Nmea 2000 equipment.

Furthermore GitHub's Gist https://gist.github.com/ is for sharing code snippets like you've posted here. Gists can be versioned, so instead of posting updates and amendments you can change the snippet directly. Gists are easier to read online, copypaste or download. You can also create several gists for code, sample output etc and reference them in a Github issue discussion.

Gists are ok for small code snippets, but if you want to really contribute to the community you should consider creating a separate project for your code on Github. To make things simple for somebody to use your code you should create a README file in addition to the actual code. README should contain instructions to get the code up and running, for example instructions for compiling and starting the software. READMEs are also indexed by Google and other search engines, so adding a description with the relevant keywords makes your code easy to find.

If you create additions to an existing Github project such as Canboat you should consider creating a pull request containing your additions. You can find more information about contributing at https://guides.github.com/activities/contributing-to-open-source/.

Yours,

Teppo

— Reply to this email directly or view it on GitHub https://github.com/tkurki/navgauge/issues/5#issuecomment-46123237.


This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com