नेट के serialport वस्तु में, एक सीरियल पोर्ट अनप्लग या में खामियों को दूर हो जाता है, तो यह निर्धारित करने के लिए एक रास्ता है।सीरियल पोर्ट केबल अनप्लग्ड
उत्तर
यूएसबी के विपरीत, सीरियल पोर्ट में लिंक स्थिति में भौतिक परिवर्तन का पता लगाने के लिए कोई अंतर्निहित तरीका नहीं है। कुछ डिवाइस (अर्थात् डीटीआर, डीएसआर, और कभी-कभी डीसीडी) का उपयोग करके "डिवाइस तैयार/तैयार नहीं" सिग्नलिंग का एक सीमित रूप किया जा सकता है, लेकिन ऐसा लगता है कि आप जो भी खोज रहे हैं (यह बिल्कुल नहीं है आरएस 232 तक - डिवाइस को इसका समर्थन करना चाहिए, आप मुख्य रूप से इसे मॉडेम से बात करने के लिए उपयोग करते हैं।)
तो, संक्षेप में: नहीं, सामान्य मामले में। यदि आप उस उपकरण को प्रोग्राम/प्रोग्राम कर सकते हैं जिसके साथ आप संवाद करने की कोशिश कर रहे हैं, और आप जानते हैं कि यह एक निश्चित रेखा को उच्च (उदाहरण के लिए) रखेगा, तो आप उस पंक्ति को उच्च स्तर पर जाने के लिए मतदान कर सकते हैं। लेकिन अगर आप ऐसे डिवाइस में प्लग करते हैं जो उस तरह की अनुमानित करने के लिए प्रोग्राम नहीं किया गया है, तो वास्तव में बताने का कोई तरीका नहीं है। (कुछ डिवाइस डिफ़ॉल्ट रूप से डीएसआर उच्च धारण कर सकते हैं लेकिन यह किसी भी तरह से शर्त शर्त नहीं है।)
आप availables सीरियल पोर्ट, आप के अंदर उन लोगों के साथ comunicate करने के लिए कोशिश कर सकते हैं पता लगा सकते हैं कोशिश करें ... ब्लॉक पकड़ो।
यह C#
using System;
using System.Collections.Generic;
using System.IO.Ports;
public class MyClass
{
public static void Main()
{
string[] sPorts = SerialPort.GetPortNames();
foreach(string port in sPorts)
WL(port);
RL();
}
#region Helper methods
private static void WL(object text, params object[] args)
{
Console.WriteLine(text.ToString(), args);
}
private static void RL()
{
Console.ReadLine();
}
private static void Break()
{
System.Diagnostics.Debugger.Break();
}
#endregion
}
मैं इसे करने की कोशिश नहीं की है, लेकिन SerialPort.PinChanged घटना और DsrChanged पर देखने में बंदरगाहों का पता लगाने का एक उदाहरण है।
जब भी कोई सामान्य डिवाइस सीरियल पोर्ट में प्लग इन किया जाता है और स्विच किया जाता है, तो मुझे लगता है कि बंदरगाह के डीएसआर पिन पर जोर दिया जाएगा; और इसके विपरीत यदि वह डिवाइस अनप्लग किया गया है, या जब इसे बंद कर दिया गया है, तो मैं उम्मीद करता हूं कि डीएसआर पिन स्थिति बदल/ड्रॉप हो।
विभिन्न पिंस का सामान्य अर्थ है:
- DSR: डिवाइस प्लग इन और
- सीटीएस चालू है: डिवाइस डेटा प्राप्त करने के लिए तैयार है (यह नीचे भी जब एक हो सकता है डिवाइस प्लग इन है, उदाहरण के लिए जब डिवाइस पर सीमित ऑन-बोर्ड बफर होता है और पीसी से फ्लो-कंट्रोल डेटा ट्रांसफर पर इस पिन का उपयोग करता है)
- डीसीडी: डिवाइस (मॉडेम) ने फोन लाइन पर किसी अन्य मॉडेम पर कनेक्शन स्थापित किया है (इसलिए जो भी आप भेजते हैं उसे टी स्थानांतरित करने के लिए डेटा के रूप में माना जाता है ओ रिमोट मॉडेम)
इनमें से, जो आपके ओपी का उत्तर देता है वह डीएसआर है।
सही है यदि आपका डिवाइस हार्डवेयर हैंडशेकिंग का उपयोग कर रहा है। कई डिवाइस नहीं करते हैं। वास्तव में कुछ धारावाहिक बंदरगाहों में उन पिनों को भी शामिल नहीं किया जाता है। –
यह इस बात पर निर्भर करेगा कि आप किस प्रकार के डिवाइस से कनेक्ट हैं।
आपकी सबसे अच्छी शर्त PinChanged ईवेंट हैंडलर को संभालने का प्रयास करना है।
कुछ डिवाइस डीएसआर उठाएंगे जब कनेक्ट और स्विच किया जाएगा, अन्य सीटीएस, अन्य हैंडशेकिंग के लिए इनका उपयोग करेंगे।
अधिकांश धारावाहिक उपकरणों में किसी क्वेरी के कुछ प्रकार की प्रतिक्रिया प्रतिक्रिया होती है। बस एक साधारण प्रश्न भेजें और प्रतिक्रिया के लिए प्रतीक्षा करें। अगर आपको यह नहीं मिलता है, तो डिवाइस वहां नहीं है या कम से कम प्रतिक्रिया नहीं दे रहा है।
वहां सीरियल पोर्ट हटाने/सम्मिलन का पता लगाने का एक तरीका है।नेट - खास तौर पर अगर मैं प्रेरित SerialPortDisconnected घटना एक अच्छा घटना चाहते हैं मुझे विश्वास है कि() .Connect के इस फार्म के एक पाश प्रत्येक कनेक्शन के लिए बंदरगाह के लिए बाध्य में भद्दा है Detect serial port insertion/removal
पोस्टर शायद यह पता लगाना चाहता था कि सीरियल पोर्ट से * * डिवाइस * संलग्न है, न कि सिस्टम में सीरियल पोर्ट स्थापित है या नहीं। – Zmaster
@Zmaster - आप बहुत सही हैं! मुझे लगता है कि मैं उस तरह से सोच नहीं रहा था। मैंने अपनी टिप्पणी हटा दी, लेकिन अगर मैं किसी भी स्थिति की तलाश कर रहा हूं तो मेरा उत्तर यहां लागू होगा। – Pat
Public Class SerialPort
Inherits IO.Ports.SerialPort
Event Disconnected()
Public Sub OpenWithDisconnectionevent()
Me.Open()
Dim t As New Threading.Thread(AddressOf ConnectivityChecker)
t.Start()
End Sub
Sub ConnectivityChecker()
Do
If Me.IsOpen = False Then
RaiseEvent Disconnected()
GoTo ThreadExit
End If
Loop
ThreadExit:
End Sub
End Class
- 1. सीरियल पोर्ट
- 2. गायब होने वाले एक सीरियल पोर्ट को कैप्चर करने के लिए कैसे करें क्योंकि यूएसबी केबल अनप्लग्ड हो जाता है
- 3. सीरियल पोर्ट
- 4. सीरियल पोर्ट
- 5. सीरियल पोर्ट
- 6. सीरियल पोर्ट
- 7. सीरियल पोर्ट संचार: सीरियल पोर्ट डेटा का उपयोग कर बनाम सीरियल पोर्ट बनाम
- 8. सी को सीरियल पोर्ट
- 9. सीरियल पोर्ट (सी/सी ++)
- 10. मल्टीथ्रेडिंग और सीरियल पोर्ट
- 11. सीरियल पोर्ट से पढ़ना
- 12. साफ़ सीरियल पोर्ट सी #
- 13. आरएस -223 सीरियल पोर्ट
- 14. सीरियल पोर्ट के बफर
- 15. यूएसबी से सीरियल पोर्ट
- 16. सीरियल पोर्ट को ठीक से
- 17. क्यूटी और सीरियल पोर्ट प्रोग्रामिंग
- 18. डी का उपयोग कर सीरियल पोर्ट या यूएसबी पोर्ट?
- 19. डेटा को सीरियल पोर्ट में कैसे स्थानांतरित करें?
- 20. सीरियल पोर्ट काम नहीं कर रहा है?
- 21. लिनक्स सीरियल पोर्ट श्रोता और दुभाषिया?
- 22. डेल्फी पर सीरियल पोर्ट को सुनना 7
- 23. अरुडिनो सीरियल ऑब्जेक्ट डेटा प्रकार, एक पोर्ट
- 24. निर्धारित करें कि सीरियल पोर्ट सामान्य है या एसपीपी
- 25. सीरियल पोर्ट रीडलाइन बनाम रीडएक्सस्टिंग या सीरियल पोर्ट से डेटा को सही तरीके से कैसे पढ़ा जाए
- 26. डुप्लिकेट यूएसबी वर्चुअल सीरियल पोर्ट बनाए जा रहे हैं - इसका कारण क्या हो सकता है?
- 27. वेब वातावरण में सीरियल पोर्ट का उपयोग करें
- 28. जांचें कि क्या सीरियल पोर्ट सुन रहा है
- 29. वेबपृष्ठ में सीरियल पोर्ट से कैसे पढ़ा जाए
- 30. कैसे बफर में सीरियल पोर्ट संचार पढ़ना और पूरा संदेशों
पर मेरा उत्तर देखते हैं। – maxfridbe
'स्ट्रिंग [] sPorts = SerialPort.GetPortNames(); 'काम नहीं करता है क्योंकि जब पोर्ट पहले कनेक्ट होता है:' COM1' और इससे अनप्लग किया गया है 'GetPortNames' अभी भी रिपोर्ट' COM1' मौजूद है ... मैंने अभी इसका परीक्षण किया है। – MrHIDEn