未声明的 FTDI 标识符
Undeclared FTDI Identifiers
我正在尝试基本的 FTDI 编码,这里有一个简单的程序,应该能够从单个 FTDI 设备读取字节:
#include "stdafx.h"
#include "ftd2xx.h"
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int scan_and_read()
{
unsigned long int ftDevCount = 0;
FT_STATUS ftStatus;
FT_HANDLE ftHandle;
FT_DEVICE_LIST_INFO_NODE *devInfo;
DWORD numDevs;
DWORD EventDWord;
DWORD TxBytes;
DWORD RxBytes;
DWORD BytesReceived;
char RxBuffer[256];
//
// horrible assumption: there will only be one device connected
// or, the very least, the first device to be connected will be the desired device
//
ftStatus = FT_CreateDeviceInfoList(&numDevs);
if (ftStatus == FT_OK) {
cout << "Devices connected: " << numDevs << endl;
}
else {
// FT_CreateDeviceInfoList failed
return 1;
}
devInfo =
(FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs);
ftStatus = FT_GetDeviceInfoList(devInfo, &numDevs);
string serial_info = devInfo[0].SerialNumber;
ftStatus = FT_OpenEx((PVOID)serial_info.c_str(), FT_OPEN_BY_SERIAL_NUMBER, &ftHandle);
if (ftStatus == FT_OK) {
cout << "Device opened" << endl;
}
else {
return 2;
}
FT_GetStatus(ftHandle, &RxBytes, &TxBytes, &EventDWord);
if (RxBytes > 0) {
ftStatus = FT_Read(ftHandle, RxBuffer, RxBytes, &BytesReceived);
if (ftStatus == FT_OK) {
for (int i = 0; i < RxBytes; i++)
{
cout << "Byte " << i << ": " << *(&(BytesReceived)+i) << endl;
}
}
else {
return 3;
}
}
FT_Close(ftHandle);
cout << "All data read." << endl;
return 0;
}
int main()
{
cout << scan_and_read() << endl;
return 0;
}
Visual Studios 表示用于声明变量的所有标识符(除 unsigned long int 外)均未声明:
c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(17): error C2065: 'FT_STATUS': undeclared identifier
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(17): error C2146: syntax error: missing ';' before identifier 'ftStatus'
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(17): error C2065: 'ftStatus': undeclared identifier
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(18): error C2065: 'FT_HANDLE': undeclared identifier
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(18): error C2146: syntax error: missing ';' before identifier 'ftHandle'
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(18): error C2065: 'ftHandle': undeclared identifier
...等等
我没有发现我的代码或包含的头文件有任何语法错误;怎么了?
看起来 Visual Studio 找不到您的库。您可以在 Project>Properties>C/C++>General>Additional Include Directories 添加它们 (VS 2017)。
记得在 Project>Properties>Linker>Additional Library Directories 中也提供 dll 以获取编译后的程序 运行.
我正在尝试基本的 FTDI 编码,这里有一个简单的程序,应该能够从单个 FTDI 设备读取字节:
#include "stdafx.h"
#include "ftd2xx.h"
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int scan_and_read()
{
unsigned long int ftDevCount = 0;
FT_STATUS ftStatus;
FT_HANDLE ftHandle;
FT_DEVICE_LIST_INFO_NODE *devInfo;
DWORD numDevs;
DWORD EventDWord;
DWORD TxBytes;
DWORD RxBytes;
DWORD BytesReceived;
char RxBuffer[256];
//
// horrible assumption: there will only be one device connected
// or, the very least, the first device to be connected will be the desired device
//
ftStatus = FT_CreateDeviceInfoList(&numDevs);
if (ftStatus == FT_OK) {
cout << "Devices connected: " << numDevs << endl;
}
else {
// FT_CreateDeviceInfoList failed
return 1;
}
devInfo =
(FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs);
ftStatus = FT_GetDeviceInfoList(devInfo, &numDevs);
string serial_info = devInfo[0].SerialNumber;
ftStatus = FT_OpenEx((PVOID)serial_info.c_str(), FT_OPEN_BY_SERIAL_NUMBER, &ftHandle);
if (ftStatus == FT_OK) {
cout << "Device opened" << endl;
}
else {
return 2;
}
FT_GetStatus(ftHandle, &RxBytes, &TxBytes, &EventDWord);
if (RxBytes > 0) {
ftStatus = FT_Read(ftHandle, RxBuffer, RxBytes, &BytesReceived);
if (ftStatus == FT_OK) {
for (int i = 0; i < RxBytes; i++)
{
cout << "Byte " << i << ": " << *(&(BytesReceived)+i) << endl;
}
}
else {
return 3;
}
}
FT_Close(ftHandle);
cout << "All data read." << endl;
return 0;
}
int main()
{
cout << scan_and_read() << endl;
return 0;
}
Visual Studios 表示用于声明变量的所有标识符(除 unsigned long int 外)均未声明:
c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(17): error C2065: 'FT_STATUS': undeclared identifier
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(17): error C2146: syntax error: missing ';' before identifier 'ftStatus'
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(17): error C2065: 'ftStatus': undeclared identifier
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(18): error C2065: 'FT_HANDLE': undeclared identifier
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(18): error C2146: syntax error: missing ';' before identifier 'ftHandle'
1>c:\users\histo\source\repos\ftdi_intro\ftdi_intro\ftdiintro.cpp(18): error C2065: 'ftHandle': undeclared identifier
...等等
我没有发现我的代码或包含的头文件有任何语法错误;怎么了?
看起来 Visual Studio 找不到您的库。您可以在 Project>Properties>C/C++>General>Additional Include Directories 添加它们 (VS 2017)。
记得在 Project>Properties>Linker>Additional Library Directories 中也提供 dll 以获取编译后的程序 运行.