哪位高手帮我看看这段程序,为什么输出的是错误的??
来源:互联网 发布:java租车系统 编辑:程序博客网 时间:2024/04/30 10:18
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "define.h"
#include "lc728e.h"
#include "serial.h"
extern DWORD com_read(BYTE* buf,DWORD buf_len);
extern DWORD com_write(BYTE* buf,DWORD buf_len);
#define _PRG_COLLECT
#define _SGL_COLLECT
#define _DEV_PARA
#define _SAVED_DATA
#define _DATA
void sleep(long time)
{
int i,j;
for(i=0;i<10000*time;i++)
j=j*j;
}
/*******************************************************
/ calculate ECC value
/ return value: ECC value
/******************************************************/
DWORD lc728e_ecc(BYTE* str,BYTE len)
{
DWORD Val=0;
int i;
for(i=0 ; i<len ; i++)
{
Val += str[i];
}
str[len-1]=(BYTE)(Val & 0x000000ff);
return str[len-1];
}
/*******************************************************
/ parse command string to struct
/ return value:ERR_OK ERR_FAILED
/******************************************************/
DWORD lc728e_parse(DWORD format,BYTE* str,BYTE*pdata)
{
BYTE buf[BUFLEN];
switch(format)
{
case LC728E_DATA:
{
struct struct_lc728e_data* presult;
presult=(struct struct_lc728e_data*)str;
if(0XAA!=str[0])
{
return ERR_FAILED;
}
sprintf (buf,"%02x%02x",str[1],str[2]);
presult->level=atoi(buf);
printf("/n%d",presult->level);
sprintf(buf,"%02x%02x%02x",str[3],str[4],str[5]);
presult->speed=atoi(buf);
printf("/n%d",presult->speed);
sprintf(buf,"%02x%02x%02x%02x%02x",str[6],str[7],str[8],str[9],str[10]);
presult->flux=atof(buf); //00.01.59.63.15
printf("/n%f",presult->flux);
sprintf(buf,"%02x%02x%02x",str[11],str[12],str[13]);
sprintf(buf,"%02x",str[14]); //53.35.53.01³ö´í
presult->run_time=atoi(buf)*60+atoi(buf);
printf("/n%d",presult->run_time);
sprintf(&buf[0],"20%02x-",str[15]);
sprintf(&buf[5],"%02x-",str[16]);
sprintf(&buf[8],"%02x ",str[17]);
sprintf(&buf[11],"%02x:",str[18]);
sprintf(&buf[14],"%02x:",str[19]);
sprintf(&buf[17],"%02x",str[20]);
strcpy(presult->datetime,buf); //2041-23-01 46:76:01
printf("/n%s",presult->datetime);
sprintf(buf,"%02x%02x",str[21],str[22]);
presult->dev_sn=atoi(buf); //3233
printf("/n%d",presult->dev_sn);
sprintf(buf,"%02x",str[23]);
presult->mode=atoi(buf); //2
printf("/n%d",presult->mode);
sprintf(buf,"%02x",str[24]);
presult->bottle=atoi(buf); //30
printf("/n%d",presult->bottle);
sprintf(buf,"%02x%02x",str[25],str[26]);
presult->times=atoi(buf); //3120
printf("/n%d",presult->times);
sprintf(buf,"%02x",str[27]);
presult->temperature=atoi(buf); //34
printf("/n%d",presult->temperature);
sprintf(buf,"%02x",str[28]);
presult->reserve=atoi(buf); //35
printf("/n%d",presult->reserve);
sprintf(buf,"%02x%02x%02x%02x",str[29],str[30],str[31],str[32]);
presult->delay_time=atoi(buf); //3
printf("/n%d",presult->delay_time);
if (str[33]!=lc728e_ecc(str,33))
{
return ERR_ECC;
}
break;
}
case LC728E_DEV_PARA:
{
省略
break;
}
}
return ERR_OK;
}
/*******************************************************
/ build struct to command string
/ return value: ERR_OK ERR_FAILED ERR_ECC ERR_EMPTY
/******************************************************/
DWORD lc728e_build(DWORD format,BYTE* pdata,BYTE* str)
{
BYTE buf[BUFLEN];
struct struct_lc728e_prg_collect* ppc;
struct struct_lc728e_single_collect* psc;
struct struct_lc728e_dev_para* pdp;
struct struct_lc728e_seved_data* psd;
switch(format)
{
case LC728E_PRG_COLLECT:
{
省略
break;
}
case LC728E_SGL_COLLECT:
{
省略
break;
}
case LC728E_DEV_PARA:
{
pdp=(struct struct_lc728e_dev_para*)pdata;
memset(buf,0,BUFLEN);
sprintf(buf,"%08d",pdp->delay_time);
sscanf(buf,"%08X",&str[0]);
memset(buf,0,BUFLEN);
sprintf(buf,"%04d",pdp->bottle_time);
sscanf(buf,"%04X",&str[4]);
memset(buf,0,BUFLEN);
sprintf(buf,"%02d",pdp->bottle_count);
sscanf(buf,"%02X",&str[6]);
memset(buf,0,BUFLEN);
sprintf(buf,"%02d",pdp->collect_volume);
sscanf(buf,"%02X",&str[7]);
memset(buf,0,BUFLEN);
sprintf(buf,"%04d",pdp->times_per_bottle);
sscanf(buf,"%04X",&str[8]);
memset(buf,0,BUFLEN);
sprintf(buf,"%08d",pdp->reserve1);
sscanf(buf,"%08X",&str[10]);
memset(buf,0,BUFLEN);
sprintf(buf,"%04d",pdp->speed);
sscanf(buf,"%04X",&str[14]);
memset(buf,0,BUFLEN);
sprintf(buf,"%02d",pdp->mode);
sscanf(buf,"%02X",&str[16]);
memset(buf,0,BUFLEN);
sprintf(buf,"%06d",pdp->reserve2[3]);
sscanf(buf,"%06X",&str[17]);
if (str[20]!=lc728e_ecc(str,20))
{
return ERR_ECC;
}
break;
}
case LC728E_SAVED_DATA:
{
省略
break;
}
}
return ERR_OK;
}
/******************************************************
/Return value :ERR_OK ERR_FAILED
/******************************************************/
DWORD lc728e_opt(DWORD format,BYTE* ppara,BYTE* presult)
{
BYTE buf[BUFLEN];
DWORD res;
switch(format)
{
case LC728E_PRG_COLLECT:
{
省略
break;
}
case LC728E_SGL_COLLECT:
{
省略
break;
}
case LC728E_DEV_PARA:
{
memcpy(ppara,"/x6C/x66/x66",3);
com_write(ppara,3);
sleep(1000);
com_read(buf,BUFLEN);
#ifdef _DEV_PARA
memcpy(buf,"/xC9/x11/x00/x45/x31/x01/x21/x05/x02/x02/x04/x00/x00/x20/x01/x04/x14/x05/x11/x00/x87",21);
#endif
res=lc728e_parse(LC728E_DEV_PARA,buf,presult);
if(ERR_OK==res)
com_write(buf,"/x1E");
else
com_write(buf,"/x45");
break;
}
case LC728E_SAVED_DATA:
{
省略
break;
}
return ERR_OK;
}
}
void main()
{
DWORD result1;
BYTE str1[1024];
struct struct_lc728e_data str_result1;
result1=lc728e_opt(LC728E_SAVED_DATA,(BYTE*)&str_result1,str1);
getchar();
}
正确的输出为:
3100
7800
1596315.000000
61
2000-23-01 45:76:01
1
8
1
2320
33
0
2111
错误的输出为:
3100
7800
1596315.000000
1342
2041-23-01 45:76:01
3233
2
30
3120
34
35
3
在下无能,急需帮助!!!那位高人指点,请教,万分感谢!
- 哪位高手帮我看看这段程序,为什么输出的是错误的??
- 我有个javamail自动发送邮件的程序,哪位高手帮我看看,为什么发出去的都是中文乱码?
- 高手帮我看看这个指向函数的指针的程序错误。。。。。。。谢谢
- 哪位高手帮我看看,为什么不能实现跳转到下一页或者上一页
- 哪位高手知道是哪的错误?
- 有错!但不会改!我用的环境是VC6,哪位高手给看看,无限感激!
- 哪位大侠帮我看看
- 收录问题哪位高手帮我分析下我的网站是不是被K了
- 用java模仿ATM(记录的功能似乎有点问题,哪位老大帮我看看)
- 哪位大神帮我看看ListView上的数据不能实时更新
- 哪位大神帮我看看ListView上的数据不能实时更新
- 主题:大家好!哪位高手帮我解答一个c#.net方面的问题,谢谢
- 请大家帮我看看,我这个程序里的错误,谢谢
- 哪位高手帮我解决一个问题?
- 高手帮忙看看我的程序,我一直无法找出错误
- 大神帮我看看这段代码为什么运行不了,谢谢了
- 各位高手帮我看看这个清屏程序
- C# Ajax为什么我的刷新不能成功,高手看看
- 用javascript操作xml-->Web设计中如何使用XML数据源对象(转载)
- 持续集成
- D3DXColorAdjustSaturation 函数
- 从 XSLT 样式表调用 JavaScript (转载 作者Nicholas Chase )
- 正则表达式心得
- 哪位高手帮我看看这段程序,为什么输出的是错误的??
- 使用jdom操作xml数据,生成含Jtree的applet(转载 Jagie 原创 )
- 一个 C# 版的冒泡排序法
- 又是一年中秋到
- 每日构建(daily build)是你的朋友
- 多思考,实事求是,克服跳跃思维
- DNS服务器快速指南
- 从SQL SERVER 向ORACLE 8迁移的技术实现方案
- Berkeley DB Research