2013-10-24 14 views
5

का उपयोग कर COM पोर्ट से डेटा पुनर्प्राप्त करें मैं बैच फ़ाइल का उपयोग कर COM पोर्ट से स्वचालित रूप से डेटा पुनर्प्राप्त करने का प्रयास कर रहा हूं।बैच फ़ाइल

मैं कॉम पोर्ट को कॉन्फ़िगर करने और जानकारी के लिए अपने डिवाइस से पूछने के लिए दूसरे में कमांड भेजने में सक्षम हूं।

समस्या यह है कि मैं उस डेटा को कैप्चर करने में सक्षम नहीं हूं जिसे डिवाइस भेजता है। मैं RealTerm साथ की कोशिश की है और डिवाइस काम करने और जानकारी पीसी के लिए वापस भेजता है, लेकिन मैं वास्तव में यह स्वचालित रूप से करने के लिए बैच फ़ाइल की जरूरत है, यहाँ कोड है:

echo off 

MODE COMxx ... 

COPY retrievecommand.txt \\\\.\COMxx: 

COPY \\\\.\COMxx: data.txt 

कोई सुझाव?

+0

'टाइप COMxx' –

+2

का उपयोग करें [बैच फ़ाइल का उपयोग कर COM पोर्ट से डेटा कैसे पढ़ा जाए?] (Http://stackoverflow.com/questions/3923894/how-to-read-data-from-com- बंदरगाह का इस्तेमाल करने वाली बैच-फाइल) – peet

उत्तर

0

पढ़ते समय, COPY कमांड तब तक जारी रहेगा जब तक यह फ़ाइल के अंत का पता नहीं लगाता। चूंकि स्रोत एक उपकरण है (संभावित रूप से अनंत धारा के साथ) यह केवल तब ही रुकता है जब यह फ़ाइल मार्कर के अंत का पता लगाता है। यह Ctrl-Z (0x1A) वर्ण है।

पढ़ने के लिए TYPE कमांड का उपयोग करने के डुप्लिकेट प्रश्न में सुझाव एक ही समस्या का परिणाम होने की संभावना है।

एकल लाइन पढ़ने के लिए कोई मानक तंत्र नहीं है। यदि आप अपने आवेदन को PowerShell पर पोर्ट कर सकते हैं, तो आप अपेक्षाओं के साथ एकल लाइनों को पढ़ने में सक्षम होना चाहिए।

1

डॉस गैबेट कमांड का उपयोग करके एक डॉस लैबेल में एक रिकर्सिव लूप में TYPE कमांड का उपयोग करें। TYPE COM1 जैसे टेक्स्ट को कैप्चर करने के लिए 'एपेंड आउटपुट' का उपयोग करें: >> Data.txt डबल> का मतलब डेटा.txt पर निरंतर संयोजित (या संलग्न) है। एक एकल> या 'रीडायरेक्ट आउटपुट' टेक्स्ट को प्रत्येक स्थान पर डेटा.txt में बदल देगा (यदि कॉम डेटा पोर्ट पर मौजूद है)। मॉनिटर स्क्रीन पर रीडायरेक्ट करने वाली दूसरी पंक्ति जोड़ें ताकि आप गतिविधि भी देख सकें (यानी टाइप COM1:> CON [CON का अर्थ है कंसोल या मॉनीटर स्क्रीन लेकिन आप इसे छोड़ सकते हैं क्योंकि कंसोल डिफ़ॉल्ट है)]

नियंत्रण-जेड है TYPE कमांड द्वारा आवश्यक नहीं है। जब तक ऑपरेटर नियंत्रण-सी नहीं करता है और तब लूप को तोड़ने के लिए एक वाई तब तक टेक्स्ट को लगातार डंप करेगा। आपको वास्तव में लूप को रोकने की आवश्यकता नहीं है जब तक आप बैच फ़ाइल के साथ सभी एक साथ नहीं कर लेते हैं। Data.txt फ़ाइल अन्य कार्यक्रमों के लिए उपलब्ध होगी और यदि आप किसी अन्य प्रोग्राम जैसे नोटपैड.एक्सईई के साथ इसे एक्सेस करने का प्रयास करते हैं तो 'उल्लंघन साझाकरण' प्रस्तुत नहीं करेंगे, जबकि यह बैच फ़ाइल अभी भी लूपिंग है।

यदि आप बैच फ़ाइल में तीसरी पंक्ति बनाते हैं जो TYPE COM1:> Data1.txt [केवल एक रीडायरेक्ट नोटिस] कहता है, तो आपके पास तत्काल पाठ की एक पंक्ति होगी जो अगले पुनरावृत्ति के साथ गायब हो जाएगी। लेकिन कभी-कभी यह उपयोगी होता है यदि आपको डेटा की केवल एक पंक्ति की आवश्यकता होती है। डॉस FIND कमांड का उपयोग कर डेटा की एक पंक्ति को अन्य टेक्स्ट फ़ाइल में निकालने के रचनात्मक तरीके हैं।