⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 高手啊,,帮我将这个c程序改写delphi吧。有难度的。有关pdu转码的问题 delphi - windows sdk-api - csdn社区 community_csdn_net.htm

📁 PDU协议解释,分析信息传输的具体指令,扩大实际数据量
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                gsmString2Bytes(pSrc, 
  &tmp,   2);         //   取长度   
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(tmp &nbsp; 
&amp; &nbsp; 1) &nbsp; tmp &nbsp; += &nbsp; 1; &nbsp; &nbsp; &nbsp; &nbsp; // 
&nbsp; 调整奇偶性 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; pSrc &nbsp; += &nbsp; 4; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; // &nbsp; 指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gsmSerializeNumbers(pSrc, &nbsp; 
pDst-&gt;TPA, &nbsp; tmp); &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 取TP-RA号码 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pSrc &nbsp; 
+= &nbsp; tmp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
TPDU段协议标识、编码方式、用户信息等 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
gsmString2Bytes(pSrc, &nbsp; (unsigned &nbsp; char*)&amp;pDst-&gt;TP_PID, &nbsp; 
2); &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 取协议标识(TP-PID) &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; pSrc &nbsp; += &nbsp; 2; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; // &nbsp; 指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; gsmString2Bytes(pSrc, &nbsp; (unsigned &nbsp; char*)&amp;pDst-&gt;TP_DCS, 
&nbsp; 2); &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 取编码方式(TP-DCS) &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; pSrc &nbsp; += &nbsp; 2; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; gsmSerializeNumbers(pSrc, &nbsp; pDst-&gt;TP_SCTS, &nbsp; 14); 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
服务时间戳字符串(TP_SCTS) &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pSrc 
&nbsp; += &nbsp; 14; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gsmString2Bytes(pSrc, &nbsp; 
&amp;tmp, &nbsp; 2); &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 用户信息长度(TP-UDL) &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pSrc &nbsp; += &nbsp; 2; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 指针后移 &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; if(pDst-&gt;TP_DCS &nbsp; == &nbsp; GSM_7BIT) &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
7-bit解码 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; nDstLength &nbsp; = &nbsp; gsmString2Bytes(pSrc, &nbsp; buf, &nbsp; tmp 
&nbsp; &amp; &nbsp; 7 &nbsp; ? &nbsp; (int)tmp &nbsp; * &nbsp; 7 &nbsp; / &nbsp; 
4 &nbsp; + &nbsp; 2 &nbsp; : &nbsp; (int)tmp &nbsp; * &nbsp; 7 &nbsp; / &nbsp; 
4); &nbsp; &nbsp; // &nbsp; 格式转换 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; gsmDecode7bit(buf, &nbsp; pDst-&gt;TP_UD, &nbsp; 
nDstLength); &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 转换到TP-DU &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nDstLength &nbsp; = 
&nbsp; tmp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; else &nbsp; if(pDst-&gt;TP_DCS &nbsp; == &nbsp; 
GSM_UCS2) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; UCS2解码 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nDstLength 
&nbsp; = &nbsp; gsmString2Bytes(pSrc, &nbsp; buf, &nbsp; tmp &nbsp; * &nbsp; 2); 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 格式转换 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nDstLength 
&nbsp; = &nbsp; gsmDecodeUcs2(buf, &nbsp; pDst-&gt;TP_UD, &nbsp; nDstLength); 
&nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 转换到TP-DU &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; } &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 8-bit解码 &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nDstLength &nbsp; = &nbsp; 
gsmString2Bytes(pSrc, &nbsp; buf, &nbsp; tmp &nbsp; * &nbsp; 2); &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 格式转换 &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nDstLength &nbsp; = 
&nbsp; gsmDecode8bit(buf, &nbsp; pDst-&gt;TP_UD, &nbsp; nDstLength); &nbsp; 
&nbsp; &nbsp; &nbsp; // &nbsp; 转换到TP-DU &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; } &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; // &nbsp; 返回目标字符串长度 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; return &nbsp; nDstLength; &nbsp; <BR>&nbsp; } &nbsp; <BR>&nbsp; 
<SPAN>问题点数:100、回复次数:11</SPAN><A 
href="http://topic.csdn.net/t/20050331/19/3898783.html#">Top</A> </P>
<DIV class=tagad><IFRAME 
src="高手啊,,帮我将这个C程序改写DELPHI吧。有难度的。有关PDU转码的问题 Delphi - Windows SDK-API - CSDN社区 community_csdn_net.files/Board.htm" 
frameBorder=0 scrolling=no></IFRAME></DIV>
<H3><STRONG><A class=anchor name=r_28688539>1 楼</A>WangMinYI(步行者)<INPUT class=user2 title="二级用户 该版得分小于等于500分,大于100分" type=button></STRONG><SPAN>回复于 
2005-03-31 19:39:57 得分 0 </SPAN></H3>
<P>请大家多多帮忙。。<A 
href="http://topic.csdn.net/t/20050331/19/3898783.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_28688551>2 楼</A>WangMinYI(步行者)<INPUT class=user2 title="二级用户 该版得分小于等于500分,大于100分" type=button></STRONG><SPAN>回复于 
2005-03-31 19:40:25 得分 0 </SPAN></H3>
<P>其实这个是非常有意义的。在GSM中用<A 
href="http://topic.csdn.net/t/20050331/19/3898783.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_28688934>3 楼</A>flyinwuhan(制怒·三思而后行)<INPUT class=star2 title="二星用户 该版得分小于等于30000分,大于10000分" type=button></STRONG><SPAN>回复于 
2005-03-31 20:00:02 得分 <EM>100</EM></SPAN></H3>
<P>// &nbsp; 短消息参数结构,编码/解码共用 &nbsp; <BR>&nbsp; // &nbsp; 其中,字符串以0结尾 &nbsp; 
<BR>&nbsp; type &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; SM_PARAM &nbsp; = 
&nbsp; record &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SCA:array[0..16-1] 
&nbsp; of &nbsp; char; &nbsp; // &nbsp; 短消息服务中心号码(SMSC地址) &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; TPA:array[0..16-1] &nbsp; of &nbsp; char// &nbsp; 
目标号码或回复号码(TP-DA或TP-RA) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TP_PID; 
&nbsp; char; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
用户信息协议标识(TP-PID) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TP_DCS; &nbsp; 
char; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
用户信息编码方式(TP-DCS) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
TP_SCTS:array[0..16-1] &nbsp; of &nbsp; char; &nbsp; &nbsp; &nbsp; // &nbsp; 
服务时间戳字符串(TP_SCTS), &nbsp; 接收时用到 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
TP_UD:array[0..161-1] &nbsp; of &nbsp; char; &nbsp; &nbsp; &nbsp; &nbsp; // 
&nbsp; 原始用户信息(编码前或解码后的TP-UD) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
index:char; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 
&nbsp; 短消息序号,在读取时用到 &nbsp; <BR>&nbsp; end; &nbsp; <BR>&nbsp; PSM_PARAM &nbsp; = 
&nbsp; ^SM_PARAM; &nbsp; <BR>&nbsp; ---最好能改写成返回内容和电话号码的。 &nbsp; <BR>&nbsp; 
//+CMGR: &nbsp; 1,,20 &nbsp; <BR>&nbsp; 
//0891683110801505F0000BA13133452812F00000503092518342200131 &nbsp; <BR>&nbsp; 
// &nbsp; PDU解码,用于接收、阅读短消息 &nbsp; <BR>&nbsp; // &nbsp; pSrc: &nbsp; 源PDU串指针 
&nbsp; <BR>&nbsp; // &nbsp; pDst: &nbsp; 目标PDU参数指针 &nbsp; <BR>&nbsp; // &nbsp; 
返回: &nbsp; 用户信息串长度 &nbsp; <BR>&nbsp; function &nbsp; gsmDecodePdu(const &nbsp; 
pSrc:pchar; &nbsp; pDst:PSM_PARAM):integer; &nbsp; <BR>&nbsp; var &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; nDstLength:integer; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 目标PDU串长度 &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; tmp &nbsp; : &nbsp; byte; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; 内部用的临时字节变量 &nbsp; <BR>&nbsp; &nbsp; &nbsp; buf &nbsp; : &nbsp; 
array[0..256-1]of &nbsp; char; &nbsp; &nbsp; // &nbsp; 内部用的缓冲区 &nbsp; <BR>&nbsp; 
begin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
// &nbsp; SMSC地址信息段 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
gsmString2Bytes( &nbsp; pSrc, &nbsp; @tmp, &nbsp; 2); &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; 取长度 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tmp &nbsp; := 
&nbsp; (tmp &nbsp; - &nbsp; 1) &nbsp; * &nbsp; 2; &nbsp; &nbsp; &nbsp; &nbsp; // 
&nbsp; SMSC号码串长度 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc(pSrc, &nbsp; 
4); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; // &nbsp; 指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; gsmSerializeNumbers(pSrc, &nbsp; pDst^.SCA, &nbsp; tmp); &nbsp; &nbsp; 
&nbsp; &nbsp; // &nbsp; 转换SMSC号码到目标PDU串 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; inc(pSrc, &nbsp; tmp); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; 指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; TPDU段基本参数、回复地址等 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gsmString2Bytes(pSrc, &nbsp; @tmp, &nbsp; 
2); &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 取基本参数 &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; inc(pSrc,2); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; 指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(tmp 
&nbsp; and &nbsp; $80) &nbsp; &gt; &nbsp; 0 &nbsp; then &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; begin &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; // &nbsp; 包含回复地址,取回复地址信息 &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gsmString2Bytes(pSrc, &nbsp; @tmp, 
&nbsp; 2); &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 取长度 &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(tmp &nbsp; and &nbsp; 
1)&gt;0 &nbsp; then &nbsp; tmp &nbsp; := &nbsp; tmp+1; &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; 调整奇偶性 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; inc(pSrc,4); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gsmSerializeNumbers(pSrc, &nbsp; 
pDst^.TPA, &nbsp; tmp); &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 取TP-RA号码 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc(pSrc, 
&nbsp; tmp); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end; &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
TPDU段协议标识、编码方式、用户信息等 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
gsmString2Bytes(pSrc, &nbsp; PChar(@pDst^.TP_PID), &nbsp; 2); &nbsp; &nbsp; 
&nbsp; &nbsp; // &nbsp; 取协议标识(TP-PID) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; inc(pSrc, &nbsp; 2); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; 指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
gsmString2Bytes(pSrc, &nbsp; Pchar(@pDst^.TP_DCS), &nbsp; 2); &nbsp; &nbsp; 
&nbsp; &nbsp; // &nbsp; 取编码方式(TP-DCS) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; inc(pSrc,2); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 
&nbsp; 指针后移 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
gsmSerializeNumbers(pSrc, &nbsp; pDst^.TP_SCTS, &nbsp; 14); &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 服务时间戳字符串(TP_SCTS) &nbsp; &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc(pSrc,14); &nbsp; &nbsp; &nbsp; &nbsp; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -