CByteArray类 操作的问题

wo_xia_zai 2013-02-01 05:13:37
刚学C++ 写了个串口通信程序(串口控件) 关联一个发送按钮,然后添加如下程序:
unsigned char send[52]={0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xF5,0x00,0x23,0x02,0x01,0x04,0x05,0x06,0x07,0x08,0x01,0xAB,0xAB,0xAB,0xAB,0xAB,0xAB,0xAB,0xAB,0xAB,0xAB,0xAB,0xAB,0xFF,0xFF,0xFF,0xFF,0x20,0x11,0x02,0x23,0x11,0x45,0x29,0x00,0xEF,0xB9,0xB9,0xB9,0xB9,0xB9,0xB9,0xB9,0xD7};
CString Output;
CByteArray train;
train.RemoveAll(); //数组清空
for(int i=0;i<52;i++)
{
train.Add(send[i]);
}

//Output.Format("%s test",send);


m_com.SetOutput(COleVariant(Output));求指点 :for循环结束 后面应该怎么操作才能把上面的数组元素转成字符串 赋给Output,为什么我用Output=train.Gstdata() 却只能得到 send【52】 前8个字节!!!串口发出来是 AA AA AA AA AA AA AA AB
...全文
301 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2013-02-02
  • 打赏
  • 举报
回复
字符串会有\0的结束符处理啊,用BYTE数组等
stjay 2013-02-02
  • 打赏
  • 举报
回复
直接m_com.SetOutput(COleVariant(train)); 不用转成字符串
wo_xia_zai 2013-02-02
  • 打赏
  • 举报
回复
果然直接 发 就行了!!!谢谢各位大神!!! 我这是新号 没多少分 希望大家不要见怪!!!
c1997sdn 2013-02-02
  • 打赏
  • 举报
回复
又是因为字符串结束符的问题导致的发送不完整。 换数据类型, 或者对字符串进行编码,比如base64编码后发送,接收后解码
  • 打赏
  • 举报
回复
Output 是一个字符串以 0 结尾的以后都不再发送 建议用BYTE数组 发送的时候强制转化为char* 接收的时候做楼上的那位大牛的操作就可以看到了 。。。
jimette 2013-02-01
  • 打赏
  • 举报
回复
int i= 0; while(i< train.getcount) { cstring str; str.format(_T("%s"),GetAt(i++)); tran += str; } 以上代码未经测试 lz 自己改一下!

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧