cy7c68013A控制传输通信上位机下位机程序源码详解

2019-07-18 07:27发布

cy7c68013A控制传输通信上位机下位机程序源码详解
(1)上行数据发送
下位机程序:

#define SC_SendData    0xAC        // Setup command: 发送数据    USB->PC      0xAC


case SC_SendData:            // 发送数据         USB->PC
    if(DR_USB2PC());
    break;


// 发送数据   设备->主机
BOOL DR_USB2PC(void)                //请求码0xAC
{
    int i;
    for(i=0;i<64;i++)   
    {
        EP0BUF[i]=buf[i];        // buf[i] -> EP0BUF[i]
    }
    EP0BCH=0;
    EP0BCL=0x40;                  // 一次发送64个数据
    EZUSB_Delay(100);            // 延迟100毫秒
    EP0CS|=bmHSNAK;                // 握手信号                                       
    return(TRUE);                //返回TRUE,函数过程结束
}


上位机程序:

void CSJCJVCDlg::OnButton6()
{
    // TODO: Add your control notification handler code here

    CString str;
    LONG buflen=64;

    ept->Target =TGT_DEVICE;
    ept->ReqType=REQ_VENDOR;
    ept->Direction=DIR_FROM_DEVICE;
    ept->ReqCode=0xAC;                //请求码,从设备到主机的数据传输
    ept->Value =0;
    ept->Index=0;

    PUCHAR buf=new UCHAR[64];
    ZeroMemory(buf,64);                //初始化数组为零数组
    ept->XferData(buf,buflen);            //接收数据
    str.Format("和=%d",buf[0]+buf[1]+buf[2]);
    SetDlgItemText(IDC_EDIT2,str);
}

(2)下行数据发送
上位机程序:
//  下行数据,主机->USB
void CSJCJVCDlg::OnButton5()
{
    // TODO: Add your control notification handler code here
    int i;
    ept->Target =TGT_DEVICE;
    ept->ReqType=REQ_VENDOR;
    ept->Direction=DIR_TO_DEVICE;
    ept->ReqCode=0xAB;            //发送请求码,从主机到设备的数据传输
    ept->Value =0;
    ept->Index=0;

    PUCHAR buf=new UCHAR[64];
    ZeroMemory(buf,64);
    LONG buflen=64;
    //buf[0]=0xAB;
    for(i=0;i<64;i++)
    {
        buf[i]=i;            //发送需要发送的数据
    }
    ept->XferData(buf,buflen);        //发送数据
}



下位机程序:

#define SC_ReceiveData    0xAB            // Setup command: 接收数据     PC->USB      0xAB

case SC_ReceiveData:                 // 接收数据        PC->USB
    if(DR_PC2USB());
    break;

// 发送数据   设备->主机
BOOL DR_USB2PC(void)                //请求码0xAC
{
    int i;
    for(i=0;i<64;i++)   
    {
        EP0BUF[i]=buf[i];        // buf[i] -> EP0BUF[i]
    }
    EP0BCH=0;
    EP0BCL=0x40;                  // 一次发送64个数据
    EZUSB_Delay(100);            // 延迟100毫秒
    EP0CS|=bmHSNAK;                // 握手信号                                       
    return(TRUE);                //返回TRUE,函数过程结束
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。