工程是这个样子的,一套体检系统,需要做握力,肺活量,身高体重等等的数据传输,小妹的工作就是写一个上位机软件,目前卡在串口传输数据这儿,传过来的数据包括学号和握力两个量,我不知道怎样编程把学号和握力分开来放在对话框的不同地方,求助~~~

解决方案 »

  1.   

    这是我读取USB设备的数据,然后进行分析的,提取指定位置字节的数据。
    //发送数据  读取设备信息
    void CUSBDlg::OnWriteData()
    {
    //注意:  启用最后 1 个接口发送 读取数据
    if(hHandle==INVALID_HANDLE_VALUE)
    {
    MessageBox(_T("设备接口没有打开"));
    return ;
    } int x=0,y=0;

    BYTE  WriteBuffer[64]={0};
    BYTE  ReadBuffer[64]={0};    WriteBuffer[0]=0x04;
        WriteBuffer[1]=0x50;
    DWORD DataByteCount=0; //实际读写的字节数
    DWORD i;
    if(!WriteFile(hHandle,WriteBuffer,64,&DataByteCount,NULL))
    {
    int Error=GetLastError();
    MessageBox(_T("命令发送失败"));
    return ;
    } // 提取数据信息
    DataByteCount=0; //实际读写的字节数
    CString  str=_T("");
    CString  strID; if(!ReadFile(hHandle,ReadBuffer,64,&DataByteCount,NULL))
    {
    int Error=GetLastError();
    MessageBox(_T("数据读取失败"));
    return ;
    }    while(ReadBuffer[1]!=0x50)
    {
    for(i=0; i<64; i++)
    {
    ReadBuffer[i]=0;
    }
    ReadFile(hHandle,ReadBuffer,64,&DataByteCount,NULL);
    } for(i=0; i<DataByteCount; i++)
    {
    strID.Format(_T("0x%02X "),ReadBuffer[i]);
    if(i%16==0&&i!=0)
    str=str+_T("\r\n");
    else if(i%4==0&&i!=0)
    str=str+_T("  ");
    str=str+strID;
     
    } x=ReadBuffer[4];
    y=ReadBuffer[5];
    x=x*256+y;
    //X轴管数 pBuffer[4] pBuffer[5]
    SetDlgItemInt(IDC_STATIC_GS_X, x); x=0,y=0;
    x=ReadBuffer[8];
    y=ReadBuffer[9];
    y=x*256+y;
    //Y轴管数 pBuffer[8] pBuffer[9]
    SetDlgItemInt(IDC_STATIC_GS_Y, y); // 触摸点数
    x=ReadBuffer[12];
    y=ReadBuffer[16];
    x=x-y;
        SetDlgItemInt(IDC_STATIC_TOUCH_POINT, x); //硬件尺寸
    x=ReadBuffer[20];
    SetDlgItemInt(IDC_STATIC_HARDWARE_SIZE, x); //硬件版本号
    x=ReadBuffer[24];
    y=ReadBuffer[25];
    strID.Format(_T("%d.%d"),x,y);
    SetDlgItemText(IDC_STATIC_HARDWARE_VERSION, strID);
     
    }
      

  2.   

    我是想做个listcontrol控件,直接把数据分开然后显示成表格的样子