FTDI D2XX先写然后读,但是结果为空

问题描述

我正在尝试获取一个基本示例,该示例使用FTDI的D2XX驱动程序来编写命令并读取结果。 (我要使用D2XX,因为我想访问FTDI eeprom用户区内存。)

我在此处包括了该代码,该代码基于FTDI知识库中的示例进行阅读:https://www.ftdichip.com/Support/Knowledgebase/ft_read.htm

并编写和设置参数:https://www.ftdichip.com/Support/Documents/TechnicalNotes/TN_153%20Instructions%20on%20Including%20the%20D2XX%20Driver%20in%20a%20VS%20Express%202013%20Project.pdf

到目前为止,当我尝试读取时,缓冲区似乎是空的。非常感谢在此处进行调试的任何帮助以及朝着正确方向的指针。 命令格式错误吗?

先谢谢您

杰西

代码

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测试命令是否正常工作

example command using 232Analyser

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)