你是说1可以发,f不可以吗?你怎么知道f不可以的?

解决方案 »

  1.   

    我也发现这个有问题,高手看一下这段程序,那里有问题
      

  2.   

    发上一段我写的程序,仅供参考//手动以十六进制发送
    void CPCTestADlg::OnButtonManualTx() 
    {
    char seps[]   = " ,\t\n";
    char *token;
    char str[256];
    unsigned char strTx[256];
    int i;
    //获取对话框中发送区数据
    UpdateData(true);
    strcpy(str,(LPCTSTR)m_strTxContents);
    for(i=0;i<strlen(str);i++)
    if(!isRightData(str[i],16))
    {
    MessageBox("发送字符必须是0123456789aAbBcCdDeEfF,且每个字节以空格或逗号分隔");
    return;
    }
    i=0;
    token = strtok( str, seps );
    while( token != NULL )
    {
    strTx[i]=(unsigned char)StrToData(token,16);
    /* Get next token: */
    token = strtok( NULL, seps );
    i++;
    }
    if(mCnComm.IsOpen())
    {
    mCnComm.Write(strTx,i);
    }
    //置位发送计数器
    m_commTxCounts+=i;
    UpdateData(false);
    }
    bool CPCTestADlg::isRightData(char c, int jz)
    {
    if((jz<2)||(jz>16))
    return false;
    char ch[]="00112233445566778899aAbBcCdDeEfF ,";
    int i=0;
    for(i=0;i<jz+1;i++)
    {
    if(c==ch[i*2])return true;
    if(c==ch[i*2+1])return true;
    }
    return false;
    }
    long CPCTestADlg::StrToData(CString strData, int jz)
    {
    int l=strData.GetLength();
    long IntValue=0;
    int bitValue;
    int i;
    for(i=0;i<l;i++)
    {
    if(isRightData(strData[i],jz))
    {
    if(isdigit(strData[i]))
    bitValue=strData[i]-0x30;
    else
    {
    switch(strData[i])
    {
    case 'a':
    bitValue=0x0a;
    break;
    case 'b':
    bitValue=0x0b;
    break;
    case 'c':
    bitValue=0x0c;
    break;
    case 'd':
    bitValue=0x0d;
    break;
    case 'e':
    bitValue=0x0e;
    break;
    case 'f':
    bitValue=0x0f;
    break;
    case 'A':
    bitValue=0x0a;
    break;
    case 'B':
    bitValue=0x0b;
    break;
    case 'C':
    bitValue=0x0c;
    break;
    case 'D':
    bitValue=0x0d;
    break;
    case 'E':
    bitValue=0x0e;
    break;
    case 'F':
    bitValue=0x0f;
    break;
    }
    }
    IntValue=bitValue*npf(jz,l-i-1)+IntValue;
    }
    else
    return -1;
    }
    return IntValue;
    }
      

  3.   

    单步调试一下,在发f时出现什么提示!