2012-02-10 10 views
26

के रूप में गलत तरीके से डिवाइस एक डिवाइस पर काम कर रहा है जो एक (आभासी) धारावाहिक बंदरगाह के माध्यम से एक पीसी के साथ संचार करता है। समस्या यह है कि हम जो डेटा भेज रहे हैं वह कभी-कभी विंडोज़ द्वारा बस माउस के रूप में गलत तरीके से पहचाना जाता है, जिसके बाद "माइक्रोसॉफ्ट सीरियल बॉलपॉइंट" ड्राइवर लोड होता है और माउस पॉइंटर स्क्रीन पर चारों ओर कूदना शुरू कर देता है और चीजों पर यादृच्छिक रूप से क्लिक करना शुरू कर देता है।डिवाइस धारावाहिक माउस

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

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

केवल 7-बिट ASCII पर्याप्त भेजना होगा? क्या ऐसे कोई अन्य डिवाइस हैं जिन्हें मुझे पता लगाने के बारे में चिंता करने की ज़रूरत है?

+2

आप कार्यान्वयन विवरण है कि सामान्य रूप से उपलब्ध नहीं हैं के लिए पूछ रहे हैं। कोई ऐसा व्यक्ति है जो आपकी मदद कर सकता है। वह रेडमंड में रहता है और एक साझेदार कार्यक्रम या माइक्रोसॉफ्ट सपोर्ट के माध्यम से सुलभ है। –

+4

मैंने पहले भी देखा है कि इस उपकरण में एक COM पोर्ट के रूप में Windows के लिए में प्रस्तुत करता है और फिर स्वचालित रूप जैसे ही यह प्रणाली है कि यह एक माउस के रूप में देखा जाता है से जुड़ा है संचारण शुरू होता है। यह उस डेटा के बावजूद है जो इसे भेजता है, और यह निश्चित रूप से आपके 4 बाइट से मेल नहीं खाता है। क्या आपके डिवाइस ट्रांसमिटिंग शुरू होने से पहले आप थोड़े समय का इंतजार कर सकते हैं? – tinman

+0

टिनमैन: संकेत के लिए धन्यवाद! मैं इसके बजाय अपडेट के लिए पीसी एप्लिकेशन पोल रखने का प्रयास करूंगा, और पहला अनुरोध करने से पहले एक या दो सेकंड का इंतजार करूंगा। – doynax

उत्तर

4

मुझे इस विंडोज़ बग का सामना करना पड़ा है। यहां विषय पर मेरा स्वयं का शोध है:

माइक्रोसॉफ्ट इस बग को स्वीकार करता है: http://support.microsoft.com/kb/819036 अपने उपकरण को डाउनलोड करने से शुरू करें और देखें कि यह समस्या हल करता है या नहीं।

  • डाउनलोड करें & अपने प्रोग्राम को स्थापित करें।
  • इसे प्रोग्राम निष्पादित करते समय C: \ program \ Microsoft comdisable \
  • 0 कमांड प्रॉम्प्ट से चलाएं comdisable /list लिखें।
  • कंप्यूटर पर सभी बंदरगाह दिखाए जाएंगे।
  • comdisable /disable COMx लिखें जहां x पोर्ट नंबर है।
  • कंप्यूटर पर सभी बंदरगाहों के लिए ऐसा करें।
  • रीबूट।

यह उम्मीद है कि एक सार्वभौमिक समाधान के रूप में काम करना चाहिए।

वैकल्पिक रूप से, आप boot.ini में हैक कर सकते हैं लेकिन मुझे विश्वास नहीं है कि यह Vista/Win 7 में काम करता है। मेरे पास सिस्को सिस्टम से कुछ ऐप नोट है जो यह वर्णन करता है कि यह कैसे करें। यदि उपर्युक्त आपकी समस्या का समाधान नहीं करता है, तो कृपया मुझे बताएं।

+0

सुझाव के लिए धन्यवाद। मैं अपने डिवाइस पर प्रोटोकॉल को बदलकर किसी भी उपयोगकर्ता हस्तक्षेप से बचना पसंद करूंगा ताकि विंडोज़ को भ्रमित न किया जा सके, लेकिन यदि यह काम नहीं करता है तो कम से कम मेरे पास एक आधिकारिक वर्कअराउंड (और "बग" पावती) है। मैंने अपने डेटा को 7-बिट ASCII के रूप में पुन: पैकेज करने के साथ टिनमैन के सुझाव को कार्यान्वित किया है और अभी तक समस्या को फिर से देखना नहीं है, हालांकि ईमानदार होने के कारण यह कभी भी दिखाई नहीं देता है। – doynax

+0

@doynax मुझे यकीन नहीं है कि यह "बॉलपॉइंट" जंक किस प्रकार का अस्पष्ट प्रोटोकॉल उपयोग करता है, लेकिन 7-बिट ASCII में बदलना कुछ भी हल नहीं करेगा। क्योंकि विंडोज मानते हैं कि इस प्राचीन माइक्रोसॉफ्ट माउस के पास एक निश्चित बॉड्रेट है। 9600 की तुलना में तेज़ बॉड्रेट का उपयोग करते समय मुझे समस्या का सामना करना पड़ा है, डेटा अचानक माउस से आने वाले कुछ के रूप में व्याख्या किया जा सकता है। जब ऐसा होता है ... आपदा। माउस प्रकाश की गति से सभी स्क्रीन पर स्थानांतरित हो जाएगा, हर जगह क्लिक करें! कुछ भी हो सकता है। मुझे इसका जोखिम नहीं होगा, मैं उस लिंक का उपयोग करता हूं जो Microsoft उस लिंक में अनुशंसा करता है। – Lundin

+0

शुक्र है कि हम वास्तविक सीरियल पोर्ट के बजाय वर्चुअल सीरियल पोर्ट ड्राइवर के साथ एक एफटीडीआई चिप का उपयोग कर रहे हैं। इसलिए अमान्य बॉड रेट सेटिंग के माध्यम से डेटा को उलझाने का कोई खतरा नहीं है। – doynax

25

मैं सिर्फ इस समस्या को अपने आप Windows 7 Professional x64 पर का सामना करना पड़ा, और एक समाधान है कि मेरे लिए काम किया रजिस्ट्री में जाकर निम्न मान को संपादित करने के लिए किया गया था: 4 को

Location: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\sermouse 
Key: Start 
Value: 3 

बदलें Value और यह होने वाली इस समस्या को बंद हो जाएगा ।

Here is a list of all valid Start values:

0 Boot (loaded by kernel loader). Components of the driver stack for the boot (startup) volume must be loaded by the kernel loader. 

1 System (loaded by I/O subsystem). Specifies that the driver is loaded at kernel initialization. 

2 Automatic (loaded by Service Control Manager). Specifies that the service is loaded or started automatically. 

3 Manual. Specifies that the service does not start until the user starts it manually, such as by using Device Manager. 

4 Disabled. Specifies that the service should not be started. 

एक reg संपादित करें आदेश के रूप में निम्नानुसार होगा:

REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\sermouse" /V Start /T REG_DWORD /F /D 4 

फिर आप कंप्यूटर, जो अब सही ढंग से शुरू कर देना चाहिए और पता लगाने की कोशिश नहीं फिर से शुरू करनी एक धारावाहिक माउस।

शुभकामनाएं।

+0

बिल्कुल सही! मुझे ओएस को फिर से शुरू करने की जरूरत थी। – iforce2d

+0

इसका उल्लेख करना भूल गया, मैं इसे उत्तर में जोड़ूंगा, धन्यवाद। – Serdalis

+1

यह मुझे 2 घंटे के लिए पागल कर दिया! – gonatee

1

शायद यह मदद करता है: हमें एफटीडीआई एफटी 232RL.We के साथ एक ही समस्या थी, यह पता चला कि यह हमारे पीसीबी का हार्डवेयर मुद्दा था।

एफटीडीआई-डेटाशीट # RESET-पिन के बारे में बताता है: सक्रिय कम रीसेट पिन। इसका उपयोग बाहरी डिवाइस द्वारा एफटी 232 आर को रीसेट करने के लिए किया जा सकता है। यदि आवश्यक नहीं है तो अनचाहे छोड़ा जा सकता है, या वीसीसी तक खींच लिया जा सकता है।

हमारे आवेदन में रीसेट-पिन की आवश्यकता नहीं थी, इसलिए हमने इसे 1k पुल-अप के माध्यम से Vcc से जोड़ा। ऐसा लगता है कि # रीसेट-पिन के पुल-अप ने FT232RL का एक अपरिभाषित स्टार्ट-अप किया है, कम से कम हर दूसरे कनवर्टर, हमने यूएसबी-सॉकेट से कनेक्ट किया है, जो डिवीव मैनेजर में सीरियल-बॉल-पॉइंट का कारण बनता है। हमने # रीसेट-पिन पर पुल-अप-रेजिस्टर को हटा दिया, इसके साथ # RESET-पिन अनकनेक्टेड है। तब से प्रत्येक इंटरफ़ेस ने परिश्रमपूर्वक काम किया और अब विंडोज डिवाइस मैनेजर में सीरियल-बॉल-पॉइंट नहीं बनाए।

+0

यह मेरे लिए FT232BR के साथ काम नहीं किया। – HOPE

1

यदि आपके पास "सत्य" सीरियल पोर्ट है, या एक यूएसबी डोंगल (आरएस -223, आरएस -485, इससे कोई फर्क नहीं पड़ता) इस समस्या को टर्मिनल के साथ सीरियल पोर्ट खोलने के पहले चारों ओर काम किया जा सकता है, या जो भी एप्लिकेशन आप इसकी निगरानी करना चाहते हैं, और उसके बाद ही डिवाइस को प्लग करना चाहते हैं। अपने स्वयं के लिए, आपको कनेक्शन को समाप्त करने से पहले डिवाइस को हटाने के लिए भी ध्यान देना चाहिए।

डिवाइस पर ही बिकने वाले एफटीडीआई चिप्स के साथ, आप को दबा दिया जाता है। यह कुछ दौर ले लिया मुझे प्रबंधन है कि एक डिवाइस अपने आप एक FTDI चिप पीसीबी बैठक Windows कंप्यूटर उपयोगकर्ता के मित्रता के लिए संभावना पास नहीं, चाहे कितना चालाक एक यूएसबी सॉकेट की तरह लग सकता है पर soldered के साथ रखा पर संवाद स्थापित करने की व्याख्या करने के लिए कैबिनेट पर ... (शुक्र है, ये सभी स्थितियां एक साथ आ रही हैं काफी दुर्लभ और असामान्य हैं)

+0

@ जुबेशन मुझे पता है कि आप अधिक व्यक्तिगत रूप से क्या सोचते हैं, अधिक उपयोगकर्ता के अनुकूल इंटरफ़ेस के लिए सीरियल-टू-यूएसबी चिप्स (एफटीडीआई, सीएच 340 जी, एटीमेगा 32u4, आदि ...) के बेहतर विकल्प क्या हैं? –

+1

@DRS डेविड सॉफ़्ट यदि आपके डिज़ाइन में आपके डिवाइस के लिए कुछ उपयुक्त डिवाइस क्लास का उपयोग करके एक उचित यूएसबी इंटरफेस शामिल हो सकता है, तो सबसे अधिक संभावना है कि अंतिम उपयोगकर्ता चीजों के लिए (निश्चित रूप से यह ड्राइवर बनाने की भी मांग करता है)। यदि ऐसा नहीं है, तो मुझे लगता है कि एक सामान्य DSUB-9 कनेक्टर (आरएस -223) के साथ रहना बेहतर है, यदि आप बाद में किसी अन्य स्वायत्त प्रणाली के लिए कुछ अन्य माइक्रोकंट्रोलर-संचालित डिवाइस के साथ संयुक्त डिवाइस का उपयोग करना चाहते हैं तो यह अधिक मजबूत है । एक पीसी से कनेक्ट करने के लिए डोंगल (या आरएस -223 इंटरफ़ेस कार्ड) का उपयोग करें। – Jubatian

5

यह पता चला है कि विंडोज़ में माउस का पता लगाना आमतौर पर serenum.sys फ़िल्टर ड्राइवर द्वारा संभाला जाता है। यह ड्राइवर serial plug-and-play के साथ विरासत धारावाहिक चूहों के लिए समर्थन लागू करता है। माइक्रोसॉफ्ट ने सोर्सकोड as a WDK sample भी प्रदान किया है।

पता लगाने के दौरान बंदरगाह DTR + RTS पर जोर देते हुए 1200-7-एन -1 मोड में स्विच करते हैं, जिसमें विफलता के मामले में दो रिट्री के साथ 200 एमएस के भीतर एक प्रतिक्रिया की उम्मीद होती है। दुर्भाग्यवश एक विरासत माउस के लिए एक M या B चरित्र पहचान के रूप में पर्याप्त है।

हमारे मामले में प्रोटोकॉल इन पात्रों से बचने के लिए फिर से काम किया गया और अब अब और गलत पहचान की जा करने के लिए नहीं दिखाई देता है।

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

वैकल्पिक रूप से धारावाहिक नियंत्रण संकेतों के साथ वास्तव में एक यूएसबी सीडीसी डिवाइस द्वारा लगाया गया, या DTR या RTS संकेतों को संसाधित करने और आउटपुट पर रोक लगाने के साथ। असल में प्लग-एंड-प्ले प्रोटोकॉल को कार्यान्वित करना भी एक निर्विवाद विकल्प होगा। माना जाता है कि नियंत्रण संकेतों के पूर्ण पूरक के बिना सस्ते आरएस 232 केबल्स हैं, हालांकि यह दृष्टिकोण अभी भी असफल हो सकता है।

+0

यह टिप्पणी मेरे लिए बहुत उपयोगी है! अब मैं समझता हूं कि क्यों मेरे Arduino-clones बिजली से पहले दो बार रीबूट करते हैं (क्योंकि '100NF' टोपी के माध्यम से CH340 का' DTR' पिन रीसेट पिन से कनेक्ट होता है।) महान स्पष्टीकरण के लिए धन्यवाद! –

+0

https://electronics.stackexchange.com/a/279630/51756 –

3

मैं भी इस समस्या का सामना करना पड़ा FTDI चालक की उन्नत गुण में "धारावाहिक प्रगणक" अक्षम करने (डिवाइस प्रबंधक में COM पोर्ट के गुणों) से यह तय हो गई। यह http://www.ftdichip.com/Support/Documents/AppNotes/AN_107_AdvancedDriverOptions_AN_000073.pdf में वर्णित है।

+0

यह मेरी राय में सबसे अच्छा समाधान है। मेरे रेडियो लिंक डिवाइस पर मैं मेजबान TX/RX प्रकाश को हर समय चमकती देख सकता था और यह स्पष्ट रूप से धारावाहिक गणनाकर्ता स्कैनिंग कर रहा था। एक बार डिवाइस को अक्षम करने और कनेक्ट करने के बाद (कोई भी रीबूट जरूरी नहीं है जो एक और प्लस है) तब तक कोई गतिविधि नहीं थी जब तक कि डिवाइस का उपयोग करने वाले प्रोग्राम को शुरू नहीं किया जाता है। इसके अलावा मुझे डिवाइस, हिट-एंड-मिस से कनेक्ट करने में पिछली बार परेशानी थी, जो सीरियल पोर्ट लॉक/खोलने के अपने आवेदन के बीच में सीरियल एन्यूमेरेटर कूद रहा होगा। धन्यवाद! –

1

मैं धारावाहिक पैमाने पीसी से जुड़ा सिर के साथ 2010 के बाद से इस समस्या थी। धारावाहिक कनवर्टर या नहीं करने के लिए यूएसबी .. मैं onkly SILABS डिवाइस की CP2102 या की तरह उपयोग करें .. मैं इसके चारों ओर बस चालक में माउस/HIDA तहत बॉल प्वाइंट ड्राइवर के लिए डिवाइस प्रबंधक नज़र इंस्टॉल करें और फिर करने की अनुमति देकर काम किया और फिर बस ड्राइवर को अक्षम , इसे अनइंस्टॉल न करें इसे बस अक्षम करें। फिर जब आप चालक के साथ भी रिबूट करते हैं तो ऐसा लगता है कि विंडोज़ कॉम्पोर्ट को धारावाहिक माउस के रूप में अनदेखा करती है और इनपुट से डेटा का उपयोग करती है। आपको यह भी पता चलेगा कि यदि बॉलपॉइंट ड्राइवर सक्रिय है तो वह कॉम्पार्ट उपयोग में है और कभी-कभी COM पोर्ट पहुंच योग्य नहीं होता है ... उम्मीद है कि यह किसी को वहां मदद करता है :) टीएक्स बेन

0

मेरे विकास पर्यावरण में, मैं ' डिवाइस प्रबंधक से माइक्रोसॉफ्ट सीरियल माउस अक्षम कर दिया है।

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

Microsoft Serial Mouse Drivers Messing With Arduino Clone's CH340G UART to USB

+0

यह आपके लिए व्यक्तिगत रूप से काम कर सकता है, लेकिन यह मूल प्रश्न की समस्या का समाधान नहीं करता है, जिसके लिए एक समाधान की आवश्यकता होती है जो अंतिम उपयोगकर्ताओं के लिए काम करती है और न केवल डेवलपर्स सिस्टम कॉन्फ़िगरेशन को संशोधित करने के इच्छुक हैं। –

+0

@ChrisStratton True, और मैंने इसे उत्तर के रूप में पोस्ट नहीं किया है, लेकिन मैं केवल इस तरह के देवताओं के लिए एक त्वरित समाधान प्रदान करना चाहता हूं। विंडोज़ को अपने डिवाइस को माउस के रूप में पहचानने से रोकने के लिए सीरियल कनेक्शन के बाद मैंने 500 मिलीमीटर देरी का इस्तेमाल किया। –

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