免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1048 | 回复: 1
打印 上一主题 下一主题

请教c 语言高手 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-12-16 19:33 |只看该作者 |倒序浏览
各位大哥大姐,请帮我调试一下这个程序,错误很多的,帮帮忙了,谢谢,是一个文件奇偶校验码的程序:
main()
{
int         i=0,j=0;
int         get,flag;
int         result;
int         length;
DWORD       index[5]={0,0,0,0,0};
result = init_com_port(com_port1);
OutBuf[1] = 0x01;
OutBuf[2] = 0x00;
OutBuf[3] = 0x00;
OutBuf[4] = 0x01;
OutBuf[5] = 0x00;
  flag=0;i=1;
while(i=1)
{   
  OutBuf[0] = 0x01;
  CRC16(OutBuf,6);
  Sleep(DELAY_TINE);
  write_to_com(com_port1);
  Sleep(DELAY_TINE);
  index[0]=read_from_com(com_port1,0);
  OutBuf[0] = 0x02;
  CRC16(OutBuf,6);
   Sleep(DELAY_TINE);
  write_to_com(com_port1);
   Sleep(DELAY_TINE);
  index[1]=read_from_com(com_port1,index[0]);
   if(flag==0)
  {
     for(j=0;j<REAL_LENGTH;j++)
     OldBuf[j]=InBuf[j];
        length=index[0]+index[1]+index[2]+index[3]+index[4];
     ofstream outfile(FILE_PATH);
     for(j=0;j<length;j++)
      outfile<<InBuf[j];
  outfile.close;  
     cout<<"\nWrite File To Save OK\n";
flag++;
  }
  WRITE_FILE_FLAG=0;
  for(j=0;j<REAL_LENGTH;j++)
  if(OldBuf[j]!=InBuf[j])
  {
         WRITE_FILE_FLAG=1;
         OldBuf[j]=InBuf[j];  
      }  
   if(WRITE_FILE_FLAG==1)
  {
     length=index[0]+index[1]+index[2]+index[3]+index[4];
     ofstream outfile(FILE_PATH);  
     for(j=0;j<length;j++)
      outfile<<InBuf[j];
outfile.close;  
     cout<<"\nWrite File To Save OK\n";
  }
    if(kbhit())
  {
get=0;
     get=getch();
     if(get == 0)get=getch();
     if(get == ESC break;
  }

}   
}   

CRC16(unsigned char buf[], int lgn)
{
unsigned char   parity_tab[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
unsigned char   bbl, ddl, bbh, ddh, tt, tt1, tt2;
int             i, j;
lgn+=2 ;
bbl = 0xff;
ddl = 0xff;
bbh = 0xff;
ddh = 0xff;

for (i = 0; i < lgn - 2; i++)  
     {
      tt = buf;
      bbl = bbl ^ bbl;
      ddl = ddl ^ tt;
      tt2 = 0;
      for (j = 0; j < 8; j++)  
          {
           if ((ddl & parity_tab[j]) != 0)
               tt2 += 1;
          }
      if ((tt2 & 0x01) != 0)
          bbl = 0x07;

      bbh = ddl;

      if ((bbl & 0x01) != 0)
          tt = 1;
      else
          tt = 0;
      if ((bbh & 0x01) != 0)
          tt1 = 1;
     else
          tt1 = 0;
     bbh = bbh >;>; 1;
     bbl = bbl >;>; 1;

     if (tt == 1)
         bbh = bbh | 0x80;
     if (tt1 == 1)
         bbl = bbl | 0x80;
     bbh = bbh ^ ddl;
     if ((bbl & 0x01) != 0)
         tt = 1;
     else
         tt = 0;
     if ((bbh & 0x01) != 0)
          tt1 = 1;
     else
          tt1 = 0;
     bbh = bbh >;>; 1;
     bbl = bbl >;>; 1;
     if (tt == 1)
         bbh = bbh | 0x80;
     if (tt1 == 1)
         bbl = bbl | 0x80;
     bbl = bbl ^ ddh;
     ddl = bbl;
     ddh = bbh;
    }
buf[lgn - 2] = ddl;
buf[lgn - 1] = ddh;
}  

急急等

论坛徽章:
0
2 [报告]
发表于 2003-12-17 09:56 |只看该作者

请教c 语言高手

这种问题楼主应该自己慢慢的调试,你会从中获益很大的!况且这种问题你应该说明你的编译环境!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP