COM1 या पैरामीटर्स को COM2 समय पोर्ट को बदलने के लिए कैसे खुला है

रिटायर्ड KB सामग्री अस्वीकरण

यह आलेख उन उत्पादों के बारे में लिखा गया था जिनके लिए अब Microsoft समर्थन प्रदान नहीं करता है . इसलिए, यह आलेख "जैसा है" वैसा ही ऑफ़र किया गया है और अब इसका अद्यतन नहीं किया जाएगा.

सारांश

COM पोर्ट (किसी खोलें या खुला "को COM2:..." "COM1:..." कथन के साथ) खोले जाने के बाद, मूल में संचार पोर्ट का उपयोग करते हैं, पोर्ट कॉन्फ़िगरेशन सामान्य रूप से कोई भी मूल कथन द्वारा बंद करने और उसके बाद COM पोर्ट फिर से खोलने से बिना बदला नहीं जा सकता। हालाँकि, COM पोर्ट (बॉड दर, समानता, बिट्स रोकें, डेटा बिट्स, आदि) के लिए पैरामीटर UART Basic के बाहर और INP कथन का उपयोग कर के साथ संवाद करने से परिवर्तित किया जा सकता है। UART (यूनिवर्सल एसिंक्रोनस रिसीवर Transmitter) IBM PC में 8250 एसिंक्रोनस संचार तत्व, एक समर्पित माइक्रोप्रोसेसर चिप है।


यह आलेख उन्नत प्रोग्रामर की जानकारी है, और संचार पोर्ट की कार्रवाइयों के साथ बहुत परिचित हैं, जो केवल उन्नत प्रोग्रामर द्वारा इस्तेमाल किया जाना चाहिए। यह जानकारी Microsoft QuickBasic संस्करणों के लिए 4.00, 4.00b और 4.50 पर लागू होता है; Microsoft मूल कंपाइलर संस्करण के लिए 6.00 और MS-DOS के लिए 6.00b; और करने के लिए Microsoft मूल प्रोफेशनल डेवलपमेंट सिस्टम (PDS) 7.00 और 7.10 MS-DOS के लिए संस्करण है।

अधिक जानकारी

COM पोर्ट के लिए संचार पैरामीटर्स को परिवर्तित करने के लिए, आपको पहले interrupts संचार अक्षम करना आवश्यक है। आप कर सकते हैं या ऐसा (COM1 के लिए) सेट करने बिट द्वारा 4 बिट की बाधा मास्क पंजीकृत (को COM2) के लिए 3 (IMR, i/o पोर्ट & H21) (; शून्य बिट पर प्रारंभ बिट्स क्रमांकित हैं जहाँ, 0, 1, 2, आदि.)। जब यह किया जाता है, तो यह पंजीकरण के अन्य बिट्स ताकि आप चाहिए "या" वर्तमान मान, बिट मान की आवश्यकता, और स्थान के साथ नए मान वापस रजिस्टर में अपरिवर्तित, रहना चाहिए कि ध्यान दें। उदाहरण के लिए, निम्न अक्षम करता COM1:

   OUT &H21, INP(&H21) OR 16
निम्न अक्षम करता को COM2:

   OUT &H21, INP(&H21) OR 8
COM अवरोध अक्षम किया गया है के बाद, आप संचार पैरामीटर परिवर्तन कर सकता है। आप बदल सकते हैं पैरामीटर से पहले बॉड दर है। ऐसा करने के लिए, आपको पहले भेजकर बॉड दर में कोई परिवर्तन की अनुमति दें करने के लिए पंक्ति नियंत्रण पंजीकरण सेट करना आवश्यक कोई & COM1 के लिए या पोर्ट के लिए पोर्ट H80 & H3FB, रेखा-नियंत्रण पंजीकृत & H2FB, रेखा-नियंत्रण पंजीकृत को COM2 के लिए। फिर, उचित से कम महत्वपूर्ण बाइट (LSB) और इच्छित बॉड दर का सबसे महत्वपूर्ण बाइट (MSB) पोर्ट & H3F8 करने के लिए भेजें और & H3F9, क्रमश:, COM1, या के लिए पोर्ट & H2F8 के लिए और & H2F9, क्रमश:, को COM2 के लिए। LSB और MSB बाइट्स के लिए बॉड दर को निम्न तालिका में दिखाए गए हैं:

   Baud Rate    MSB    LSB
--------- --- ---

300 01H 80H
600 00H C0H
1200 00H 60H
2400 00H 30H
3600 00H 20H
4800 00H 18H
9600 00H 0CH

अब जो बॉड दर परिवर्तित किया गया है, अन्य पैरामीटर सेट होना चाहिए (उदाहरण, प्रकार समानता, बिट्स रोकें, डेटा बिट्स, आदि के लिए.)। रेखा नियंत्रण पंजीकृत (पोर्ट & & H2FB को COM2 के लिए या पोर्ट COM1, H3FB) के लिए उपयुक्त बाइट भेजकर इन पैरामीटर्स सेट हैं। बाइट को भेजने के लिए उपयुक्त बिट्स निम्न आरेख के अनुसार सेट कर स्थापित है:
                          THE LINE-CONTROL REGISTER

|-----|-----|-----|-----|-----|-----|-----|-----|
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|-----|-----|-----|-----|-----|-----|-----|-----|
| \ | | | | | | Character
| \ | | | | | | length
I/O Addressing < \ | | | | 0 + 0 = 5 bits
0 = Normal value \__| | | | 0 + 1 = 6 bits
1 = To address baud | | | | 1 + 0 = 7 bits
rate divisor | | | | 1 + 1 = 8 bits
registers | | | |
| | | > Stop bits
Set these bits to 0 < | | 0 = 1 stop bit
| | 1 = 1.5 stop bits if 5-bit
| | character length
| | 1 = 2 if 6-, 7-, or 8-bit
| | character length
Parity type < > Parity
0 = even 0 = No parity bit generated
1 = odd 1 = Parity bit generated

(इस तालिका के पृष्ठ 180 से की गई "8088 Assembler भाषा प्रोग्रामिंग: IBM PC, द्वितीय संस्करण" Willen और Krantz [Howard W. Sams & कंपनी, inc., 1988]। कृपया अध्याय 7, "सीरियल संचार," अधिक तकनीकी जानकारी के लिए पढ़ें.)


इन पैरामीटर्स सेट करने के बाद, COM अवरोध वापस करने के लिए 0 IMR में COM पोर्ट के लिए बिट सेट कर reenabled किया जा कर सकते हैं। करने से पहले, आप अन्य बिट्स में इतना विशिष्ट तार्किक 0 करने के लिए बिट मास्क करने के लिए इस पंजीकरण, किसी भी बिगड़ नहीं करने के लिए होशियार होना चाहिए के रूप में "और" ऋण बिट मान 255 से पंजीकरण के वर्तमान मान है। उदाहरण के लिए:
   OUT &H21, INP(&H21) AND 239    'enables COM1 (255 - 16 = 239)   OUT &H21, INP(&H21) AND 247    'enables COM2 (255 - 8 = 247)

यह चरण किया जाता है एक बार, संचार नई संचार सेटिंग्स पर पुन: आरम्भ कर सकते हैं। नीचे किसी कोड उदाहरण उस परिवर्तन और पैरामीटर्स के लिए 9600, COM1 एन, 8, 1 बॉड दर सूचीबद्ध है।


निम्न पुस्तिका में हार्डवेयर पते के बारे में अधिक जानकारी है:
"प्रोग्रामर के पीसी Sourcebook," Thom Hogan (Microsoft दबाएँ, 1988) द्वारा
कोई कोड उदाहरण निम्न है:
     x% = INP(&H21)                    'disable COM1...      x% = x% OR 16
OUT &H21, x%
OUT &H3FB, &H80 'set for BAUD change
REM OUT &H3F8, &H60 'BAUD-rate-divisor register; &H60 sets 1200 baud
OUT &H3F8, &H0C 'BAUD-rate-divisor register; &H0C sets 9600 baud
OUT &H3F9, &H0 'High byte of BAUD-rate-divisor register
OUT &H3FB, &H3 'N,8,1
x% = INP(&H21) 'reenable COM1...
x% = x% AND 239
OUT &H21, x% 'all done!

गुण

आलेख ID: 39255 - पिछली समीक्षा: 18/01/2017 - संशोधन: 1

प्रतिक्रिया