2013-11-21 3 views
5

सबसे पहले, मैं कहना चाहता हूं कि मुझे पता है कि इस साइट पर पहले से ही इस बिंदु के संस्करण हैं और अन्य मुद्दों को वाई/यूएसबी सीरियल एडाप्टर का विवरण देते हैं और किसी के आवेदन में उनके भौतिक डिस्कनेक्ट को प्रोसेस करते हैं। मैंने उन कई चर्चाओं की समीक्षा की है और बिना किसी सफलता के विभिन्न सुझावों की कोशिश की है। शायद मुझे कुछ याद आ रहा है लेकिन शायद मैं नहीं हूं। इस बिंदु पर, मैंने ट्रैक किया है कि मैंने कितने और किसने कोशिश की है और मैं इस पोस्ट से ताजा चीज़ों को शुरू करने की तलाश में हूं और न केवल पुरानी वस्तुओं को रिहा कर रहा हूं।यूएसबी सीरियल एडाप्टर का पता लगाने से शारीरिक रूप से डिस्कनेक्ट किया जा रहा है

कम से कम पिछले कुछ वर्षों में सबसे हालिया पोस्ट के साथ मूल पोस्ट को समेटने के लिए, विंडोज़/यूएसबी सीरियल एडाप्टर के विकास हैंडलिंग में एक ज्ञात समस्या है जो अनप्लग्ड हैं। सीरियल पोर्ट को बंद करते समय और .NET 4.0 में एक फिक्स को हल करने के दौरान होने वाले एक अनचाहे/अचूक अपवाद के आस-पास कुछ पोस्ट/समाधान केंद्र होते हैं, जो मुझे लगता है कि, इसे हल करने के लिए ईवेंट/अपवाद को अनुमति दें।

मैं एक .NET 4.0 सेवा आवेदन सी ​​# में लिखा एक COM पोर्ट को खोलता है और निर्मित serialport वर्ग का उपयोग कर डेटा के लिए सुनता है:

मैं क्या कर रहा हूँ और का सामना कर रहा है। यह डेटा तब संभवतः अन्य स्थानीय अनुप्रयोगों या दूरस्थ रूप से अन्य स्थानों पर रिपोर्ट किया जाता है। मैं सीरियल पोर्ट एडेप्टर के लिए एक ट्रिप लाइट यूएसबी का उपयोग कर परीक्षण कर रहा हूं लेकिन किसी समस्या का वास्तविक रिपोर्ट किसी लैपटॉप का उपयोग कर रहा था जिसमें आंतरिक यूएसबी सेरियल पोर्ट एडाप्टर डिवाइस है जो समय-समय पर "डिस्कनेक्ट" और "रीकनेक्ट" से/विंडोज ओएस के लिए। मैं अपने विंडोज सेवा अनुप्रयोग में बंदरगाह खुला है, जबकि मैं यूएसबी डिवाइस को भौतिक रूप से डिस्कनेक्ट करके समस्या w/my डिवाइस को अनुकरण कर रहा हूं।

जो मैं अपने परीक्षण/डिबगिंग में देख रहा हूं वह यह है कि डिस्कनेक्शन या यूएसबी डिवाइस के पुन: कनेक्शन के लिए कोई प्रतिक्रिया नहीं है। मुझे डेटा प्राप्त हो रहा है और डेटा का प्रवाह केवल सेवा एप्लिकेशन पर रुक जाता है। यदि मैं डिवाइस को दोबारा जोड़ता हूं, तो COM पोर्ट अभी भी एप्लिकेशन के लिए खुला है लेकिन कोई नया डेटा नहीं है। अगर मैं बंदरगाह बंद करता हूं, तो कोई "एप्लिकेशन उड़ाना नहीं है"/अनचाहे अपवाद त्रुटि। बंदरगाह बंद हो जाता है और एप्लिकेशन सामान्य रूप से बंद हो जाता है। समय पर, क्या मुझे एक आकर्षक अपवाद मिलता है जो मैं देखना चाहता हूं। यदि मैं एप्लिकेशन शुरू करता हूं, तो डेटा फिर से प्रवाह शुरू होता है।

मैं चाहता हूं कि एप्लिकेशन को यह पता चल जाए कि यूएसबी सीरियल/COM पोर्ट को सिस्टम से हटाया गया है, अधिमानतः सीरियलपोर्ट स्तर पर किसी प्रकार के अपवाद के साथ जो मुझे अपवाद पकड़ने, बंदरगाह को बंद करने और "फिर से खोलने" की अनुमति देता है पोर्ट मोड "जब तक कि पीसी को" रीकनेक्ट "नहीं किया जाता है। क्या यह सीरियलपोर्ट वर्ग के आसपास इस तरह से संभव हो सकता है या क्या मुझे "सीरियल पोर्ट" डिस्कनेक्ट होने के बजाय सामान्य "यूएसबी डिवाइस" डिस्कनेक्ट होने के आसपास केंद्रित समाधान को आगे बढ़ाने की ज़रूरत है? (मेरे पास प्रोग्रामिंग रूप से यह निर्धारित करना है कि डिवाइस पहले से ही तैयारी में इसे ध्वजांकित करने के बजाए एक यूएसबी डिवाइस है ...............)

धन्यवाद, मार्क

+0

कुछ ऐसा जो मैंने पाया है: यूएसबी सीरियल एडाप्टर डिस्कनेक्ट होने के साथ और मैं सेवा अनुप्रयोग को रोकता हूं, सीरियलपोर्ट। आईएस ओपन वैल्यू गलत पर सेट है, इसलिए कुछ डिस्कनेक्ट का पता लगा रहा है और सीरियल पोर्ट बंद कर रहा है (क्या वह .NET है 4.0 फिक्स ??)। हालांकि, IOpen ध्वज परिवर्तन होने पर मैंने पकड़ने के लिए किसी भी तरह से निर्धारित नहीं किया है। मेरे पास बंद() की जगह ओवरराइड है और इसे डिस्कनेक्ट समय पर नहीं बुलाया जा रहा है। –

उत्तर

0

डिवाइस क्या है जिसे आप धारावाहिक से संचार कर रहे हैं? क्या हैंडशेक/स्टेटस अनुरोध भेजने के लिए इसका कोई समर्थन है? यदि हां, तो क्या आप यह जांचने के लिए अंतःक्रियात्मक रूप से मतदान कर सकते हैं कि डिवाइस अभी भी वहां है, और यदि टाइमआउट के बाद कुछ भी वापस नहीं आता है, तो अपवाद उठाएं?

वैकल्पिक रूप से, मैंने एक बार पहले इस library का उपयोग किया है, जो आपको विंडोज डिवाइस मैनेजर से बातचीत करने की अनुमति देता है। आलेख डिवाइस परिवर्तनों की निगरानी के लिए कक्षा का विस्तार करने के तरीके के बारे में कुछ विवरण प्रदान करता है, आप इसे कार्यान्वित कर सकते हैं और थोड़ी किस्मत के साथ इस घटना को उठाया गया है जब डिवाइस संक्षिप्त रूप से डिस्कनेक्ट हो जाए - आप इसका उपयोग अपने डिवाइस की जांच के लिए कर सकते हैं निरंतर मतदान से, संभव है?

संबंधित मुद्दे