cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1830|回复: 3

ASCII转换成一组16进制的数据的时候,数组里就是没有值【已经解决,谢谢各位高手】

[复制链接]
发表于 2008-8-22 15:38:48 | 显示全部楼层 |阅读模式
我在程序里做运算,把一组ASCII转换成一组16进制的数据,运行的时候发现,程序能够正常执行,但是,存放16进制数据的数组里没有数,单步调试发现,能够运算与赋值,可是数组里就是没有值,这是怎么回事??谢谢高手指点!!

[ 本帖最后由 l-huang 于 2008-9-28 16:12 编辑 ]
发表于 2008-8-22 17:55:27 | 显示全部楼层
 楼主| 发表于 2008-8-22 20:48:05 | 显示全部楼层
int CVICALLBACK ReadFromFile (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{


      //char *t;
   
          

   
    int i,j,k,m,len=0;
         int a,b,d,xbnum,endnum,fnum;
         char f[4];
         
         char c1,c2;
         unsigned char c3,c4,c;
        switch (event)
                {
                case EVENT_COMMIT:
                  
                   FileSelectPopup ("", "*.dat", "", "读取数据",VAL_LOAD_BUTTON, 0, 0, 1, 0, Rfilename);
                Readfp= fopen(Rfilename, "r");
                 FromFile=1;
                 
               
               while(!feof(Readfp))
            {
         t[len]=fgetc(Readfp);
         len++;
           }
      
       fclose(Readfp);     
       first=(char   *)malloc(len);
      
     ///去掉枕头及0x
        for(i=18,j=0;i<len;i++,j++)     
       {
         if((t=='0')&&(t[i+1]=='x'))
         i=i+2;
         first[j]=t;
   
         }
      
      temp= (char   *)malloc(j);
     //去掉空格
      for(k=0,m=0;k<j;k++,m++)     
        {
        if(first[k]==0x0A)               
         k=k+1;
        temp[m]=first[k];
         }         
      
        free(first);
        
        d=(int)(m/2)+1;
     
       end =(char   *)malloc(d);

       for (a=0,b=0;a<m;a++,b++)     
      {
         c1=0;
         c2=0;
         c3=0;
        if((temp[a]>='0')&&(temp[a]<='9'))               
           c1=temp[a]-'0';
         
        else if((temp[a]>='A')&&(temp[a]<='F'))
           c1=temp[a]-'A'+10;
                
        a++;   
               if(a>=d)break;
        if ((temp[a]>='0')&&(temp[a]<='9'))     //
         c2=temp[a]-'0'; //'0'到'9'   
        else   if   ((temp[a]>='A')&&(temp[a]<='F'))     
          c2=temp[a]-'A'+10; //'A'到'F'  
              
         c3=c1*16+c2;
         x=c3;                  //问题处在这里,x里面没有数据,
         if (b>=d)break;
    printf("this is a test %x\n",x); //可是这里却能打印出数据,
        
        }          
   
     
     
        
       }
            
      free(end);
        }  
   
        return 0;
}
///下面是原始数据

1651 1 10000 0 28
0x000055AA
0xD73C6F34
0xC7BACF43
0xBD3C5C76
0xDAC120DA
0x833E8562
0x55BD6F21
0x044336D5
0x48435074
0xA442DCF3
0x9A0055AA
发表于 2008-8-23 14:47:03 | 显示全部楼层
这个这个。。。。。。。

兄弟还是压缩上传程序吧,这样直接贴出来没有办法查的,太难看出问题了,并且没有办法调试!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-21 21:17 , Processed in 0.445943 second(s), 6 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表