|
我在用VC++6.0打算为C8051F320编写了一个上位机软件,通过PC给MCU发数据可以,如程序
void CUsb_LedDlg::OnLedon()
{
// TODO: Add your control notification handler code here
SI_STATUS status = SI_SUCCESS;
DWORD dwBytesSucceed = 0;
DWORD dwBytesWriteRequest =8;
BYTE Out_Packet[8]={0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
status = SI_Write(m_hUSBDevice, &Out_Packet, dwBytesWriteRequest, &dwBytesSucceed);
if (dwBytesSucceed != dwBytesWriteRequest || status != SI_SUCCESS)
{
CString sError;
sError.Format("Error writing to USB.\nWrote %d of %d bytes.\n\nApplication is aborting.\nReset hardware and try again.", dwBytesSucceed, dwBytesWriteRequest);
}
}
但是当我通过MCU给PC发数据时,这样写可以吗?
void CUsb_LedDlg::OnButtonRx()
{
SI_STATUS status = SI_SUCCESS;
DWORD dwBytesSucceed = 0;
DWORD dwBytesWriteRequest =8;
BYTE In_Packet[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
status = SI_Read(m_hUSBDevice, &In_Packet, dwBytesWriteRequest, &dwBytesSucceed);
if (dwBytesSucceed != dwBytesWriteRequest || status != SI_SUCCESS)
{
CString sError;
sError.Format("Error writing to USB.\nWrote %d of %d bytes.\n\nApplication is aborting.\nReset hardware and try again.", dwBytesSucceed, dwBytesWriteRequest);
}
if(In_Packet[0] != 0x00)
{
MessageBox("正确,数据连接了","welcome",NULL);
}
else MessageBox("错误,没连接","welcome",NULL);
}
上面只是验证一下收没收到数据,可是一点按钮他就卡了。没反应了。PC给MCU发送各种数据都正常。我只是想通过它验证接收数据正常与否。这样写对吗?
单片机上面的中断估计对的。
void USB_API_TEST_ISR(void) interrupt 16
{
BYTE INTVAL = Get_Interrupt_Source(); // Determine type of API interrupts
if (INTVAL & TX_COMPLETE)
{
Block_Write(In_Packet, 8);
}
if (INTVAL & RX_COMPLETE)
{
Block_Read(Out_Packet, 8);
}
}
要用定时刷新????还是怎么改,求例程,求大侠。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|