हम किसी मौजूदा पॉइंट ऑफ सेल एप्लिकेशन के साथ एप्लिकेशन को एकीकृत करने के लिए पीओएस कीबोर्ड का अनुकरण करने की कोशिश कर रहे हैं।सी # सीरियलपोर्ट - एम्यूलेट पॉज़ कीबोर्ड
हम इस सॉफ्टवेयर भर में भाग गया: Virtual Serial Port Kit
यह मूल रूप से एक आभासी सीरियल पोर्ट जोड़ी बनाता है ताकि डाटा COM1 लिए भेज COM4 से बाहर आते हैं और इसके विपरीत कर सकते हैं। यह हमारे आवेदन को पीओएस एप्लिकेशन में दिखाई देने के लिए COM4 के माध्यम से डेटा भेजने की अनुमति देता है जो यह COM1 पर कीबोर्ड से बात कर रहा है।
सुंदर सरल, लेकिन ऐसा लगता है कि हमें नेट System.IO.Ports.SerialPort वर्ग के साथ दोहराने के लिए सक्षम नहीं हैं पर जा रहा संकेत के कुछ प्रकार है ...
हम क्या से बता सकते हैं सीरियल पोर्ट निगरानी कार्यक्रम, यह है कैसे स्टार्टअप अनुक्रम काम करता है:
- 8 बाइट कमान कुंजीपटल के लिए भेजा
- कीबोर्ड बीप
- संकेत के कुछ प्रकार कीबोर्ड से भेजा गया है
- दूसरा 8 बाइट आदेश कुंजीपटल को भेजा जाता है संकेत
- कीबोर्ड के साथ डिवाइस और संस्करण जानकारी उत्तर से शुरू हो रहा,
हमारे आभासी सीरियल पोर्ट का उपयोग करते समय, हम समझ नहीं संकेत से भेजे गए दोहराने के लिए कैसे कुंजीपटल। हम सभी डेटा ठीक से आ रहे हैं, इसलिए हम मानते हैं कि हमारी सीरियलपोर्ट ऑब्जेक्ट की सेटिंग्स सही हैं।
_port.BaudRate= 9600;
_port.Parity = Parity.None;
_port.DataBits = 8;
_port.StopBits = StopBits.One;
_port.DtrEnable = true;
_port.RtsEnable = true;
हम भी portmon का उपयोग कर हम एक GET_MODEM_STATUS अनुरोध है कि क्या स्थिति आवेदन दूसरा आदेश भेजने से पहले पर इंतज़ार कर रहा है देखने से देखा: यहाँ हमारे serialport सेटिंग्स का एक टुकड़ा है।
इसका निदान कैसे करें इस पर कोई विचार? चूंकि हम .NET का उपयोग कर रहे हैं, इसलिए यह पूरी स्थिति थोड़ा अधिक निम्न स्तर है जिसका उपयोग हम करते हैं।
अद्यतन: मैं यह भी ध्यान रखना चाहता हूं कि हमने यहां एसडीके की कोशिश की: Franson Serial Tools लेकिन हम इस एसडीके का उपयोग करते समय डेटा भी प्राप्त नहीं कर पाए।
अपडेट: हमने किसी भी प्रकार के वर्चुअल सीरियल पोर्ट का उपयोग करके बाहर फेंक दिया है। हमें पीओएस पीसी से दूसरे में चलाने के लिए एक केबल मिला है और कीबोर्ड को अनुकरण करने के लिए डेटा आ रहा है। अब हमारी समस्या यह है कि हम यह नहीं समझ सकते कि कुंजीपटल डेटा को प्राप्त करने के लिए तैयार है, क्योंकि शीर्ष उत्तर का उल्लेख है। ऐसा प्रतीत होता है कि पीओएस एप्लिकेशन बीप को कमांड भेजता है जो सिग्नल की प्रतीक्षा में 3 सेकंड तक इंतजार कर रहा है। तो हमारे आवेदन से बात करते समय यह समय समाप्त होता है, लेकिन असली कीबोर्ड से बात करते समय
हम इसे सीरियलपोर्ट श्रेणी के साथ कैसे कर सकते हैं? हम पहले से ही सत्य और आरटीएस को सही करने के लिए सेट कर चुके हैं, क्या हमें कुछ और सेट करने की आवश्यकता है? या क्या हमें इसे पूरा करने के लिए निचले स्तर के सीरियल पोर्ट पी/आवेषण का उपयोग करना है?
समाधान:
_port.RtsEnabled = false;
Thread.Sleep(1000);
_port.RtsEnabled = true;
यह बनाता है पीओएस आवेदन लगता कुंजीपटल में खामियों को दूर किया जाता है, जो समझ में आता है। मैं # 1 उत्तर को उत्तर के रूप में चिह्नित करूंगा क्योंकि बहुत हमें समाधान खोजने में मदद करता है।
वास्तव में जो स्थिति कीबोर्ड आप उपयोग कर रहे हैं? –
यह एक फुजीत्सू सीएल 9 2 आर है, ऐसा लगता है कि पीओएस एप्लिकेशन को पीसीपीएस मदरबोर्ड के साथ एक पीसी पर चलाना है।हम इस विशिष्ट और स्वामित्व फुजीत्सु हार्डवेयर के बिना पीसी पर एप्लिकेशन चलाने में सक्षम नहीं हैं। – jonathanpeppers
आपका समाधान तार्किक लगता है। मैंने नीचे सुझाव दिया कि पीओएस अधिक डेटा भेजने से पहले रीसेट को पूरा करने की प्रतीक्षा करेगा। ऐसा करने का एक तरीका है कि मैंने नीचे सुझाए गए कॉन्फ़िगर करने योग्य अंतराल (3000ms कहें) का इंतजार करना है। मुझे संदेह है कि आपका पीओएस ऐप वास्तव में आरटीएस को नीचे जाने के लिए इंतजार कर रहा है (रीसेट शुरू हुआ) फिर बैक अप लें (रीसेट पूर्ण हो गया)। – Joe