char buf[27];
char m,i;
m=0; //最原始的方法组组简单的帧 buf[0]='@';//起始
buf[1]='@';
buf[2]='1';//起始流水号,two bytes
buf[3]='0';
buf[4]='1';//主版本协议号2bytes
buf[5]='0';//用户版本协议号,自己定义
buf[6]='0';//时间,6bytes 年月日时分秒,由高到低
buf[7]='0';
buf[8]='0';
buf[9]='0';
buf[10]='0';
buf[11]='0';
buf[12]='F';//源地址,临时定义,4bytes
buf[13]='F';
buf[14]='F';
buf[15]='F';
buf[16]='E';//目的地址,临时定义4bytes
buf[17]='E';
buf[18]='E';
buf[19]='E';
buf[20]= '0' ; //应用数据单元长度,暂时规定定长,2bytes
buf[21]= '0' ;
buf[22]= '+';  //命令字节,读火灾报警控制器系统状态   61
for(i=0;i<21;i++)
m=m+buf[i+2];

buf[23]=m; //校验和,暂时不校验,赋为0,1BYTE
buf[24]='#';//结束标志,2bytes
buf[25]='#';
buf[26]='\0'; AfxMessageBox(buf);
TRACE(buf);输出结尾应该有##结果只有一个

解决方案 »

  1.   

    buf[23]=m; //校验和,暂时不校验,赋为0,1BYTE 
    buf[24]='#';现实的时候,把这两个字节当成一个汉字显示了,显示了?
    然后显示的那个#实际上是buf[25]='#';你把buf[23]='0';就可以看到显示两个了
      

  2.   

    这个是不是mfc的问题
    我把这段数据传输过去里面的值是不是我原本赋予的值
    谢谢高手
    请再解答一下
      

  3.   

    可以肯定的是,这不是mfc的问题,而是你表示的问题.从ascii码的取值来看,0与"0"也不是一回事.
      

  4.   

    楼上的废话
    你不把我程序运行一下都不直到什么问题ascii和控制字符是两个东西以为我不懂么