问题描述
我正在尝试获取一个基本示例,该示例使用FTDI的D2XX驱动程序来编写命令并读取结果。 (我要使用D2XX,因为我想访问FTDI eeprom用户区内存。)
我在此处包括了该代码,该代码基于FTDI知识库中的示例进行阅读:https://www.ftdichip.com/Support/Knowledgebase/ft_read.htm
到目前为止,当我尝试读取时,缓冲区似乎是空的。非常感谢在此处进行调试的任何帮助以及朝着正确方向的指针。 命令格式错误吗?
先谢谢您
杰西
代码:
int test_commWriteRead()
{
FT_HANDLE ftHandle;
FT_STATUS ftStatus;
ftStatus = FT_Open(0,&ftHandle);
ftStatus |= FT_SetUSBParameters(ftHandle,64,64); // Set USB transfer sizes
ftStatus |= FT_SetChars(ftHandle,false,0); // disable event characters
ftStatus |= FT_SetTimeouts(ftHandle,5000,5000); // Set read/write timeouts to 5 sec
ftStatus |= FT_SetLatencyTimer(ftHandle,16); // Latency timer at default 16ms
ftStatus |= FT_SetFlowControl(ftHandle,FT_FLOW_NONE,0x11,0x13); // No flow control
ftStatus |= FT_SetBaudrate(ftHandle,9600); // Baud rate = 9600
ftStatus |= FT_SetDatacharacteristics(ftHandle,FT_BITS_8,FT_STOP_BITS_1,FT_PARITY_EVEN);
if (ftStatus != FT_OK)
printf("ftStatus not ok %d\n",ftStatus); //check for error
else
{
//char data_out[12] = "Hello World";
char data_out[4] = "014";
DWORD w_data_len = 4;
DWORD data_written;
ftStatus = FT_Write(ftHandle,data_out,w_data_len,&data_written);
if (ftStatus == FT_OK)
{
printf ("Write OK!\n");
printf ("Bytes Written: %s \n",data_out);
printf ("Data Out: %x \n",data_written);
// FT_Write OK
}
else
{
printf ("Write Failed\n");
// FT_Write Failed
return 2;
}
DWORD EventDWord;
DWORD TxBytes;
DWORD RxBytes=10;
DWORD BytesReceived;
char RxBuffer[256];
FT_GetStatus(ftHandle,&RxBytes,&TxBytes,&EventDWord);
printf("Data in: %s\n",RxBytes);
if (RxBytes > 0) {
ftStatus = FT_Read(ftHandle,RxBuffer,RxBytes,&BytesReceived);
if (ftStatus == FT_OK) {
// FT_Read OK
printf("BytesReceived: %s\n",BytesReceived);
}
else {
// FT_Read Failed
printf("ftStatus not ok %d\n",ftStatus);
}
}
}
ftStatus = FT_Close(ftHandle);
printf("Press Return To End Program");
getchar();
return 0;
}
结果输出是
Write OK!
Bytes Written: 014
Bytes Written: 4
Data in: (null)
Press Return To End Program
我可以使用232Analyzer测试命令是否正常工作
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)