2017-05-31 21 views
1

私はいくつかの助けが必要です。私はC + +/CXでWin 10 Appをプログラミングしています。私は同じVID番号を持つ2つのUSB to RS485デバイスを使用しています。昔の時代に、私はビットのソフトウェアを書くことができますし、古き良きCOMxのを使用してポートへの接続など複数のUSB to RS485 FTDIデバイスID

私は今ここに接続されたデバイスを探しているときに、デバイス情報を収集アプローチを使用Serial Sampleを例に、以下のよ、何利用可能なデバイスの一覧に表示されるのは次のとおりです。

\?\ FTDIBUS#VID_0403 + PID_6001

両方のデバイスは同じVIDとPIDを持っています。これは私が正しいUSBデバイスに接続するためのケーブルであるという問題につながります。私のアプリは同時に両方のデバイスに接続しようとしていると思いますか?どのように私はこのヒッチを解決することができますについてのアイデアを誰も持っていますか?

void MainPage::Get_Serial_Devices() { 

cancellationTokenSource_Port1 = new Concurrency::cancellation_token_source(); 
cancellationTokenSource_Port2 = new Concurrency::cancellation_token_source(); 

// THIS USES ASYNCRONOUS OPERATION. GET A LIST OF SERIAL DEVICES AND POPULATE THE COMBO BOX 
Concurrency::create_task(ListAvailablePortsAsync()).then([this](DeviceInformationCollection^ serialDeviceCollectioin) 
{ 

    // serialDeviceCollection CONTAINS ALL SERIAL DEVICES FOUND, COPY INTO _deviceCollection 
    DeviceInformationCollection^ _deviceCollection = serialDeviceCollectioin; 

    // CLEAR EXISTING DEVICES FOR OUR OBJECT COLLECTION 
    _availableDevices->Clear(); 

    // FOR EVERY DEVICE IN _deviceCollection 
    for (auto &&device : _deviceCollection) { 

     if (device->Name->Equals("USB-RS485 Cable")) { 

      // CREATE A NEW DEVICE TYPE AND APPEND TO OUR OBJECT COLLECTION 
      _availableDevices->Append(ref new Device(device->Id, device)); 

      Total_Ports++; 

      this->DeviceLists->Items->Append(device->Id); 


     } 

    } 

}); 





void MainPage::ConnectButton_Click(Object^ sender, RoutedEventArgs^ e) { 



if (Port1_Connected == false) { 

    // CAST INDEX TO CORRELATING Device IN _availableDevices 
    Device^ selectedDevice = static_cast<Device^>(_availableDevices->GetAt(Port_1_ID)); 



    // GET THE DEVICE INFO 
    DeviceInformation^ entry = selectedDevice->DeviceInfo; 



    Concurrency::create_task(ConnectToSerialDeviceAsync_Port1(entry, cancellationTokenSource_Port1->get_token())).then([this]() { 

     Get_Echo(); 
     Waiting_For_Ack = true; 


    }); 

} 


Concurrency::task<void> MainPage::ConnectToSerialDeviceAsync_Port1(DeviceInformation^ device, Concurrency::cancellation_token cancellationToken) { 


// CREATE A LINKED TOKEN WHICH IS CANCELLED WHEN THE PROVIDED TOKEN IS CANCELLED 
auto childTokenSource = Concurrency::cancellation_token_source::create_linked_source(cancellationToken); 

// GET THE TOKEN 
auto childToken = childTokenSource.get_token(); 


    // CONNECT TO ARDUINO TASK 
    return Concurrency::create_task(SerialDevice::FromIdAsync(device->Id), childToken).then([this](SerialDevice^ serial_device) { 

     try { 



      _serialPort_Port1 = serial_device; 

      TimeSpan _timeOut; _timeOut.Duration = 10; 

      // CONFIGURE SERIAL PORT SETTINGS 

      _serialPort_Port1->WriteTimeout = _timeOut; 
      _serialPort_Port1->ReadTimeout = _timeOut; 

      _serialPort_Port1->BaudRate = 57600; 

      _serialPort_Port1->Parity = Windows::Devices::SerialCommunication::SerialParity::None; 
      _serialPort_Port1->StopBits = Windows::Devices::SerialCommunication::SerialStopBitCount::One; 
      _serialPort_Port1->DataBits = 8; 
      _serialPort_Port1->Handshake = Windows::Devices::SerialCommunication::SerialHandshake::None; 



      // CREATE OUR DATA READER OBJECT 
      _dataReaderObject_Port1 = ref new DataReader(_serialPort_Port1->InputStream); 
      _dataReaderObject_Port1->InputStreamOptions = InputStreamOptions::None; 


      // CREATE OUR DATA WRITE OBJECT 
      _dataWriterObject_Port1 = ref new DataWriter(_serialPort_Port1->OutputStream); 


      this->ConnectButton->IsEnabled = false; 
      this->DisconnectButton->IsEnabled = true; 


      // KICK OF THE SERIAL PORT LISTENING PROCESS 
      Listen_Port1(); 



     } 

     catch (Platform::Exception^ ex) { 

      this->Error_Window->Text = (ex->Message); 

      CloseDevice(PORT_1); 
     } 

    }); 

答えて

0

FT_PROG FTDIデバイスで使用するための無料のEEPROMプログラミングユーティリティです。デザインをカスタマイズするためにFTDIデバイス記述子を格納するEEPROMの内容を変更するために使用されます。

フルFT_PROGユーザーガイドは、hereからダウンロードできます。

関連する問題