我往串口发送一个字符串,比如发送str ,str="abcd"
这个很简单,,但是,我现在要发送<esc>abcd  ,也就是说发送的字符串前要有个esc,
注意:这里的esc不是字符串,而是ASCII码为13的退出键,这个怎么发呀?

解决方案 »

  1.   

    const char esc = 13;
    send the character...
      

  2.   

    esc的ASCII值应该是27,我刚才弄错了。
    我不能控制接收端的,接收端是一个仪器,我现在要发命令给该仪器。
    命令格式是<esc>abcd
    不知道str="\13abcd" 行不行,我回去试试。
      

  3.   

    不行呀,我发送的命令格式还是不对,我是这样发送的:
    方法一:
    CString strtemp;
    strtemp.Format("\27DA\13");
    m_MSComm.SetOutput(COleVariant(strtemp));//发送数据
    方法二:
    //以十六进制发送
    CByteArray hexdata;
    strtemp.Format("1B44410D");
    int len1=String2Hex(strtemp,hexdata);  
    m_MSComm.SetOutput(COleVariant(hexdata));  //发送十六进制数据这两种方法都不行,而我用串口调试助手按十六进制发送1B44410D就好使。
    命令格式:<esc>DA<return>  ,谁能教我怎么发送,我再开帖子给200分。
      

  4.   

    unsigned char buf[4];
    buf[0]=0x27;
    buf[1]='D';
    buf[2]='A';
    buf[3]=0x13;m_MSComm.SetOutput(COleVariant(buf));
      

  5.   

    strtemp.Format("\27DA\13");
    可能就是因为你的str里前后有2个 \
      

  6.   

    我刚才试了一下。试试下面的代码char buf[5];
    CByteArray sendbuf;
    buf[0]=0x27;buf[1]='D';buf[2]='A';buf[3]=0x13;buf[4]='\0';sendbuf.RemoveAll();sendbuf.SetSize(5);
    for(int i=0;i<5;i++)
    sendbuf.SetAt(i,buf(i));m_MSComm.SetOutput(COleVariant(buf));
    我这样可以m_