2012-05-11 10 views
5

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

समस्या यह है - सेमी-नियमित आधार पर, हम पाते हैं कि डुप्लिकेट यूएसबी आभासी कॉम पोर्ट बनाए जा रहे हैं। उदाहरण के लिए, मेरे पीसी पर, जब मैं डिवाइस मैनेजर में बंदरगाहों को देखता हूं, और "छुपा डिवाइस देखें" का चयन करता हूं, तो मेरे पास एक ही डिवाइस के लिए दो प्रविष्टियां हैं - एक COM6 पर, और एक COM8 पर।

दुर्भाग्यवश, हम विश्वसनीय रूप से समस्या को फिर से बना नहीं सकते हैं। हमें संदेह है कि ऐसा तब हो सकता है जब कोई हमारे डिवाइस चलने पर यूएसबी केबल को तुरंत डिस्कनेक्ट और रीकनेक्ट करता है, लेकिन इसकी पुष्टि की जानी चाहिए।

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

मेरे पास बहुत कम सीरियल और यूएसबी अनुभव है, और यह कुछ हद तक नुकसान पहुंचा रहा है कि इसे ठीक करने के लिए कैसे शुरू किया जाए।

क्या कोई सुझाव दे सकता है कि यह क्यों हो रहा है?


Misc। विवरण, मामले में वे प्रासंगिक हो सकता है:

यूएसबी सीरियल कोड एक सी ++ DLL

VS2008

FTDIBUS यूएसबी/सीरियल ड्राइवरों में

Windows XP और Win7

का स्क्रीन शॉट है डुप्लिकेट रजिस्ट्री प्रविष्टियां (चयनित कुंजी का मान नोट करें!)

Screen shot of Registry entries

+3

संभवत: इस से संबंधित? http://blogs.msdn.com/b/oldnewthing/archive/2004/11/10/255047.aspx – jcoder

+0

हां, जॉनबी सही है। यूएसबी बस पर उनके स्थान से कोई सीरियल नंबर वाले डिवाइस की पहचान की जाती है। जब यह परिवर्तन होता है, तो इसे एक अलग डिवाइस के रूप में देखा जाता है। – janm

+0

एफटीडीआई अपने क्रैपी ड्राइवरों के लिए कुख्यात है। समर्थन के लिए उनसे संपर्क करें। –

उत्तर

2

के रूप में रेमंड चेन के ब्लॉग पर बताया गया है, पुरानी नई बात, यहां, और टिप्पणीकर्ताओं ऊपर से:

संक्षेप में:

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

इसलिए, कोई सीरियल नंबर या जिसके साथ एक डिवाइस डुप्लिकेट सीरियल नंबर एक सीरियल पोर्ट यह पहले में प्लग नहीं किया गया है में प्लग किया गया होने के रूप में Windows रजिस्ट्री का झंडा लगा हुआ है, तो यह एक नया रूप में माना जाएगा एक पुराने डिवाइस के पुन: कनेक्शन के बजाय डिवाइस। जैसा कि आप वर्णन करते हैं, इसके परिणामस्वरूप "घोस्ट" डिवाइस होंगे।

कुछ FTDI उपकरणों विशेष रूप से निर्माता द्वारा इस समस्या होने के रूप में बाहर कहा जाता है:

+0

बीटीडब्ल्यू कि एफटीडीआई टेक्नोटॉजी विपरीत समस्या के लिए है - जब विनिर्माण या परीक्षण उपकरणों में अनुक्रमिक रूप से प्लग किए गए हजारों समान (सीरियल नंबर के अलावा) हार्डवेयर होते हैं, तो विंडोज प्रत्येक को एक नया COM पोर्ट नंबर निर्दिष्ट करता है और जल्द ही समाप्त हो जाता है। बेवकूफ निर्माता सीरियल नंबर साझा करके इसे "ठीक करें", जो इस प्रश्न में चर्चा की गई समस्या उत्पन्न करता है। यह "IgnoreHardwareSerialNumber" हैक विनिर्माण और परीक्षण उपकरण को COM बंदरगाहों से बाहर निकलने से रोकने का एक तरीका है, जबकि डिवाइस पर अद्वितीय सीरियल नंबर प्रदान करते हुए, जो उपयोगकर्ताओं को सही व्यवहार देता है। –

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