?? shppprotocol.h
字號:
/*******************************************
* file name: SHPProtocol.h
* date: 2002.7.24
* 用途: 定義自助話打印協議SHPP
* 作者: 林游海
*******************************************/
#if !defined(_SHPPPROTOCOL_H_LINYOUHAI)
#define _SHPPPROTOCOL_H_LINYOUHAI
#include "KNString.h"
#define PACKETBUFFER 5120 //10240
enum
{
shppLookCommMethod = 0, //0000 查看命令ID說明
shppGetInfoMethod = 1, //0001 獲取本機信息,獲取標題\t
shppLoginMethod = 2, //0002 密碼登入
shppPrintMethods = 3, //0003 打印月份1重打,0為正常
shppListMethod = 4, //0004 列出所有營業廳管理員的代號、ID和PASS
shppChangeMethod = 5, //0005 修改密碼(營業廳管理員只能改自己的密碼)
shppRecordMethod = 6, //0006 打印某個時間段的打印記錄
shppAddPrintMethod = 7, //0007 增加一個打印機(sever admi)
shppDeletePrintMethod = 8, //0008 刪除一個打印機
shppAddPosMethod = 9, //0009 增加一個營業廳
shppDeletePosMethod = 10, //0010 刪除一個營業廳
shppFindPosMethod = 11, //0011 查找營業廳的ID
shppPrintFeeMethod = 12, //0012 1為欠費可打0為不能打印
shppPrintDegreeMethod = 13, //0013 限制打印次數
shppPrintEnd = 14, //0014 打印結束
shppLiveOpdata = 15, //0015 在線更新客戶程序
shppFileOpdataEnd = 16, //0016 文件更新完成
shppLiveOpdataEnd = 17, //0017 在線更新完成
shppServerlife = 9999,//9999 打印結束
shppNumMethods = 18, //0016
shppIllegalMethod = 18
};
typedef UInt32 KN_SHPPMethod;
enum
{
shppOK = 0, //0000 請求處理成功
shppRegisterErr, //0001 沒有注冊非法的IP地址
shppPopedomErr, //0002 你沒有這個權限
shppPasswordErr, //0003 密碼錯誤
shppRequestErr, //0004 非法請求
shppParameterErr, //0005 參數出錯
shppPrintErr, //0006 不能打印這月份的清單
shppNotListErr, //0007 本月沒有清單
shppHaveFeeErr, //0008 你有欠費
shppVersion, //0009 版本號出錯
shppLost, //0010 操作失敗
shppDefaultIsPrint, //0011 默認密碼是否充許打印:1為充許
shppLimitDay, //0012 今天的話單已打印!
shppSystemErr, //0013 系統忙,請稍后!
shppPrintMonthErr, //0014 密碼錯誤你沒有這個權限
shppH2ServerErr, //0015 你沒有超級管理員的權限
shppPopedomErr3, //0016 營業廳管理員沒有這個權限
shppPopedomErr4, //0017 用戶打印你沒有這個權限
shppPopedomErr5, //0018 電話號碼與上次不一樣你沒有這個權限
shppPrintLimit , //0019 不能自定義查詢你沒有這個權限
shppPhoneErr, //0020 電話號碼與上次不一樣你沒有這個權限
shppOpdataErr, //0021 在線更新錯誤
shppServerErr, //0022 服務器發生錯誤,請重新打印!
shppTryAgain, //0022
shpp9000, //0023 此號碼辦理了詳單屏蔽業務,不能打印
shpp9001, //0024 連接營業數據庫失敗
shpp9002, //0024 此號碼是超低端用戶,不能打印
shppPasserr2,//0025 服務器獲取隨機密碼失敗,請您再試一次
shpp2pass,//
shppnoadrlist,//沒有相應的中間件地址
shppnouser,
shppNotDefine //0023 功能未實現
};
typedef UInt32 KN_SHPPError;
enum
{
knVersion = 0,
knVersionOffset = 2,
knLength = 2,
knLengthOffset = 5,
knType = 7,
knTypeOffset = 4,
knTel = 11,
knTelOffset = 20,
knKeep = 31,
knKeepOffset = 8,
knSeq = 39,
knSeqOffset = 4,
knM = 43,
knMOffset = 1,
knResult = 44,
knResultOffset = 4,
knPacketSize = 48,
knPacketMinSize = 50,
};
class CSHPPProtocol
{
public:
//METHODS
// Method enumerated type definition in SFSS_SHPPProtocol.h
//獲取服務類型
static UInt16 GetServerType(const LPSCHAR lpRequestHead);
//獲取包體的長度
static UInt32 GetPacketLen(const LPSCHAR lpRequestHead);
//獲取包體的標志位
static UInt32 GetPacketM(const LPSCHAR lpRequestHead);
static LPSCHAR GetPacketBuffer(const LPSCHAR lpRequestHead)
{return lpRequestHead + knPacketSize;}
static UInt16 GetTel(const LPSCHAR lpRequestHead,char *pTel);
// VERSIONS
enum SHPPVersion
{
k10Version = 0,
kIllegalVersion = 1
};
//版本號
static SHPPVersion GetVersion(CStrPtrLen &versionStr);
static CStrPtrLen& GetVersionString(SHPPVersion version)
{ return s_splVersionString[version]; }
static CStrPtrLen& GetErrorString(UInt16 nError)
{ return s_splErrorString[nError];}
//寫包頭協議
//寫版本號---------2-----
// static void PutVersion(const LPSCHAR lpRequestHead);
//寫包體的長度-----8-----
// static void PutPacketLen(const LPSCHAR lpRequestHead,UInt16 nPacketLen);
//寫服務類型-------4-----
// static void PutServerType(const LPSCHAR lpRequestHead,UInt16 nServerType);
//寫保留字---------8-----
// static void PutKeep(const LPSCHAR lpRequestHead);
//寫包序-----------4-----
// static void PutSeq(const LPSCHAR lpRequestHead,UInt16 nSeq);
//寫M標志位--------1-----
// static void PutM(const LPSCHAR lpRequestHead,UInt16 nPacketLen);
//寫result結果狀態-4-----
// static void PutResult(const LPSCHAR lpRequestHead,UInt16 nPacketLen);
//寫入包體,格式定好后調用此函數
// static void PutPacket(const LPSCHAR lpRequestHead);
static char* s_pchEOL; // 指向"\r\n"
static UInt32 s_unEOLLen; // "\r\n"的長度 = 2
private:
//應答包的緩存
// char m_chPacket[PACKETBUFFER];
//包體的長度
// UInt32 m_nPacketPos;
static CStrPtrLen s_splVersionString[];
static CStrPtrLen s_splErrorString[];
};
/*
包頭:
版本|<----長度8---->|<類型4>|<--保留位8---->|<包序4>|1|<結果4>|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=1| length |Type | keep |seq |M| result|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
V = 10 版本號1.0;
length 包體的長度;
Type 服務類型ID;
keep 目前為8個0;
seq 包的序號,在應答包M = 0時有效;
M 1時為最后一個包,無后續包;M = 0時為非最后一個包,有后續包;
result 結果代碼;
*/
#endif //_SHPPPROTOCOL_H_LINYOUHAI
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -