0

편집 : 하드웨어 문제가 ..... 중복 장치 또는 케이블을 얻는 것이 문제를 해결하는 것 같았습니다.가짜 TimeoutException 읽기 .NETCF SerialPort

안녕하세요, 나는 .NETCF의 직렬 포트에서 많은 양의 데이터 (~ 1MB)를 읽으려고 내 머리를 뽑아 내고 있습니다.

나는 GPS 데이터의 덤프를 읽고 있어요,하지만 난 무작위로 m_serial.Read 호출 (..) 시리얼 포트에서 데이터 스트리밍은 확실히있다

입니다에 TimeoutException를 수신하고 - 덤프 몇 분이 걸립니다. 시간 제한이 생기면 직렬 케이블을 다른 컴퓨터에 꽂고 데이터 스트리밍을 꾸준히 볼 수 있습니다.

이 여러 가지 다른 방법 (SerialPort.Read, SerialPort.ReadLine, SerialPort.ReadExisting)을 구현해 보았습니다. 그리고 모두 짧은 시간 (임의의 양) 동안 읽은 다음 TimeoutException으로 실패합니다.

도움을 주시면 감사하겠습니다. 나는 데이터를 사용할 수 확실히있을 때 나는 38400 보드에서 스트리밍, 시간 제한을 받고 있어요 방법으로 손실에 기본적으로있어

//m_serial is a SerialPort object, ReadTimeout set to 9000 

        string eoftest = "\r\n$PSRF206"; 
        byte[] bEOFTest = ASCIIEncoding.ASCII.GetBytes(eoftest); 

        int bufferSize = 1024 * 16; 
        byte[] buffer = new byte[bufferSize]; 
        int testingIndex = 0; 

        while (testingIndex < bEOFTest.Length) 
        { 
         int count = m_serial.Read(buffer, 0, bufferSize); 

         if (count > 0) 
         { 
          for (int i = 0; i < count; i++) 
          { 
           if (buffer[i] == bEOFTest[testingIndex]) 
           { 
            testingIndex++; 
            if (testingIndex >= bEOFTest.Length) 
             break; 
           } 
           else 
            testingIndex = 0; 
          } 

          writer.Write(buffer, 0, count); 
         } 
        } 

UPDATE :

나는 코드가에서 잘 실행되는 것을 발견했습니다 Motorola Symbol 장치는 있지만, 가지고있는 인터멕 장치에는 없습니다. 나는 가능성을 없애기 위해 모든 하드웨어를 교체했으며 여전히 작동하지 않습니다.

두 제품 모두 윈도우 모바일 항상 OpenNETCF serial port library를 사용하여 시도 할 수 제안으로 5.0

+0

당신이 GPS 중간을 사용할 수없는 이유라도 ..... 잘 일하고있어 드라이버 그래서 당신은이 낮은 수준의 물건을 할 필요가 없어? http://msdn.microsoft.com/en-us/library/ms850332.aspx – Lee

+0

내가 말할 수있는 한, API는 현재 값을 가져 오기위한 것입니다. 우리의 장치는 업무 시간 동안 연결이 끊어지고,이 코드는 데이터 덤프를 얻기 위해 실행됩니다. 그 링크에서 그 기능을 보지 못 하겠지만, 아마 뭔가를 놓친 것일까 요? – Clyde

+0

아니요, 현재 값을 가져 오는 것입니다. 네가 얼마나 덤프를했는지 나는 몰랐다. – Lee

답변

0

은 .... 내가 지금 가능한 다른 장치를 가지고 ....보고는

0

있습니다. 인터페이스와 호환되므로 장치 관리자 호출까지 모든 소스를 보유 할 수 있으므로 오류가 발생할 수있는 이유를 알 수 있습니다. 이 하드웨어 문제처럼 그냥 좋은