設備端:單片機使用AT89S52,CH375選擇設備模式,內置固件。使用斷點2上傳和下傳數據。
1、通過本地按鍵,按一次往斷點2寫入64個0xAA。
2、下傳數據,單個數據直接使用I/O驅動LED顯示,多長度舍棄。
PC端調試:WinXP系統,調試開發(fā)環(huán)境LabCVI9.0和DEBUG372
1、使用DEBUG372,所有操作都正常。
2、LabCVI9.0能正常打開設備,獲取PID VID。
3、LabCVI9.0可以正確下傳數據。單個數據可以在LED上正確顯示。
4、LabCVI9.0上傳數據,使用帶緩沖模式或不使用帶緩沖模式,不能正確接收數據。接收到的數據長度為0。并且顯示接收成功。
附部分LabCVI9.0代碼:未貼出的代碼包含了設備打開、獲取PID VID、設備關閉。
//下傳數據
int CVICALLBACK DOWNDATA (int panel, int control, int event,
?? ??? ?void *callbackData, int eventData1, int eventData2)
{//發(fā)送數據
?? ?unsigned long datalen;
?? ?unsigned char downdata;
?? ?datalen = 1;
?? ?if(event == EVENT_COMMIT)
?? ?{
?? ??? ?GetCtrlVal(panel,PANEL_DOWNDATANUM,&downdata);
?? ??? ?if(CH375WriteData(0,&downdata,&datalen))
?? ??? ??? ?SetCtrlVal(panel,PANEL_DISP,"發(fā)送成功\n");
?? ??? ?else
?? ??? ??? ?SetCtrlVal(panel,PANEL_DISP,"發(fā)送失敗\n");
?? ?}
?? ?return 0;
}
//設置緩沖模式和超時
int CVICALLBACK BUFUPLOAD (int panel, int control, int event,
?? ??? ?void *callbackData, int eventData1, int eventData2)
{
?? ?if(event == EVENT_COMMIT)
?? ?{
?? ??? ?CH375SetBufUpload( 0, 1 );
?? ??? ?CH375SetTimeout(0,5000,5000);
?? ?}
?? ?return 0;
}
//上傳數據
int CVICALLBACK UPDATA (int panel, int control, int event,
?? ??? ?void *callbackData, int eventData1, int eventData2)
{
?? ?char databuf[64]={0};
?? ?char disbuf[64]={'0'};
?? ?int datalen = 0;
?? ?char i;
?? ?char bufnum=0;
?? ?if(event == EVENT_COMMIT)
?? ?{
?? ??? ?if(CH375QueryBufUpload(0))
?? ??? ?{
?? ??? ??? ?if(CH375ReadData(0,&databuf,&datalen))
??? ??? ??? ???? SetCtrlVal(panel,PANEL_DISP,"接收成功\n");
?? ??? ???? else
?? ??? ??? ??? ?SetCtrlVal(panel,PANEL_DISP,"接收失敗\n");
?? ??? ?}
?? ??? ?else
?? ??? ??? ?SetCtrlVal(panel,PANEL_DISP,"接收緩沖區(qū)無數據\n");
?? ?}
?? ?return 0;
}