سؤال

تحرير: هل كانت مشكلة في الأجهزة ..... الحصول على جهاز مكرر أو كابل يبدو لحل المشكلة.

مرحبا، أنا سحب شعري في محاولة لقراءة كمية كبيرة من البيانات (~ 1 ميجابايت) من منفذ تسلسلي في .NETCF.

أنا أقرأ تفريغ بيانات GPS، لكنني تلقي عشوائيا تتبع المهلة على المكالمة إلى m_serial.read (..)

هناك بالتأكيد تدفق البيانات في المنفذ التسلسلي - تفريغ يستغرق بضع دقائق. عندما أحصل على المهلة، يمكنني فقط توصيل الكابل التسلسلي في كمبيوتر مختلف وشاهد دفق البيانات بشكل مطرد.

لقد حاولت تنفيذ هذه الطرق المختلفة - serialport.read، serialport.readline، serialport.readexisting - وكلها ستقرأ لفترة قصيرة (مبلغ عشوائي) ثم تفشل في وقت واحد.

أي مساعدة سيكون موضع تقدير كبير للغاية، شكرا لك! أنا أساسا في حيرة كيف يمكنني الحصول على مهلة عندما تكون هناك من المؤكد أن هناك بيانات متوفرة، بث في 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);
                        }
                  }

تحديث:

لقد اكتشفت أن الكود يعمل بشكل جيد على جهاز رمز موتورولا، ولكن ليس على جهاز intermec لدي. لقد سبصت على جميع الأجهزة لمحاولة القضاء على ذلك كاحتمال، وما زال لا يعمل.

كلا الجهازين هو Windows Mobile 5.0

هل كانت مفيدة؟

المحلول 2

فقط رائع .... يبدو أنها كانت مشكلة في الأجهزة .... حصلت على بعض الأجهزة الأخرى المتاحة الآن وهي تعمل بشكل جيد .....

نصائح أخرى

كاقتراح يمكنك دائما محاولة استخدام مكتبة المنفذ التسلسلي OpenNETCF. وبعد إنها متوافقة مع الواجهة وبهذه الطريقة لديك جميع المصدر إلى مكالمات إدارة الأجهزة، حتى تتمكن من معرفة سبب إلقاء أي أخطاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top