private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { handle = NULL; hEvent = CreateEvent(NULL, FALSE, FALSE, ""); radioButton1->Checked = false; } private: System::Void listBox1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { textBox1->Text = listBox1->GetItemText(listBox1->SelectedItem); } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { FT_STATUS ftStatus = FT_OK; int iSelIndex; iSelIndex = comboBox1->SelectedIndex; if(iSelIndex >= 0) tStatus = FT_Open(iSelIndex, &handle); ftStatus = FT_Open(iSelIndex, &handle); ftStatus = FT_SetEventNotification(handle, FT_EVENT_RXCHAR, hEvent); ftStatus = FT_SetBaudRate(handle, 9600); //ftStatus = FT_SetTimeouts(handle, 1000, 1000); //DWORD dwWordOffset = 0 ; //LPWORD lpwValu = 0; //ftStatus = FT_ReadEE(handle, dwWordOffset, lpwValu); if(handle == NULL) ErrorMessage(ftStatus); if (ftStatus == FT_OK && handle != NULL ) this->radioButton1->Checked = true; else this->radioButton1->Checked = false; } private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { FT_STATUS ftStatus = FT_OK; ftStatus = FT_Close(handle); ftStatus = FT_Close(handle); //repeated intentionally, first close will produce an OK ftStatus, second close forces an error if (ftStatus == FT_OK ) this->radioButton1->Checked = true; else this->radioButton1->Checked = false; } private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { FT_STATUS ftStatus = FT_OK; DWORD ret; String^ str; char cBuf[100]; int i; str = textBox1->Text; str = str->Trim(); if(str->Length >= 100){ ErrorMessage(IO_INPUT_EXCEEDS_100_CHARACTERS); return; } for(i = 0; i < str->Length; i++) cBuf[i] = (const char) str[i]; //if(handle == NULL) { //OpenPort(); //} if (handle != NULL ) { //StartThread(); ftStatus = FT_Write(handle, cBuf, str->Length, &ret); if (ftStatus == FT_OK && handle != NULL){ textBox2->Text = Convert::ToString(str->Length); } else{ ErrorMessage(ftStatus); return; } } else { ErrorMessage(ftStatus); return; } } private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) { FT_STATUS ftStatus = FT_OK; DWORD dwRead, dwRXBytes; String^ str; Byte b; int i =0; WaitForSingleObject(hEvent, -1); if(handle) { str = ""; ftStatus = FT_GetQueueStatus(handle, &dwRead); if(ftStatus != FT_OK) { ErrorMessage(ftStatus); return; } while(dwRead) { ftStatus = FT_Read(handle, &b, 1, &dwRXBytes); if(ftStatus != FT_OK) { ErrorMessage(ftStatus); return; } else { if (radioButton2->Checked == true) str = str + Convert::ToString(b) + " "; //decimal if (radioButton6->Checked == true) str = str + Convert::ToChar(b); //text if (radioButton7->Checked == true) str = str + Convert::ToString(b, 16) + " "; //hex i++; } ftStatus = FT_GetQueueStatus(handle, &dwRead); } textBox4->Text = str; textBox3->Text = Convert::ToString(i); } } private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) { if(handle != NULL) FT_Close(handle); Application::Exit(); } private: System::Void listBox3_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { FT_STATUS ftStatus = FT_OK; ftStatus = FT_SetBaudRate(handle, Convert::ToUInt32(listBox3->GetItemText(listBox3->SelectedItem))); if(ftStatus != FT_OK || handle == NULL) { ErrorMessage(ftStatus); return; } if (ftStatus == FT_OK && handle != NULL ) this->radioButton1->Checked = true; else this->radioButton1->Checked = false; } private: System::Void FillComboBox(UInt32 dwDescFlags){ FT_STATUS ftStatus; UInt32 numDevs; void * p1; String^ str; comboBox1->Items->Clear(); p1 = (void*)&numDevs; ftStatus = FT_ListDevices(p1, NULL, FT_LIST_NUMBER_ONLY); if(ftStatus == FT_OK){ char cBuf[100]; if (ftStatus == FT_OK){ UInt32 uDevNo; for(uDevNo=0; uDevNoItems->Add(str); } else { ftStatus = FT_ListDevices(uDevNo, cBuf, dwDescFlags); str = gcnew String(cBuf); comboBox1->Items->Add(str); } } if(comboBox1->Items->Count > 0) { comboBox1->SelectedIndex = 0; } } } } private: System::Void radioButton3_CheckedChanged_2(System::Object^ sender, System::EventArgs^ e) { if(radioButton3->Checked) { dwOpenFlags = FT_LIST_NUMBER_ONLY; FillComboBox(dwOpenFlags); } } private: System::Void radioButton4_CheckedChanged_1(System::Object^ sender, System::EventArgs^ e) { if(radioButton4->Checked) { dwOpenFlags = FT_OPEN_BY_DESCRIPTION; FillComboBox(FT_LIST_BY_INDEX | dwOpenFlags); } } private: System::Void radioButton5_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { if(radioButton5->Checked) { dwOpenFlags = FT_OPEN_BY_SERIAL_NUMBER; FillComboBox(FT_LIST_BY_INDEX | dwOpenFlags); } } private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) { textBox4->Text = ""; } private: System::Void ErrorMessage(FT_STATUS ftStatus){ switch(ftStatus) { case FT_INVALID_HANDLE: MessageBox::Show("Invalid Handle - Error 001","Runtime Error"); break; case FT_DEVICE_NOT_FOUND: MessageBox::Show("Device Not Found - Error 002","Runtime Error"); break; case FT_DEVICE_NOT_OPENED: MessageBox::Show("Device Not Opened - Error 003","Runtime Error"); break; case FT_IO_ERROR: MessageBox::Show("IO Error - Error 004","Runtime Error"); break; case FT_INSUFFICIENT_RESOURCES: MessageBox::Show("Insufficient Resources - Error 005","Runtime Error"); break; case FT_INVALID_PARAMETER: MessageBox::Show("Invalid Parameter - Error 006","Runtime Error"); break; case FT_INVALID_BAUD_RATE: MessageBox::Show("Invalid baud Rate - Error 007","Runtime Error"); break; case FT_DEVICE_NOT_OPENED_FOR_ERASE: MessageBox::Show("Device Not Opened For Erase - Error 008","Runtime Error"); break; case FT_FAILED_TO_WRITE_DEVICE: MessageBox::Show("Failed To Write Device - Error 009","Runtime Error"); break; case FT_EEPROM_WRITE_FAILED: MessageBox::Show("EEPROM Write Failed - Error 010","Runtime Error"); break; case FT_EEPROM_ERASE_FAILED: MessageBox::Show("EEPROM Erase Failed - Error - 011","Runtime Error"); break; case FT_EEPROM_NOT_PRESENT: MessageBox::Show("EEPROM Not Present - Error 012","Runtime Error"); break; case FT_EEPROM_NOT_PROGRAMMED: MessageBox::Show("EEPROM Not Programmed - Error 013","Runtime Error"); break; case FT_INVALID_ARGS: MessageBox::Show("Invalid Args - Error 014","Runtime Error"); break; case FT_NOT_SUPPORTED: MessageBox::Show("Not Supported - Error 015","Runtime Error"); break; case FT_OTHER_ERROR: MessageBox::Show("Other Error - Error 016","Runtime Error"); break; case IO_INPUT_EXCEEDS_100_CHARACTERS: MessageBox::Show("Input Exceeds 100 Characters - Error 017","Input Error"); break; default: break; } }