我正在尝试通过与PIC32接口的打印机接收数据包。
我可以发送设置字节并正确接收8位数据,但是当通过IN数据包接收的数据大于8个字节时,我在前8个字节后无法正确接收它们。
其他信息被错误地发布为“答案”并移到此处:
我有点困惑,当在令牌中启动读取后...前两个字节到达341,因为我试图读取打印机类的DEVICE_ID,他们建议打印机发送的字符串的长度。
这是我在准备第一个令牌时正在做的事情。
BDT_ENTRY *pointbdt; // pointe to BDT
pointbdt = BDT_IN; (even BDT) //
free(pEP0Data);
pEP0Data=NULL;
if(!((pointbdt=(BDT_ENTRY*) malloc(sizeof(BDT_ENTRY)))==NULL))
{
pointbdt=BDT_IN;
pEP0Data=(BYTE *) malloc(sizeof(8)); // pointer to buffer
pointbdt->STAT.Val=0;
pointbdt->ADR=ConvertToPhysicalAddress(pEP0Data);
pointbdt->CNT=8;
pointbdt->STAT.BSTALL=0;
pointbdt->STAT.DTSEN=1;
pointbdt->STAT.DTS=1;
pointbdt->STAT.UOWN=1;
U1EP0 = 0x4D;
U1ADDR = 0x00;
U1TOK =10010000; //in
}
然后在猜测发生另一个SOF中断后,我必须切换DTSEN,并且pointbdt也应该指向BDT_IN_ODD(奇数BDT)。我在8字节后得到的字节已损坏。
我正在尝试通过pc上的超级终端打印值。
我有点困惑,当在令牌中启动读取后...前两个字节到达341,因为我试图读取打印机类的DEVICE_ID,他们建议打印机发送的字符串的长度。
这是我在准备第一个令牌时正在做的事情。
BDT_ENTRY *pointbdt; // pointe to BDT
pointbdt = BDT_IN; (even BDT) //
free(pEP0Data);
pEP0Data=NULL;
if(!((pointbdt=(BDT_ENTRY*) malloc(sizeof(BDT_ENTRY)))==NULL))
{
pointbdt=BDT_IN;
pEP0Data=(BYTE *) malloc(sizeof(8)); // pointer to buffer
pointbdt->STAT.Val=0;
pointbdt->ADR=ConvertToPhysicalAddress(pEP0Data);
pointbdt->CNT=8;
pointbdt->STAT.BSTALL=0;
pointbdt->STAT.DTSEN=1;
pointbdt->STAT.DTS=1;
pointbdt->STAT.UOWN=1;
U1EP0 = 0x4D;
U1ADDR = 0x00;
U1TOK =10010000; //in
}
然后在猜测发生另一个SOF中断后,我必须切换DTSEN,并且pointbdt也应该指向BDT_IN_ODD(奇数BDT)。 我在8字节后得到的字节已损坏。
我正在尝试通过pc上的超级终端打印值。