[FT2232 EVM]PC프로그램 작성
FT2232 드라이버로딩은 되었으니 하드웨어는 문제 없을듯 하고.. 다른 테스트 하기 위해 먼저 PC프로그램 부터 작성해 보자. C++언어이고 인터페이스가 손쉬운 VC++2000을 이용하여 만들 것이며 FTD사에서 제공하는 PC 예제파일(http://www.ftdichip.com/Projects/CodeExamples.htm) 을 다운 받았다.
전체 구성은 아래와 같고 프로젝트가 VC++2005와는 호환이 안되 자동 업데이트 했다.
구조는 아래 그림과 같다. DLL의 API이용해서 드라이버 파일(FTD2XX.sys) 접근하면 된다.
FT_OpenEx(), FT_Write(), FT_Read()함수만 알면 별 문제 없을듯...
드라이버 NAME만 던져주면 문제 없겠군..
FT_OpenEx()함수 부터 보자
private: System::Void OpenPort()
{
FT_STATUS ftStatus = FT_OK;
if(dwOpenFlags == FT_LIST_NUMBER_ONLY) {
int iSelIndex = comboBox1->SelectedIndex;
if(iSelIndex >= 0)
ftStatus = FT_Open(iSelIndex, &handle);
}
else {
String * str;
char cBuf[64];
str = comboBox1->GetItemText(comboBox1->SelectedItem);
for(int i = 0; i < str->Length; i++) {
cBuf[i] = str->Chars[i];
}
ftStatus = FT_OpenEx(cBuf, dwOpenFlags, &handle);
}
}
{
FT_STATUS ftStatus = FT_OK;
if(dwOpenFlags == FT_LIST_NUMBER_ONLY) {
int iSelIndex = comboBox1->SelectedIndex;
if(iSelIndex >= 0)
ftStatus = FT_Open(iSelIndex, &handle);
}
else {
String * str;
char cBuf[64];
str = comboBox1->GetItemText(comboBox1->SelectedItem);
for(int i = 0; i < str->Length; i++) {
cBuf[i] = str->Chars[i];
}
ftStatus = FT_OpenEx(cBuf, dwOpenFlags, &handle);
}
}
Write() 부분
어라... 예제는 가상 시리얼 포트 예제 인것 같은데... 그냥 BaudRate 설정 없이 Write만 하면 될듯한데...
FT_STATUS ftStatus = FT_OK;
DWORD ret;
char cBuf[100];
DWORD ret;
char cBuf[100];
// This assumes you have a loopback connector on the USB cable you are using.
listBox1->Items->Clear();
for(int i = 0; i < 100 ; i++) {
cBuf[i] = (char)i;
}
listBox1->Items->Clear();
for(int i = 0; i < 100 ; i++) {
cBuf[i] = (char)i;
}
if(handle == NULL) {
OpenPort();
}
if(handle) {
StartThread();
ftStatus = FT_SetEventNotification(handle, FT_EVENT_RXCHAR, hEvent);
ftStatus = FT_SetBaudRate(handle, 9600);
ftStatus = FT_Write(handle, cBuf, 100, &ret);
}
else {
MessageBox::Show("Open Failed");
return;
}
OpenPort();
}
if(handle) {
StartThread();
ftStatus = FT_SetEventNotification(handle, FT_EVENT_RXCHAR, hEvent);
ftStatus = FT_SetBaudRate(handle, 9600);
ftStatus = FT_Write(handle, cBuf, 100, &ret);
}
else {
MessageBox::Show("Open Failed");
return;
}
아무래도 이 예제보다는 Bit Bang mode로 접근해야 할듯 하다
반응형