2010-12-11 2 views
0

시스템의 각 포트에 대해 SerialPort-Object 배열을 갖고 싶습니다. 내 생각은 그 방법으로 그것을 만드는 것이었다 :C + +에서 문자열 목록에서 클래스의 배열을 수행하는 방법, 초보자 질문!

public ref class CommunicatorClass 
{ 
private: 
    static array<SerialPort^>^ _serialPortList; 

public: 
    static void Main(){ 
//   _serialPortList->Initialize; 
     for each (String^ s in SerialPort::GetPortNames()) 
     { 
      Console::WriteLine(" {0}", s); 
      AddListItem(s); 

     } 
    } 

    static void AddListItem(String^ s) 
    { 
     // Get the length 
     _serialPortList->Length = _serialPortList->GetLength + 1; 

     _serialPortList[_serialPortList->GetLength] = gcnew SerialPort(s, 9600); 
    } 
}; 

을하지만 난 C++/윈도우 프로그래밍 완전히 새로운입니다. 그래서, 예, 물론, 거기에 많은 오류가 있습니다. 아무도 그것을 수정하시기 바랍니다 (아이디어 그 자체가 완전 헛소리하지 않은 경우) 오류에 대한 몇 가지 단어를 말해?

좋을까요, 미리 감사드립니다.

+1

이것은 C++가 아닌 C++/CLI입니다. 관리되는 코드 또는 기본 코드를 타겟팅합니까? –

+1

그 코드는 C++이 아닙니다. 당신은 매우 혼란스러워 보입니다. –

+0

네, 그럴 수도 있습니다. 이 사건은 지금 차이점을 모른다. 이 작업은 Visual C++에서 수행하는 것이 었습니다. 이전에는 사용하지 못했던 것입니다. 그래서 내가 msdn에서 몇 가지 예제를 발견하고 그냥 "자습서"그들은 자습서 또는 뭔가를 통해 일을해야만합니다. 우리는 – nico

답변

0

시스템의 모든 직렬 포트를 실제로 동일한 전송 속도로 열고 싶습니까?

배열의 길이를 변경할 수 없습니다. 새 배열을 만들고 모든 데이터를 복사해야하며, 다른 항목을 추가해야 할 때마다 그렇게하는 것이 비효율적입니다. 대신 동적 범위 지정을 처리하는 System::Collections::Generic::List을 사용하는 것이 좋습니다.

NET SerialPort 클래스는 프로그래밍 스타일을 강요하는 쓰레기 조각이기 때문에 C#/CLI는 기본 Windows 직렬 포트 기능을 직접 호출 할 수 있습니다. 물론 자신의 래퍼 클래스 뒤에 Windows 인터페이스를 숨기고 싶지만 노력할 가치가 있습니다.

+0

감사합니다,이 목록 - 클래스는 정말 내 문제에 흥미로운 소리. 나는 심지어 내 생각은 정말 좋지 않았다고 생각했는데, 내가 찾은 해결책은 하나로서 부적절했다, 당신은 복사로 말했다 하나씩 하나씩. – nico

관련 문제