📄 framer_8h.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>famer: framer.h文件参考</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- 制作者 Doxygen 1.3.9.1 --><div class="qindex"><a class="qindex" href="index.html">首页</a> | <a class="qindex" href="namespaces.html">名字空间列表</a> | <a class="qindex" href="files.html">文件列表</a> | <a class="qindex" href="globals.html">文件成员</a></div><h1>framer.h文件参考</h1>自定义函数的声明文件 <a href="#_details">更多...</a><p><code>#include <iostream></code><br><code>#include <fstream></code><br><p><a href="framer_8h-source.html">浏览该文件的源代码。</a><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>函数</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="framer_8h.html#a0">frameheader</a> (char *outfile, char *tempfile)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">形成帧的前导码、帧定界符、目的地址和源地址,输出到输出文件。. <a href="#a0"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="framer_8h.html#a1">length</a> (char *infile, char *tempfile)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">将输入文件的字节长度文件数据输出到临时文件,不足46字节的以0补齐。 <a href="#a1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="framer_8h.html#a2">crc</a> (char *tempfile, char *outfile)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">根据临时文件计算crc校验码,并把计算结果和临时文件的数据输出到输出文件。 <a href="#a2"></a><br></td></tr></table><hr><a name="_details"></a><h2>详细描述</h2>自定义函数的声明文件 <p>/*<hr><h2>函数文档</h2><a class="anchor" name="a2" doxytag="framer.h::crc"></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool crc </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>tempfile</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>outfile</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p>根据临时文件计算crc校验码,并把计算结果和临时文件的数据输出到输出文件。 <p><dl compact><dt><b>参数:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>char*</em> </td><td>tempfile 临时文件名 </td></tr> <tr><td valign="top"></td><td valign="top"><em>char*</em> </td><td>outfile 输出文件名 </td></tr> </table></dl><dl compact><dt><b>返回:</b></dt><dd>输出成功,则返回真。</dd></dl><div class="fragment"><pre class="fragment">00107 {00108 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="framer_8cpp.html#a2">crc</a> = 0x00; <span class="comment">//crc校验码值(寄存器),初始化为0。</span>00109 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> gx = 0x07; <span class="comment">//对应于G(x)=x8+x2+x1+x0</span>00110 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> oput = 0; <span class="comment">//每次左移时,移出的一位</span>00111 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> temp;00112 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> otemp;00113 00114 ifstream tfile(tempfile,ios::binary);00115 <span class="keywordflow">if</span>(!tfile) <span class="comment">//临时文件无法打开,返回失败</span>00116 {00117 cout<<<span class="stringliteral">"cannot open file"</span>;00118 <span class="keywordflow">return</span> <span class="keyword">false</span>;00119 }00120 00121 tfile.seekg(0,ios_base::end); <span class="comment">//寻找临时文件尾</span>00122 <span class="keywordtype">int</span> cnt=tfile.tellg(); <span class="comment">//获得临时文件长</span>00123 cnt=cnt-7; <span class="comment">//7字节前导码、1字节帧定界符不用于计算crc但还要加上crc位本身</span>00124 <span class="keywordtype">int</span> cnt2=cnt;00125 tfile.seekg(8); <span class="comment">//从第9位开始读取</span>00126 00127 ofstream ofile( outfile,ios::app|ios_base::binary );00128 00129 tfile.read((<span class="keywordtype">char</span>*)&otemp,<span class="keyword">sizeof</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>));00130 <span class="keywordflow">while</span>(cnt>0) <span class="comment">//每次从临时文件中读取一字节,计算,然后写到输出文件</span>00131 { 00132 00133 cnt=cnt-1;00134 <span class="keywordflow">if</span>(cnt!=0) <span class="comment">//非crc位</span>00135 00136 {00137 temp=otemp;00138 ofile.put(otemp);00139 }00140 <span class="keywordflow">else</span>00141 temp=0; <span class="comment">//cnt=0即为crc位,crc位为0</span>00142 00143 00144 <span class="keywordtype">int</span> i=0;00145 <span class="keywordflow">while</span>(i<8) <span class="comment">//对每一位入寄存器计算</span>00146 {00147 oput = <a class="code" href="framer_8cpp.html#a2">crc</a> & 0x80; <span class="comment">//取上次计算crc的最高位,此次左移即为输出位;</span>00148 <a class="code" href="framer_8cpp.html#a2">crc</a> <<= 1; <span class="comment">//寄存器左移一位</span>00149 <span class="keywordflow">if</span> (temp & 0x80) <span class="comment">//每次取字节的最高位,作为输入,判断是否为0</span>00150 { 00151 <a class="code" href="framer_8cpp.html#a2">crc</a> |= 0x01; <span class="comment">//非0,则将crc最低位与1取或,即最低为取一,其它位不变,即将1移入</span>00152 <span class="comment">//寄存器,若为0,则无需变化</span>00153 } 00154 temp <<= 1;00155 00156 <span class="keywordflow">if</span> ( oput ) <span class="comment">//若输出位为1,则将crc与gx对应位取异或,</span>00157 <span class="comment">//若为0,取异或结果不变,无需计算 </span>00158 {00159 <a class="code" href="framer_8cpp.html#a2">crc</a> ^= gx; 00160 }00161 i=i+1;00162 }00163 00164 tfile.read((<span class="keywordtype">char</span>*)&otemp,<span class="keyword">sizeof</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>));00165 }00166 00167 ofile.put(crc); <span class="comment">//输出校验和数据</span>00168 ofile.close();00169 tfile.close();00170 <span class="keywordflow">return</span> <span class="keyword">true</span>;00171 }</pre></div><p> </td> </tr></table><a class="anchor" name="a0" doxytag="framer.h::frameheader"></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool frameheader </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>outfile</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>tempfile</em></td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -