📄 frame.h
字号:
//-----------------------------------------------------------------------------
// $Id: frame.h,v 1.0.0 2004/01/13
//-----------------------------------------------------------------------------
//
// ProfiM - PROFIBUS MASTER DRIVER FOR WINDOWS NT/2000
//
// Author:
// Pavel Trnka, CTU FEE
// trnkap@seznam.cz
// With help and advices from:
// Ing. Petr Smolik, CTU FEE
// Ing. Pavel Pisa, CTU FEE
// Ing. Pavel Burget, CTU FEE
//
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
#ifndef frameH
#define frameH
//***************************************************************************
#include "vardef.h"
//***************************************************************************
typedef enum
{
FT_Token,
FT_RequestFDLStatuswithReply,
FT_Reply,
FT_ShortAcknowledge,
FT_SDNLow,
FT_SDNHigh,
FT_SRDLow,
FT_SRDHigh,
FT_RequestIdentwithReply,
FT_RequestLSAPStatuswithReply
} TFrameType;
//***************************************************************************
typedef struct
{
int FCS; // Frame Control Sum
int LEr; // repeated LEngth
int ED; // End Delimiter
BOOLEAN FCB; // Frame Control Bit
BOOLEAN FCV; // Frame Control bit Valid
// nasledujici jsou platne jen pokud je typ prijateho framu (FrameType) obsahuje (i nektere predchozi)
UBYTE DA; // Destination Address
UBYTE DSAP; // Destination Service Access Point
UBYTE SA; // Source Address
UBYTE SSAP; // Source Service Access Point
UBYTE FC; // Frame Control
int LE; // LEnght
TACK ACK;
TStationStatus StnType; // platne pouze pro FrameType=FT_Reply;
UCHAR Data[246]; // pozor neni String !!!
int Data_length;
TFrameType FrameType;
BOOLEAN Valid; // urcuje platnost naposledy dekodovaneho framy metodou (DecodeFrame)
} TPBFrame, *PTPBFrame;
void PBFrame_Init( PTPBFrame PBF );
void PBFrame_DecodeFrame( PTPBFrame PBF,
PUCHAR frame,
int FrameLen,
int TS,
int DefaultSAP );
BOOLEAN PBFrame_FindFrame( PUCHAR buffer, int BufLen, int *length ); // hleda na zacatku retezce frame a vraci jeho delku
int PBFrame_FindStartDelimiter( PUCHAR buffer, int BufLen );
BOOLEAN IsStartDelimiterSDx( char ch );
/*
String HexStringToString(String hs);
String StringDataToHex(String frame);
String BuildFrameNoData(int _DA, int _SA, int _FC);
*/
//***************************************************************************
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -