int crc=0;
int i=0;while(i<CSanswer.GetLength())
      crc+=CSanswer[i++];

解决方案 »

  1.   

       to: Kevin_qing(Kevin) 
       crc得到是每个字母的ANSI相加.
       如 1=49, 2=50 ,A=65.那么1+2+A=49+50+65,
       可是向单片机里1=1,2=2,A=10, 1+2+A=D,   只是,如果我想每个字母都去出我都进行判断, 
            CString s;
            int m;
            s=CSanswer.left(1)
            然后
              if(s=="A")
                m=10;
              if(s=="B")
                m=11
                ...... 
            我认为这样实在不行.我认为应该有更简单办法.
           请问应这样?
                 
      

  2.   

    wait~~~
    你说发送的数据是16进制的还是字符串啊?如果是16进制的那你不能使用CString来保存数据。
    因为可能数据里面含有0
      

  3.   

        To: Kevin_qing(Kevin) 
        这是我的发送程序
        if(!m_mscomm1.GetPortOpen())
          m_mscomm1.SetPortOpen(TRUE);//打开串口
          UpdateData(TRUE);
          m_mscomm1.SetOutput(COleVariant(m_edit11));//发送数据
        发送的是字符串,可是我想发送16进制不知这样写?
      

  4.   

       
        To: Kevin_qing(Kevin) 
        我一直在wait~~~
      

  5.   

        我的数据是单片机发送的,再这,由于方便自己调试,发送给自己.
        我用我的接收程序测试过单片机发送过来的数据,
               单片机发送数据         接收的数据
                   0AH                   A
                   1AH                   1A
                   00H                   0
                   FFH                   FF
        于是我这发送程序只要发送数据的全是大写,接收的单片机数据一样. 
        由于我对vc数据转化不熟,你看我上面的接收程序不用CString保存,那用什么保存呢?
       然后就可以向单片机那样实行0AH+1AH+00H+FFH=119H
      
           请指教.先谢了!!! 
       
          
        
      
           
      

  6.   

      但还是要谢 Kevin_qing 的提醒.