نظام تحديد المواقع المتوسطة سائق تباطؤ البيانات من نسخة الظاهرية المنفذ التسلسلي سائق

StackOverflow https://stackoverflow.com/questions/4245971

سؤال

اتبع على من - نظام تحديد المواقع المتوسطة سائق القضايا

المذكورة أعلاه بنجاح أجاب أشعر أن لدي معلومات جديدة حول قضية الذهاب سؤال جديد.

المشكلة أواجهها هي سرعة البيانات التي يتم تسليمها من قبل نظام تحديد المواقع المتوسطة السائق.

ولقد استخدمت بنجاح جيب المعجون قراءة المنافذ التسلسلية و ترى بالضبط المعلومات التي تم كشفها.

COM 1 - نظام تحديد المواقع المتوسطة سائق

COM 6 - منفذ تسلسلي إلى جهاز الكمبيوتر (إدخال البيانات يدويا)

COM 8 - الظاهري المنفذ التسلسلي GPS الأجهزة.

عند قراءة COM 8, أستطيع أن أرى حوالي 18 NMEA سلاسل تظهر كل ~3 ثوان, هذا بأسرع ما يمكن دفعها عبر محدودة اتصال USB.ويبدو بسرعة على الشاشة.عند قراءة COM 6 (إرسال البيانات من جهاز الكمبيوتر يدويا) ، يتم عرضها على قدم المساواة سريعة.لذلك ليس هناك مشكلة مع البيانات المتاحة.

تدخل في نظام تحديد المواقع المتوسطة السائق.عندما GPS المتوسطة السائق هو COM1 (Software) و COM6 (الأجهزة).البيانات المدخلة على COM6 يتم عرضها على COM1 فقط بسرعة كما كان بدون تحديد المواقع المتوسطة السائق.البيانات هي دون تغيير ، حتى إذا أرسل "جون" على COM6 ، وسوف تظهر على COM1 ، حتى ولو ليست صالحة NMEA البيانات التي على ما يرام.

المشكلة هي مع COM8.عندما GPS المتوسطة السائق هو COM1 (Software) و COM8 (الأجهزة).البيانات تظهر في PocketPutty على COM1 بطيئة حقا.الإخراج على الشاشة هو حول 5 شخصيات في الثانية ، بيانات غير صحيحة ولكن فقط تم تسليم ببطء شديد.لي هذا يشير إلى وجود مشكلة في تنفيذ الظاهري المنفذ التسلسلي ، كما لو كان GPS المتوسطة السائق ليس قراءة جميع البيانات حرف واحد فقط في كل مرة ، نظرا عزلت هذه القضية إلى بلدي الظاهري المنفذ التسلسلي.

يمكن لأي شخص تقديم مثال واضح الظاهري المنفذ التسلسلي ، لست متأكدا ما يمكن أن التغيير لتحسين هذا بالنظر إلى COM8 مباشرة يعمل مع نظام تحديد المواقع برمجيات PocketPutty التطبيق ، مما يدل على البيانات المتاحة ، يتم قراءة و هو الصحيح.

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

المحلول

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

تطبيقات العميل بحاجة إلى قراءة 960 بايت من البيانات في قراءة لتحديد المواقع المتوسطة سائق للعمل موافق.هذا ليس حلا مثاليا حتى آخر إصلاح وجد.

القرار إضافة في WaitForSingleObject(IsThereEnoughGPSDATAEvent, COMTotalTimeout) في قراءة طريقة ، حتى أن يقرأ فقط الحصول على البيانات إذا كان هناك كمية كافية من البيانات المتاحة.أصلا أنا طلبت 960 أن تكون متوفرة في المخزن المؤقت ولكن لقد وضعت عليه بعد 10 بايت و أنه لا يزال يعمل.

نموذج التعليمات البرمجية

DWORD COM_Read( DWORD hOpenContext, LPVOID pBuffer, DWORD Count )
{
    if(gpsThreadEvents[GPS_THREAD_EVENT_DATA_AVAILABLE] != NULL)
    {
        if(WaitForSingleObject(gpsThreadEvents[GPS_THREAD_EVENT_DATA_AVAILABLE], GPSTimeouts.ReadTotalTimeoutConstant) != WAIT_OBJECT_0)
        {
            return 0;
        }
    }

    //read code goes in here

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