2015-11-16 6 views
5

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

विशिष्ट उपयोग मामला है: मैं एक यूएसबी-सीरियल उपकरण है, जो पर /dev/tty.usbmodem99999

मैं एक एकीकरण परीक्षण है कि एक से अधिक आदेश (सफलतापूर्वक) चलाता लिखा है रहता है।

हालांकि कमांड को फिर से चलाने पर डिवाइस प्रतिक्रिया नहीं देता है। मैंने पुष्टि की है (साथ ही मैं कर सकता हूं) कि डिवाइस ठीक है। यह उम्मीद के अनुसार अन्य प्लेटफार्मों पर काम करता है। हालांकि ओएसएक्स पर मैं डिवाइस (पावर चक्र) को रीसेट करने के बाद ही परीक्षणों को फिर से चला सकता हूं।

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

यह एप्लिकेशन: "http://www.aggsoft.com/serial-port-monitor.htm" में एक 'जासूसी' सुविधा है जिसे मैं ओएसएक्स पर समान कार्यक्षमता नहीं ढूंढ पा रहा हूं। मैंने ओएसएक्स पर 'धारावाहिक उपकरण' के साथ प्रयोग किया है, लेकिन ऐसा लगता है कि यह एक बंदरगाह पर जासूसी संचालन करता है, उस स्थिति में ऐसा लगता है कि उपयोग मामले बंदरगाह पर निगरानी के बजाए दो उपकरणों के बीच एक पासथ्रू के रूप में है ।

किसी भी विचार की बहुत सराहना की।

धारावाहिक पुस्तकालय इस्तेमाल किया जा रहा है: https://github.com/jacobsa/go-serial

+1

के बारे में क्या [यूएसबी ट्रेसर] (http://stackoverflow.com/a/32468703/1643939)? – nemo

+0

@gbulmer यह एक निष्पादन योग्य है। और एक गोलांग सीरियल लाइब्रेरी का उपयोग कर। लेकिन आपका अधिकार, यह निश्चित रूप से स्पष्ट नहीं है, मैंने उपयोग की जाने वाली सीरियल लाइब्रेरी दिखाने के लिए संपादित किया है। – Gary

+0

@nemo मैंने पहले ही कोशिश की है, मुझे उस उपकरण से कुछ भी नहीं मिला। मैं फिर कोशिश करूंगा, क्या मैं इसका दुरुपयोग कर सकता हूं। – Gary

उत्तर

4

आप DTrace इस्तेमाल किया है?

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

यह बहुत सरल था क्योंकि मुझे एप्लिकेशन का नाम पता था, इसलिए डीटी्रेस इसका निरीक्षण कर सकता था। मैंने फ़ाइल डिस्क्रिप्टर को खोले गए एप्लिकेशन डिस्क्रिप्टरों का निरीक्षण करने के लिए डीटी्रेस स्क्रिप्ट लिखी, ('/dev/tty.usbmodem ...' की तलाश में) फिर उस फ़ाइल डिस्क्रिप्टर के साथ बातचीत देखी गई।

मैंने डिवाइस ड्राइवर नहीं देखा है। सिद्धांत रूप में डीटीआरएस ऐसा कर सकता है अगर कर्नेल या डिवाइस ड्राइवर को डीटी्रेस के साथ काम करने के लिए संकलित किया गया है, हालांकि इसमें कोई निश्चितता नहीं है। ऐप्पल भी कोड बना सकता है जो डीटीआरएस के लिए 'अदृश्य' है (उदाहरण के लिए मेरा मानना ​​है कि आईट्यून्स को डीआरएम तंत्र को डीआरएम तंत्र की रक्षा के लिए अपारदर्शी बनाया गया था।)

तो एक संभावित प्रारंभिक बिंदु सभी ओएस ओपन/क्रिएट कॉल का निरीक्षण करना है /dev/tty.usbmodemXXX के लिए, और उपप्रणाली की पहचान करने का प्रयास करें और उसका निरीक्षण करें। आप पाएंगे कि सबसाइटम देखा जा सकता है, और यह देखना चाहिए कि ओएस + डिवाइस ड्राइवर क्या कर रहा है।

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

ये लिंक मदद मिल सकती है:
About DTrace
DTrace Guide
DTrace book
Brendan Gregg's Top 10 DTrace scripts for Mac OS X
Apple DTrace manual
Hooked on DTrace

+0

जानकारी के लिए धन्यवाद, मैं इसमें जांच करूंगा। मैंने अपने मालिक को हार्डवेयर ट्रेसर का जिक्र किया, जो मेरे महान आश्चर्य के लिए ... निजी परियोजनाओं के लिए घर पर एक है ... तो मैं शायद उस मार्ग पर जाउंगा। – Gary

+0

@ गैरी - यदि आप डीटीआरएस के साथ एक यूएसबी स्निफर को जोड़ सकते हैं तो आप 'सब कुछ' देख सकते हैं। शुभकामनाएँ। – gbulmer

+0

तो अपडेट करें: मैंने हार्डवेयर ट्रेसिंग मॉड्यूल का उपयोग किया ... हालांकि ट्रेसिंग की प्रकृति का मतलब यूएसबी -> सीरियल एडाप्टर का उपयोग करना है, फिर हार्डवेयर डिवाइस पर rs-232 -> rs-232। इसका असर यह था कि मैं एक अलग यूएसबी -> सीरियल डिवाइस का उपयोग कर रहा था और समस्या चली गई। इसलिए हमने निश्चित रूप से सिद्ध किया है कि यह ड्राइवर स्तर या नीचे एक समस्या है। – Gary