QuakeGod
2023-02-22 b6290b94cac76a5634cd90b495b65d91ee92d85e
Inc/KLink.h
@@ -28,8 +28,8 @@
   
}   ;
enum {KLSignStart='%',
         KLSignReply='U',
enum {KLSignStart='%',   //0x25
         KLSignReply='U',   //0x55
         KLSignEnd=0x0D,
         KLMaxPacketLength=64,
};
@@ -61,7 +61,9 @@
      KLCmdSetPass,
      KLCmdEraseAll,
      KLCmdReadProgram,
      KLCmdStartProgram,
      KLCmdWriteProgram,
      KLCmdFinishProgram,
      KLCmdRead1Bit = 0x21,            //ReadSingleBit
      KLCmdWrite1Bit = 0x22,            //WriteSingleBit
@@ -83,6 +85,8 @@
      KLCmdReadData = 0x35,
      KLCmdWriteData = 0x36 ,
      
      KLCmdStopBlinkLED = 0x4F,
      KLCmdBlinkLED = 0x50,
      
      KLCmdReadProg = 0x51,
      KLCmdWriteProg,
@@ -90,6 +94,8 @@
      KLCmdWriteSysCfg,
      KLCmdSaveSysCfg,
      KLCmdSaveRunStat,
      KLCmdReadRunStat,
      KLCmdClearRunStat,
      
      KLCmdEraseFlashPage = 0x61,
      KLCmdWriteToFlash = 0x62,
@@ -102,8 +108,11 @@
      KLCmdResetMachine,
      KLCmdGetUid,
      KLCmdSetTime,
      KLCmdMC,
      KLCmdGetSN,
      KLCmdReadFactData,
      KLCmdWriteFactData,
      KLCmdMC = 0x70,
      KLCmdMD,
      KLCmdMG,
      
@@ -119,62 +128,13 @@
      KLInfoTypeEventLogCount = 3,
   };
   
   enum enKLCoilTypes
   {
      KLCoilTypeX = 0,      //X Input
      KLCoilTypeY = 1,      //Y Output
      KLCoilTypeR = 2,      //R register
      KLCoilTypeLX = 3,      //Link register
      KLCoilTypeLY = 4,      //Link register
      KLCoilTypeT = 5,      //Timer
      KLCoilTypeC = 5,      //Counter
      KLCoilTypeLR = 6,      //Link register
   };
   enum enKLDataTypes
   {
      KLDataTypeWX = 0,
      KLDataTypeWY = 1,
      KLDataTypeWR = 2,
      KLDataTypeWLX = 3,
      KLDataTypeWLY = 4,
      KLDataTypeDT = 5,
      KLDataTypeSDT = 6,
      KLDataTypeSV = 7,
      KLDataTypeEV = 8,
      KLDataTypeLD = 9,
      KLDataSysCfg = 25,
      KLDataTypeFlash = 33 ,
      KLDataTypeTest = 254,
   };
enum enKLDataCounts
{
   KLCoilXCount=256,
   KLCoilYCount=256,
   KLCoilRCount=256,
   KLCoilTCount=64,
   KLCoilCCount=64,
   KLCoilLCount=128,
   KLDataDTCount = 256,
   KLDataSDTCount = 256,
   KLDataWXCount = 16,
   KLDataWYCount = 16,
   KLDataWRCount = 16,
   KLDataSVCount = 64,
   KLDataEVCount = 64,
   KLDataLDCount = 64,
   KLDataWLCount = 8,
};
extern unsigned char KLPacketBuf1[256];
extern unsigned char KLPacketBuf2[256];
extern unsigned char KLBufferIn[16];
extern unsigned char KLBufferOut[16];
extern unsigned char nKLAddr;
extern unsigned char nKLStationId;
extern unsigned char nKLSeq;
extern int KLThisuS;
@@ -203,7 +163,7 @@
typedef struct tagKLReqPktHdr
{
   unsigned char ReqStSgn;      //
   unsigned char DstAddr;      //
   unsigned char DstHost;      //
   unsigned char Stat;            //
   unsigned char nCMD;            //
   unsigned char nType1;         //
@@ -213,7 +173,7 @@
typedef struct tagKLPingReqPkt
{
   unsigned char ReqStSgn;      //
   unsigned char DstAddr;      //
   unsigned char DstHost;      //
   unsigned char nCMD;            //
   unsigned char nSize;         //
   
@@ -222,7 +182,7 @@
typedef struct tagKLRplyPktHdr
{
   unsigned char RplyStSgn;   //
   unsigned char DstAddr;      //
   unsigned char DstHost;      //
   unsigned char nStatus;      //   
   unsigned char nRplyCMD;      //
   unsigned char nSize1;         //
@@ -232,20 +192,20 @@
/*
typedef struct tagKLPktHdr
{
      unsigned char StSign;      //起始标记
      unsigned char SrcAddr;   //源地址
      unsigned char DstAddr;   //目标地址
      unsigned char nCMD;      //命令
      unsigned char StSign;      //起始标记
      unsigned char SrcAddr;   //源地址
      unsigned char DstHost;   //目标地址
      unsigned char nCMD;      //命令
   
}stKLPtHdr, * pKLPktHdr;
*/
/*
typedef struct tagKLRdPkt
{
      unsigned char StSign;      //起始标记
      unsigned char SrcAddr;   //源地址
      unsigned char DstAddr;   //目标地址
      unsigned char nCMD;      //命令
      unsigned char StSign;      //起始标记
      unsigned char SrcAddr;   //源地址
      unsigned char DstHost;   //目标地址
      unsigned char nCMD;      //命令
      unsigned char nType;
      unsigned char nAddr;   //
}stKLRdPkt,* pKLRdKpt;
@@ -253,28 +213,28 @@
/*
typedef struct tagKLPacket
   {
      unsigned char StSign;      //起始标记
      unsigned char SrcAddr;   //源地址
      unsigned char DstAddr;   //目标地址
      unsigned char nCMD;      //命令
      unsigned char nSEQ;      //序列号
      unsigned char LoadLen;   //数据载荷长度   不包括头部5个字节,不包括尾部BCC。
      unsigned char data[1];      //数据载荷,最末尾是BCC,数据长度为0时,实际也有一个数据。
      unsigned char StSign;      //起始标记
      unsigned char SrcAddr;   //源地址
      unsigned char DstHost;   //目标地址
      unsigned char nCMD;      //命令
      unsigned char nSEQ;      //序列号
      unsigned char LoadLen;   //数据载荷长度   不包括头部5个字节,不包括尾部BCC。
      unsigned char data[1];      //数据载荷,最末尾是BCC,数据长度为0时,实际也有一个数据。
   }stKLPacket,* pKLPacket;   
*/
unsigned char KLBCC(void * pData, int nSize);
unsigned char KLBCC(const void * pData, int nSize);
//
   /* Make a Packet and return Packet Length */
int KLMakeReqPacket(void * pBuf1,uchar Src, uchar Dst, uchar nType, uchar nSEQ, uchar DataLen, void *pData );
int KLMakeRplyPacket(void * pBuf1, uchar Dst, uchar Status, uchar nCmd, uchar DataLen, void *pData );
int KLMakeReqPacket(void * pBuf1, uchar Src, uchar Dst, uchar nType, uchar nSEQ, uchar DataLen, void *pData );
int KLMakeRplyPacket(void * pBuf1, uchar Dst, uchar Status, uchar nCmd, uchar DataLen, const void *pData );
/*   */
int KLCheckPacket(void * pBuf1,int len1);
int KLCheckPacket(int nChn, void * pBuf1, int len1);
/* */
int KLParsePacket(void * pBuf1, int Len1);
int KLParsePacket(int nChn, void * pBuf1, int Len1);
//int ReadData(void);