1、我现在添加了两个按键,分别对应读与写。void CHidmfcDlg::OnButton3() 
{
// TODO: Add your control notification handler code here}void CHidmfcDlg::OnButton4() 
{
// TODO: Add your control notification handler code here}我现在要做的工作 是把命令行的放到这两个函数中
原来的命令行程序如下:
int main(int argc, char **argv)
{
usbDevice_t *dev;
char        buffer[17];    /* room for dummy report ID */
int         err;    if(argc < 2){
        usage(argv[0]);
        exit(1);
    }
    if((dev = openDevice()) == NULL)
        exit(1);    if(strcasecmp(argv[1], "read") == 0){

        int len = sizeof(buffer);
        if((err = usbhidGetReport(dev, 0, buffer, &len)) != 0){
            fprintf(stderr, "error reading data: %s\n", usbErrorMessage(err));
        }else{
            hexdump(buffer + 1, sizeof(buffer) - 1);
        }
    } else if(strcasecmp(argv[1], "write") == 0){
    
        int i, pos;

        bzero(buffer, sizeof(buffer)); for(pos = 1, i = 2; i < argc && pos < sizeof(buffer); i++){
            pos += hexread(buffer + pos, argv[i], sizeof(buffer) - pos);
        }

        if((err = usbhidSetReport(dev, buffer, sizeof(buffer))) != 0)   /* add a dummy report ID */
            fprintf(stderr, "error writing data: %s\n", usbErrorMessage(err));
        }
else{
        usage(argv[0]);
        exit(1);
    }
    usbhidCloseDevice(dev);
    return 0;
}
我看看了一下 
就要就是两个函数了 我需要移植过来了
一个是
static void hexdump(char *buffer, int len)
{
int     i;
FILE    *fp = stdout;    for(i = 0; i < len; i++){
        if(i != 0){
            if(i % 16 == 0){
                fprintf(fp, "\n");
            }else{
                fprintf(fp, " ");
            }
        }
        fprintf(fp, "0x%02x", buffer[i] & 0xff);
    }
    if(i != 0)
        fprintf(fp, "\n");
}另一个是static int  hexread(char *buffer, char *string, int buflen)
{
char    *s;
int     pos = 0;    while((s = strtok(string, ", ")) != NULL && pos < buflen){
        string = NULL;
        buffer[pos++] = (char)strtol(s, NULL, 0);
    }
    return pos;
}
我会用的是
GetDlgItemText(IDC_EDIT2,b);

SetDlgItemText(IDC_EDIT3,b);请问 使用这两个函数能搞到嘛 谢谢。PS:原来命令行时支持的命令是:
To send a block to the device, use e.g.    hidtool write 0x01,0x02,0x03,0x04,...and to receive the block, use    hidtool read每次读取或写入的都是8个字节。2、命令行时的错误处理是使用fprintf(stderr, "error reading data: %s\n", usbErrorMessage(err));请问如果我在窗口mfc模式下时 想使用弹出对话框的方式实现,请问如何实现 谢谢。
PS: usbErrorMessage的函数原型如下:
static char *usbErrorMessage(int errCode)
{
static char buffer[80];    switch(errCode){
        case USBOPEN_ERR_ACCESS:      return "Access to device denied";
        case USBOPEN_ERR_NOTFOUND:    return "The specified device was not found";
        case USBOPEN_ERR_IO:          return "Communication error with device";
        default:
            sprintf(buffer, "Unknown USB error %d", errCode);
            return buffer;
    }
    return NULL;    /* not reached */
}

解决方案 »

  1.   

    一个sprintf加一个MessageBox就OK了
      

  2.   

    GetDlgItemText能得到你写在edit里面的命令
    MessageBox用来出错时弹出对话框
      

  3.   

    请问 我能直接将MessageBox替换sprintf吗?那 fprintf(fp, "0x%02x", buffer[i] & 0xff); 如何移植呢?谢谢 
      

  4.   

    使用Trace,使用方法和printf类似,就是调试
    或者保存文件,将结果输出到哪里。
    或者使用RichEdit,将结果输出到RichEdit中
    或者AfxMessageBox,如果你能忍受不停弹出对话框的话。
      

  5.   

    MessageBox就可以弹出对话框,::MessageBox(NULL, L"your debug info", L"your message box title", MB_OK);
      

  6.   

    MessageBox 和 AfxMessageBox都可以弹出对话框哈!
      

  7.   

    AfxMessageBox
    +
    CString::Format
      

  8.   

    把fprintf改成用sprintf打印到一个字符串缓冲区中,其中用到的\n改成\r\n,处理完后再用SetWindowText显示。