Domanda

EDIT:. Era un problema di hardware ..... ottenere un dispositivo duplicato o cavo sembrava risolvere il problema

Ciao, io sto tirando fuori i miei capelli cercando di leggere una grande quantità di dati (~ 1MB) da una porta seriale in .NetCF.

Sto leggendo un dump di dati GPS, ma sto a caso la ricezione di un TimeoutException sulla chiamata a m_serial.Read (..)

C'è sicuramente i dati in streaming sulla porta seriale - la discarica prende un paio di minuti. Quando ricevo il timeout, posso solo collegare il cavo seriale in un computer diverso e vedere i dati in streaming costantemente di.

Ho provato attuare questo molti modi diversi - SerialPort.Read, SerialPort.ReadLine, SerialPort.ReadExisting - e tutti leggerò per un breve periodo (importo casuale) e poi non con un TimeoutException

Qualsiasi aiuto sarebbe molto apprezzato, grazie! Sono fondamentalmente in perdita come sto diventando un timeout quando v'è certamente dati disponibili, in streaming a 38400 baud

//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:

ho scoperto che il codice viene eseguito bene su un dispositivo Motorola Symbol, ma non su un dispositivo Intermec che ho. Ho scambiato fuori tutto l'hardware per cercare di eliminare che, come una possibilità, e ancora non funziona.

Entrambi i dispositivi sono Windows Mobile 5.0

È stato utile?

Soluzione 2

Semplicemente fantastico .... sembra che era un problema hardware .... ho avuto alcuni altri dispositivi disponibili oggi e sta funzionando benissimo .....

Altri suggerimenti

Come suggerimento si può sempre provare a utilizzare il OpenNETCF biblioteca porta seriale . E 'interfaccia compatibile e in questo modo si dispone di tutte le origini fino alle chiamate Gestione periferiche in modo da poter vedere perché eventuali errori potrebbero essere gettati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top