介绍 FT_EEPROM_Read 函数的用法、参数、返回值、注意事项、适用的操作系统环境、调用代码示例等。
支持的操作系统
Windows XP 以上版本
概述
FT_EEPROM_Read 函数从 EEPROM 中读取数据,该函数适用于FT-X系列设备,兼容所有的 FTDI 芯片。
定义
FT_STATUS FT_EEPROM_Read(FT_HANDLE ftHandle, void *eepromData, DWORD eepromDataSize,
char *Manufacturer, char *ManufacturerId, char *Description,char *SerialNumber);
参数说明
ftHandle — 设备句柄。
eepromData— 指向用于存储读取到的数据的缓冲区地址的指针。不同的设备类型,指向不同的结构体类型变量。
epromDataSize— 参数eepromData对应的缓冲区的大小。
Manufacturer — 制造商名称字符串指针,NULL终止字符。
ManufacturerId — 制造商编号字符串指针,NULL终止字符。
Description — 设备描述信息字符串指针,NULL终止字符。
SerialNumber — 设备序列号字符串指针,NULL终止字符。
返回值
成功则返回FT_OK,如果失败则根据错误返回特定错误码(FT_*).
备注
FT_EEPROM_Read 函数中,参数 *eepromDATA 为结构体指针,其指向的结构体类型随着不同的设备类型,也不同。
结构体:PFT_EEPROM_232B;对应设备类型: FT2xxB。
结构体:PFT_EEPROM_2232;对应设备类型: FT2232D。
结构体:PFT_EEPROM_232R;对应设备类型: FT232R。
结构体:PFT_EEPROM_2232H;对应设备类型: FT2232H。
结构体:PFT_EEPROM_4232H;对应设备类型: FT4232H。
结构体:PFT_EEPROM_232H;对应设备类型: FT232H。
结构体:PFT_EEPROM_X_SERIES ;对应设备类型: FT2xxX 。
FT_EEPROM_Read 函数不对缓冲区大小进行检查,所以参数 eepromDATA 指向的缓冲区应该保证足够空间来存储接收的字符串,包括终止字符。
下面代码示例中的缓冲区大小比实际需要的大小要大一些,在真正的使用过程中可以根据需要调整。
厂商字符串+描述符字符串长度不会超过40个字符。
调用FT_EEPROM_Read 函数前需要确认DLL使用的 eepromDATA 结构体版本。可以通过 PFT_EEPROM_HEADER 结构体来获取。PFT_EEPROM_HEADER结构体第一个元素是设备类型,其可能的取值为:
FT_DEVICE_BM, FT_DEVICE_AM, FT_DEVICE_2232C, FT_DEVICE_232R, FT_DEVICE_2232H,
FT_DEVICE_4232H, FT_DEVICE_232H, or FT_DEVICE_X_SERIES as defined in FTD2XX.h.
代码示例
FT_HANDLE fthandle;
FT_STATUS status;
char Manufacturer[64];
char ManufacturerId[64];
char Description[64];
char SerialNumber[64];
FT_EEPROM_HEADER ft_eeprom_header;
ft_eeprom_header.deviceType = FT_DEVICE_2232H; // FTxxxx device type to be
accessed
FT_EEPROM_2232H ft_eeprom_2232h;
ft_eeprom_2232h.common = ft_eeprom_header;
ft_eeprom_2232h.common.deviceType = FT_DEVICE_2232H;
status = FT_Open(0, &fthandle);
if(status != FT_OK)printf(“open status not ok %d\n”, status);
status = FT_EEPROM_Read(fthandle,&ft_eeprom_2232h, sizeof(ft_eeprom_2232h),
Manufacturer,ManufacturerId, Description, SerialNumber);
if (status != FT_OK)
printf(“EEPROM_Read status not ok %d\n”, status);
else
{
printf(“VendorID = 0x%04x\n”, ft_eeprom_2232h.common.VendorId);
printf(“ProductID = 0x%04x\n”, ft_eeprom_2232h.common.ProductId);
…
…
}
FT_Close(fthandle);
暂无评论内容