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 no
tification 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,函数过程结束
}
一周热门 更多>