Skip to content

Commit b73c2e0

Browse files
committed
modify:bcd codec support
1 parent 6572662 commit b73c2e0

File tree

2 files changed

+123
-2
lines changed

2 files changed

+123
-2
lines changed

XEngine_Source/XEngine_ModuleHelp/ModuleHelp_JT1078/ModuleHelp_JT1078.cpp

Lines changed: 118 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ bool CModuleHelp_JT1078::ModuleHelp_JT1078_BCDToString(XBYTE bySIMNumber[6], XCH
4646
}
4747
for (int i = 0, nPos = 0; i < 6; i++)
4848
{
49-
Cryption_Codec_BCDTo2Bytes(bySIMNumber[i], &ptszMsgBuffer[nPos]);
49+
ModuleHelp_JT1078_BCDTo2Bytes(bySIMNumber[i], &ptszMsgBuffer[nPos]);
5050
nPos += 2;
5151
}
5252
return true;
@@ -81,8 +81,124 @@ bool CModuleHelp_JT1078::ModuleHelp_JT1078_StringToBCD(LPCXSTR lpszMsgBuffer, XB
8181
}
8282
for (int i = 0, nPos = 0; i < 6; i++)
8383
{
84-
Cryption_Codec_2BytesToBCD(&lpszMsgBuffer[i], pbySIMNumber[nPos]);
84+
ModuleHelp_JT1078_2BytesToBCD(&lpszMsgBuffer[i], pbySIMNumber[nPos]);
8585
nPos += 2;
8686
}
8787
return true;
88+
}
89+
//////////////////////////////////////////////////////////////////////////
90+
// 保护函数
91+
//////////////////////////////////////////////////////////////////////////
92+
/********************************************************************
93+
函数名称:ModuleHelp_JT1078_2BytesToBCD
94+
函数功能:两个字符转BCD编码
95+
参数.一:lpszSource
96+
In/Out:In
97+
类型:常量字符指针
98+
可空:N
99+
意思:输入一段要编码的数据
100+
参数.二:chBCD
101+
In/Out:Out
102+
类型:无符号字符
103+
可空:N
104+
意思:输出编码好的数据
105+
返回值
106+
类型:无
107+
意思:
108+
备注:
109+
*********************************************************************/
110+
void CModuleHelp_JT1078::ModuleHelp_JT1078_2BytesToBCD(LPCXSTR lpszSource, XBYTE& chBCD)
111+
{
112+
ModuleHelp_IsErrorOccur = false;
113+
114+
XBYTE uszBsd;
115+
uszBsd = lpszSource[0] - '0';
116+
uszBsd = uszBsd << 4;
117+
chBCD |= uszBsd;
118+
uszBsd = lpszSource[1] - '0';
119+
uszBsd = uszBsd & 0x0f;
120+
chBCD |= uszBsd;
121+
}
122+
/********************************************************************
123+
函数名称:ModuleHelp_JT1078_BCDTo2Bytes
124+
函数功能:BCD编码转字符
125+
参数.一:chBCD
126+
In/Out:In
127+
类型:无符号字符
128+
可空:N
129+
意思:输入要解码的BCD字符
130+
参数.二:ptszDest
131+
In/Out:Out
132+
类型:字符指针
133+
可空:N
134+
意思:输出解码后的字符串
135+
返回值
136+
类型:无
137+
意思:
138+
备注:
139+
*********************************************************************/
140+
void CModuleHelp_JT1078::ModuleHelp_JT1078_BCDTo2Bytes(XBYTE chBCD, XCHAR* ptszDest)
141+
{
142+
ModuleHelp_IsErrorOccur = false;
143+
144+
XBYTE uszBsd;
145+
146+
uszBsd = chBCD & 0x0f;
147+
ptszDest[1] = uszBsd + '0';
148+
uszBsd = chBCD & 0xf0;
149+
uszBsd = uszBsd >> 4;
150+
ptszDest[0] = uszBsd + '0';
151+
}
152+
/********************************************************************
153+
函数名称:ModuleHelp_JT1078_BCDToInt
154+
函数功能:BCD编码转整数型
155+
参数.一:chBCD
156+
In/Out:In
157+
类型:无符号字符
158+
可空:N
159+
意思:输入要解码的BCD字符
160+
返回值
161+
类型:整数型
162+
意思:输出解码数据
163+
备注:
164+
*********************************************************************/
165+
int CModuleHelp_JT1078::ModuleHelp_JT1078_BCDToInt(XBYTE chBCD)
166+
{
167+
ModuleHelp_IsErrorOccur = false;
168+
169+
XBYTE uszBsd1, uszBsd2, uszBsd3;
170+
171+
uszBsd1 = chBCD & 0x0f;
172+
uszBsd2 = chBCD & 0xf0;
173+
uszBsd2 = uszBsd2 >> 4;
174+
uszBsd3 = uszBsd2 * 10 + uszBsd1;
175+
return uszBsd3;
176+
}
177+
/********************************************************************
178+
函数名称:ModuleHelp_JT1078_IntToBCD
179+
函数功能:将00-99的整数存放成1个字节的BCD
180+
参数.一:uszInt
181+
In/Out:In
182+
类型:无符号字符
183+
可空:N
184+
意思:输入要编码的整数
185+
返回值
186+
类型:无符号字符
187+
意思:输出编码数据
188+
备注:
189+
*********************************************************************/
190+
XBYTE CModuleHelp_JT1078::ModuleHelp_JT1078_IntToBCD(XBYTE uszInt)
191+
{
192+
ModuleHelp_IsErrorOccur = false;
193+
194+
XBYTE usBCD;
195+
XBYTE nRet;
196+
197+
nRet = 0;
198+
usBCD = uszInt / 10;
199+
usBCD = usBCD << 4;
200+
nRet |= usBCD;
201+
usBCD = uszInt % 10;
202+
nRet |= usBCD;
203+
return nRet;
88204
}

XEngine_Source/XEngine_ModuleHelp/ModuleHelp_JT1078/ModuleHelp_JT1078.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,10 @@ class CModuleHelp_JT1078
2020
public:
2121
bool ModuleHelp_JT1078_BCDToString(XBYTE bySIMNumber[6], XCHAR* ptszMsgBuffer);
2222
bool ModuleHelp_JT1078_StringToBCD(LPCXSTR lpszMsgBuffer, XBYTE* pbySIMNumber);
23+
protected:
24+
void ModuleHelp_JT1078_2BytesToBCD(LPCXSTR lpszSource, XBYTE& chBCD);
25+
void ModuleHelp_JT1078_BCDTo2Bytes(XBYTE chBCD, XCHAR* ptszDest);
26+
int ModuleHelp_JT1078_BCDToInt(XBYTE chBCD);
27+
XBYTE ModuleHelp_JT1078_IntToBCD(XBYTE uszInt);
2328
private:
2429
};

0 commit comments

Comments
 (0)