เหตุใดบางครั้งพอร์ต USB จึงเรียกว่าพอร์ตอนุกรมและเรียกว่า COM


13

เท่าที่ฉันเข้าใจพอร์ตคอมพิวเตอร์แล้ว

  1. พอร์ตอนุกรมคือปลั๊ก 9 พินเช่นที่แสดงที่นี่และเรียกอีกอย่างว่าพอร์ต COM
  2. พอร์ต USB เป็นมาตรฐานที่แตกต่างจากพอร์ตอนุกรม

ทำไมฉันมักจะเห็นพอร์ต USB ที่เรียกว่า "พอร์ตอนุกรม" และเช่นใน Arduino IDE พอร์ต USB จะถูกระบุด้วยคำนำหน้า COM ทำไมบางครั้งจึงจำเป็นต้องใช้พอร์ต COM เสมือนหากไม่มีพอร์ตอนุกรมที่เกี่ยวข้อง (ตัวอย่าง: Prologix GPIB-USB adapter)

การใช้ชื่อเดียวกันนี้เพื่ออธิบายสิ่งต่าง ๆ สองอย่างที่ฉันคิดว่าอาจทำให้สับสน

ภาพหน้าจอจาก Arduino IDE คำสั่งเมนูเครื่องมือ→พอร์ตอนุกรม→ COM14 แสดงขึ้น


2
USB คือ comms แบบอนุกรม

3
อาจเป็นเพราะคุณมีอุปกรณ์ USB ที่ทำงานเป็นพอร์ตอนุกรมหรือไม่ มีบางสิ่งที่มีหนึ่งใน FTDI (FT232) หรือ Prolific (PL2303) ชิป USB-to-serial เหล่านั้นหรืออาจเป็น MCU ที่มีการนำซอฟต์แวร์มาใช้เหมือนกัน? การแสดงมันในเนมสเปซเดียวกันกับพอร์ตอนุกรมที่ได้รับการแก้ไขบนเมนบอร์ด (หรือในการ์ด PCI (e)) ทำให้อินเทอร์เฟซตรงไปตรงมากับซอฟต์แวร์มากขึ้น: มันไม่จำเป็นต้องรู้ว่าจะใช้พอร์ตอย่างไร quacks เช่นพอร์ตอนุกรม
ilkkachu

4
มันอาจช่วยให้ตระหนักได้ว่าในช่วงแรก ๆ ของพีซี IBM และรุ่นก่อน ๆ นั้น "พอร์ตอนุกรม" โดยทั่วไปไม่ได้อยู่บนเมนบอร์ด แต่ค่อนข้างเป็นอินเตอร์เฟสบนการ์ดบัสส่วนต่อขยาย ทุกวันนี้แนวคิดนั้นยังคงเป็นความจริงในขณะที่ยังคงมีตัวแปลงอินเตอร์เฟสแบบอนุกรมที่แตกต่างกัน - เฉพาะ "ส่วนต่อขยายบัส" ที่เชื่อมต่อกลับเข้ากับคอมพิวเตอร์คือตอนนี้เป็น USB แทนที่จะเป็นส่วนต่อขยาย ISA แบบเก่าของบัสท้องถิ่นโปรเซสเซอร์
Chris Stratton

14
ยูนิเวอร์แซสิ่งที่รถ?
ฮอบส์

4
@ ฮอบส์นั่นถูกต้อง Universal Serial Bus รถเมล์. แตกต่างจากซีเรียลพอร์ตมากใช่ไหม แม้ไม่มีข้อความตัวหนาโง่

คำตอบ:


27

นี่ไม่ใช่พอร์ต USB ที่เรียกว่าพอร์ตอนุกรม ในตัวอย่างของคุณ Arduino มีอุปกรณ์ USB เป็นอนุกรม (ทั้งในรูปของไมโครคอนโทรลเลอร์ตัวที่สองหรือชิป FTDI) สิ่งนี้จะใช้ USB เพื่อสื่อสารกับคอมพิวเตอร์และสร้างพอร์ตอนุกรมจริงสู่โลกภายนอก - คล้ายกับดองเกิล USB Wi-Fi หรืออะแดปเตอร์ LAN USB, อะแดปเตอร์ USB SATA ฯลฯ

กุญแจสำคัญคือในหลาย ๆ กรณีพอร์ตอนุกรมไม่สามารถใช้งานได้โดยตรงกับผู้ใช้เนื่องจากเป็น "ฮาร์ดไวร์" ในอุปกรณ์ (ในกรณีนี้เชื่อมต่อโดยตรงกับไมโครคอนโทรลเลอร์ที่คุณกำลังเขียนโปรแกรม)

ตามทฤษฎีที่เข้มงวดพอร์ตใดก็ตามที่ใช้การสื่อสารแบบอนุกรม (เกือบทุกบัสสมัยใหม่ - รวมถึง USB ซึ่งย่อมาจาก "Universal Serial Bus" หากหน่วยความจำของฉันรองรับฉัน) เป็น "พอร์ตอนุกรม" อย่างไรก็ตามในกรณีส่วนใหญ่เมื่อผู้คนอ้างถึง "พอร์ตอนุกรม" พวกเขาอ้างถึงพอร์ตที่สอดคล้องกับ RS-232


10
ทุกครั้งที่มีคนอ้างถึง "พอร์ตอนุกรม" พวกเขาเกือบจะหมายถึงการเชื่อมต่อ RS-232 ผ่านตัวเชื่อมต่อ DE-9M ถ้าคนหมายถึง USB พวกเขามักจะพูดว่า USB เหมือนกันสำหรับโปรโตคอลอนุกรมอื่น ๆ เช่น RS-485 หรือ GPIB หรือรสชาติที่หลากหลายของอีเธอร์เน็ต

5
@Felthry: "อนุกรม" บ่อยครั้งมากหมายถึงสัญญาณแบบอะซิงโครนัส ("A" ใน "UART") ซึ่ง RS-232 ยังใช้ แต่ที่ระดับแรงดันไฟฟ้าตรรกะมาตรฐานไม่ใช่ RS-232 และอาจรวมหรือไม่รวมพินจับมือซึ่งนำไปสู่ ​​9 พิน (หรือ 25 พินซึ่งเป็นต้นฉบับสำหรับ RS-232)
Ben Voigt

2
จริง ฉันคิดว่ามันเป็นอีกชั้นหนึ่งของการใช้คำศัพท์ในทางที่ผิดโดยใช้ 'RS-232' เพื่อหมายถึงตัวแปรของแรงดันไฟฟ้าต่ำของโปรโตคอล ฉันคิดว่าจะพูดถึงตัวเชื่อมต่อ DB-25M ด้วย แต่ก็ไม่เกี่ยวข้องกัน

7
@ รู้สึกเสียใจ แต่ "ทุกครั้งที่มีคนอ้างถึง" พอร์ตอนุกรม "พวกเขาเกือบจะหมายถึงการเชื่อมต่อ RS-232 ผ่านตัวเชื่อมต่อ DE-9M" เป็นมุมมองพีซีที่ล้าสมัย และพีซีไม่ได้ถูกสร้างขึ้นด้วยตัวเชื่อมต่อ 9-pin ที่ด้านหลังอย่างน้อยหนึ่งทศวรรษ ประชาชนจำนวนมากของผู้ใช้ของพวกเขาไม่เคยสัมผัสพวกเขาเมื่อพวกเขา ผลิตภัณฑ์อุปกรณ์และ PCB ทั่วสถานที่ใช้พอร์ตอนุกรมผ่านตัวเชื่อมต่อเฉพาะที่หลากหลายและที่ระดับ LVTTL หรือ RS-232C และวิศวกรในไซต์นี้จะได้สัมผัสกับพอร์ตอนุกรมมากกว่าวิธีมาตรฐานพีซีแบบเก่า โลกที่หลากหลายกว่านั้นฉันกลัว

4
@TonyM บางทีฉันอาจเคยใช้อุปกรณ์โรงเรียนเก่ามามากเกินไป ฉันจะทราบได้อย่างไรว่าคอมพิวเตอร์นั้นยังคงทำกับตัวเชื่อมต่อ DE9 โดยทั่วไป - ไม่ใช่สำหรับตลาดผู้บริโภค พวกเขาแพร่หลายในอุตสาหกรรมและการวิจัยเพราะคุณอาจต้องติดต่อกับระบบที่ทำใน 90s หรือก่อนหน้าเมื่อพวกเขาเป็นเรื่องธรรมดา ผู้คนไม่ได้อัพเกรดอุปกรณ์อุตสาหกรรมเหมือนคุณอัพเกรดโทรศัพท์! อย่างที่ฉันพูดมันเป็นการละเมิดคำศัพท์ บางที "เกือบจะแน่นอน" เป็นถ้อยคำที่แรงเกินไป แต่เป็นการใช้งานทั่วไปมาก

18

มันค่อนข้างสับสนเนื่องจาก Windows COM: พอร์ตมาจากระบบตั้งชื่อที่กำหนดไว้ใน MS-DOS (b. 1980) สิ่งนี้คัดลอกมาจาก CP / M (b. 1974) ค่อนข้างมากโดยมีแนวคิดบางอย่างที่นำมาจาก Unix พวกเขาไม่ได้คาดหวังว่าจะมีการเพิ่มบัส 'การขนส่ง' ระดับกลางเช่น USB

บางสิ่งใน Windows เป็นผู้รอดชีวิตจากวิวัฒนาการของ CP / M-> MS-DOS เช่นดิสก์ไดรฟ์ที่มีชื่อตัวอักษรส่วนขยายชื่อไฟล์ 3 ตัวอักษร, ไฟล์. EXE และ. COM และส่วนต่อประสานคำสั่งพร้อมรับคำสั่ง

อีกชื่อหนึ่งคือชื่ออุปกรณ์: โดยทั่วไปคือตัวอักษรสามตัวลงท้ายด้วยเครื่องหมายโคลอนเสมอ COM: เป็น 'พอร์ตการสื่อสาร' แบบอนุกรม, LPT: 'เครื่องพิมพ์แบบบรรทัด' (โดยทั่วไปจะแขวนอยู่ที่พอร์ต Centronics), NUL: ทิ้งสิ่งที่ถูกส่งไปยัง CON: คือ 'คอนโซล' (แป้นพิมพ์และหน้าจอ) บางอย่างที่คุณสามารถมีหลายหมายเลขเพื่อแยกความแตกต่างระหว่างพวกเขา COM: พอร์ตทำเช่นเดียวกับ LPT: พอร์ตกลายเป็น COM1: และ LPT1: และอื่น ๆ

COM: พอร์ตคือ 'ปลายทาง': ปลายสุดของลิงก์การสื่อสารจากมุมมองของ Windows PC เช่นเดียวกับหลาย ๆ อย่างในการคำนวณบริดจ์จะถูกละเว้นและเป็นองค์ประกอบที่อยู่ไกลที่สุดที่คุณคิดไม่ใช่ USB นี่เป็นความจริงของแป้นพิมพ์ PC (เชื่อมโยงกับ CPU-PCIe-USB-kbd) หรือไดรฟ์เครือข่าย (เชื่อมโยงเป็น CPU-PCIe-LAN-LAN-PCIe-CPUe-PCIe-SATA หรือคล้ายกัน)

USB ยังใช้แนวคิดของจุดปลาย คอนโทรลเลอร์ USB สามารถเชื่อมต่อพีซีโฮสต์กับฮาร์ดแวร์ทุกประเภทและให้เป็นทรัพยากร ดังนั้นเมื่อคุณเห็นฮาร์ดแวร์ที่เชื่อมต่อด้วย USB คุณจะเห็นจุดสิ้นสุดเหล่านี้ COM เสมือน: พอร์ตในอุปกรณ์ USB เป็นเพียงพอร์ตอนุกรมที่ออกมาจากอุปกรณ์ USB ทาสนั้นเป็นอุปกรณ์ปลายทาง Windows จะให้หมายเลข (COM1 :, COM27: ฯลฯ ) และพอร์ตอนุกรมนั้นสามารถรับรู้และใช้งานโดยโปรแกรมใด ๆ ที่ใช้ Windows API มาตรฐานสำหรับพอร์ต COM:

ฮาร์ดแวร์ที่เชื่อมต่อกับ USB บางตัวอาจต้องการเลียนแบบพอร์ตอนุกรมเนื่องจากทำให้การพัฒนาซอฟต์แวร์ Windows ง่ายขึ้น ไม่จำเป็นต้องเขียนไดรเวอร์อุปกรณ์ซึ่งช่วยประหยัดงานได้มาก - อุปกรณ์ USB บอก Windows ว่าเป็นพอร์ตอนุกรม จากมุมมองของพีซีนี่เป็นสิ่งที่ดีถ้ามันทำตัวเหมือนพอร์ตอนุกรม (ไบต์จะถูกส่งและรับในสตรีมอนุกรมที่ไม่มีที่สิ้นสุดซึ่งเปิดอยู่เสมอ) ดังนั้นมีประโยชน์สำหรับนักพัฒนา


4
ฉันไม่เคยเห็นชื่ออุปกรณ์สิ้นสุดในเครื่องหมายโคลอน ในบรรทัดคำสั่งคุณยังพูดเช่นtype file.txt > lpt1ไม่มีลำไส้ใหญ่ใด ๆ และในตัวจัดการไฟล์เริ่มต้นของ Windows คือ Explorer คุณไม่สามารถสร้างไฟล์ชื่อเช่น COM หรือ LPT1 (อย่างน้อยก็ใน Windows XP หรือในภายหลัง) ใครจะเห็นเครื่องหมายจุดคู่หลังชื่ออุปกรณ์ได้จริง
Ruslan

2
@Ruslan คุณพูดถูกว่าพวกมันเป็นตัวเลือกใน Windows ซึ่งทำให้พวกมันลดลงมันยอมรับทั้งสองอย่างต่างจาก MS-DOS แต่ไม่เคยเห็นพวกเขา ... (a) ค้นหาข้อความบนอุปกรณ์ MS-DOS (b) ใน CP ให้พิมพ์ 'mode /?' และดูที่ไวยากรณ์ของคำสั่งที่ใช้เพื่อตั้งค่าพารามิเตอร์ COMn: และ LPTn: พอร์ตลองใช้หากคุณต้องการ; (c) ใน Command Prompt พิมพ์ 'copy con: nul:' และดูการทำงาน (Ctrl-C เพื่อสิ้นสุด)

1
@Ruslan Colon อยู่ที่นั่นเพราะมันเป็นอุปกรณ์ที่เหมือนกัน ไม่ใช่ลำไส้ใหญ่ที่พิเศษ - ใช้copy con:filename.txt nulงานได้ดีเหมือนกันcopy c:filename.txt nulทุกประการ อย่างน้อยที่สุดเท่าที่ MS-DOS 6.22 ลำไส้ใหญ่สามารถถูกตัดออกในกรณีส่วนใหญ่เนื่องจากมันไม่ได้แนะนำความกำกวมใด ๆ ไม่เหมือนกับชื่อไดรฟ์อุปกรณ์เหล่านี้เป็นชื่อที่สงวนไว้ดังนั้นคุณจึงไม่พบปัญหาcopy file.txt c(ฉันควรคัดลอกไฟล์ไปยังไดเรกทอรีปัจจุบันบนไดรฟ์ c หรือไปยังไฟล์ชื่อ "c" ในไดเรกทอรีปัจจุบันของฉันหรือไม่) .
Luaan

7

ในการเพิ่มคำตอบของ Joren Vaesให้ระวังว่าแอพซอฟต์แวร์บางตัว (เช่น Arduino IDE) ติดตั้งไดรเวอร์ Windows ที่สร้างพอร์ต "virtual COM" เมื่อเปิดใช้งานพอร์ตเหล่านั้นระบบปฏิบัติการจะบอกโปรแกรมว่ามีพอร์ต COM พร้อมใช้งานซึ่งดูเหมือนกับพอร์ตอนุกรมมาตรฐาน [*] ซึ่งเป็นโปรแกรม (เช่น Arduino IDE แต่รวมถึงอื่น ๆ ) สามารถส่งและรับบิตเช่น ไปยังพอร์ตอนุกรมใด ๆ อย่างไรก็ตามภายใต้ประทุนนั้นบิตเหล่านั้นจะถูกส่งไปยังสาย USB ภายในบอร์ด Arduino มีบางสิ่งที่คล้ายคลึงกันเกิดขึ้น

[*] และโดย "พอร์ตอนุกรมมาตรฐาน" ที่นี่เราหมายถึงโปรโตคอล RS-232 ชนิดที่ถูกส่งผ่านทางแบบดั้งเดิมผ่านตัวเชื่อมต่อ DB-9 หรือ DB-25 ในบริบทของเรามันไม่สำคัญเลยว่า USB เป็น "อนุกรม" ด้วย


7

ความเข้าใจเกี่ยวกับความแตกต่างระหว่างพอร์ต COM และพอร์ต USB นั้นถูกต้อง

ตอบคำถามของคุณสั้น ๆ ว่าเหตุใดพอร์ต USB บางพอร์ตจึงถูกแมปโดยระบบปฏิบัติการเป็น "COM" พอร์ตคือ: มีอุปกรณ์ USB ที่ใช้ USB CDC (อุปกรณ์สื่อสารระดับ) อุปกรณ์เหล่านี้เป็นสะพานเชื่อมต่อจากอินเตอร์เฟส USB ที่ซับซ้อนไปจนถึงอินเตอร์เฟสประเภท UART / RS-232 มาตรฐาน เพื่อความโปร่งใสสำหรับผู้ใช้ระบบปฏิบัติการจะโหลดไดรเวอร์ USB ที่เลียนแบบเลเยอร์การขนส่งเป็นพอร์ต COM ซึ่งเป็นพอร์ต COM เสมือน รายละเอียดทางประวัติศาสตร์บางอย่างและเหตุผลสำหรับวิธีการนี

พอร์ต COM ใช้ตัวเชื่อมต่อ DB-9 / DB-15 (aka อนุกรม RS-232 หรือ UART) และตัวควบคุมสำหรับพอร์ตเหล่านี้จะถูกแมปทางกายภาพกับฮาร์ดแวร์ของพีซีไปยังที่อยู่เฉพาะในพื้นที่ I / O คอนโทรลเลอร์ COM นี้ล้าสมัยในพีซีรุ่นใหม่และสูญพันธุ์ไปแล้ว

ในขณะเดียวกัน MCU จำนวนมากยังคงใช้การสื่อสารแบบอนุกรม RS-232 เป็นวิธีการหลักในการสื่อสารกับโลกรอบนอก เหตุผลก็คือฮาร์ดแวร์ (และซอฟต์แวร์) สำหรับลิงค์ประเภทนี้ง่ายมากและใช้งานง่าย ยิ่งไปกว่านั้นการสื่อสารและพัฒนาการดีบัก Android ที่ทันสมัยทั้งหมดนั้นทำในรูปแบบ COM-port นอกจากนี้อุปกรณ์ "การสื่อสาร" จำนวนมาก (เช่นโมเด็มรวมถึง 4G LTE และสูงกว่า) ยังคงใช้อินเตอร์เฟสแบบ UART พร้อมกับโปรโตคอลการควบคุมชนิด ASCII ผ่านพอร์ต "COM" หลายตัว

ตอนนี้นักพัฒนามีภาวะที่กลืนไม่เข้าคายไม่ออกวิธีการสื่อสารกับตัวควบคุมไมโครดังกล่าวถ้าพีซีการพัฒนาโฮสต์ไม่มีพอร์ต COM? วิธีแก้ไขคือใช้พอร์ต USB และอุปกรณ์ USB พิเศษที่เชื่อมต่อโปรโตคอล USB กับอินเตอร์เฟส COM-port RS-232 มีอุปกรณ์ USB เฉพาะสำหรับชิป FTDI และอื่น ๆ อีกมากมาย (Cypress, Microchip และอื่น ๆ ) สร้างอุปกรณ์ที่ใช้ฟังก์ชั่นบริดจ์นี้

ตอนนี้การสื่อสารแบบเนทีฟกับ MCU เหล่านี้ยังคงแสดงในรูปแบบของโปรโตคอล RS-232 และตัวอย่างแอปพลิเคชันส่วนใหญ่ถือว่าการใช้แอปพลิเคชันเทอร์มินัลบางตัว (TeraTerm, HyperTerminal ฯลฯ ) เพื่อใช้ลิงค์ เพื่อความสะดวกของผู้ใช้บริดจ์ USB สู่ UART นั้นมีให้พร้อมกับไดรเวอร์ที่แสดงถึงพอร์ตว่าเป็นพอร์ต COM เสมือน ซอฟต์แวร์ที่ทันสมัยทั้งหมดใช้การจำลองเสมือนของฮาร์ดแวร์ COM ซึ่งทำให้การเปลี่ยนเป็นพีซีแบบ "COM-less" เป็นไปอย่างราบรื่น มันกลายเป็นวิธีปฏิบัติทั่วไปในการเพิ่มFTDI bridge เฉพาะไปยังพอร์ต UARTบนแพลตฟอร์มการพัฒนา MCU (และใช้ไดรเวอร์ FTDI บนโฮสต์พีซีเพื่อทำให้พอร์ต USB ดูเหมือนพอร์ต COM) หรือฝังรหัสบริดจ์ที่เหมาะสมลงใน MCU เอง (ถ้า มันมีฟังก์ชั่น USB ดั้งเดิม)

แนวทางตรงคือการใช้บอร์ด USB-to-UART ภายนอกและต่อสาย UART เข้ากับ MCU ภายใต้การพัฒนา หรือหากบอร์ดมีตัวเชื่อมต่อ DB-9 อยู่แล้วจะมีตัวเชื่อมต่อUSBที่สามารถเชื่อมต่อได้โดยตรง

ในทุกกรณีตัวควบคุม UART ดั้งเดิมของ MCU จะปรากฏที่ด้านโฮสต์เป็นพอร์ต COM เสมือนโดยข้ามการแปลงสัญญาณ / โปรโตคอลระดับกลางทั้งหมด นั่นเป็นเหตุผลที่ทุกวันนี้ผู้คนมักจะข้ามความแตกต่างระหว่างบริดจ์ USB กับ UART และพอร์ต COM


3

มันสับสนมาก แต่คุณไม่ต้องกังวลกับมัน ก่อนอื่นให้นึกถึง UART ซึ่งเป็นคำศัพท์ทั่วไป แต่ลองนึกถึงสิ่งที่ก่อให้เกิดโปรโตคอลด้วยบิตเริ่มต้นหนึ่งหรือสองบิตหยุดบิต 7 หรือ 8 โดยทั่วไปเป็นบิตข้อมูลและบางครั้งก็มีความเท่าเทียมกัน มันอาจแตกต่างจากที่นั่นซึ่งทำให้แย่ลงมาก

UART อยู่ที่ระดับ TTL ไม่ว่ามันจะมีความหมายว่าอย่างไร มันเคยเป็น 5 V และตอนนี้ 3.3 V, 1.8 V หรืออะไรก็ตาม; บางที TTL อาจเป็นคำที่ผิด จากนั้นคุณมี / มี RS-232, RS-422 เป็นต้นซึ่งเป็นมาตรฐานแรงดันไฟฟ้าและ PIN ไม่ใช่มาตรฐานโปรโตคอล มันไม่ถูกต้องในการผสมคำศัพท์และพูด RS-232 เมื่อคุณหมายถึง UART บางประเภท

ย้อนกลับไปในวันที่ UART ของคุณอยู่บนมาเธอร์บอร์ดและคุณต้องการตัวเชื่อมต่อบางส่วนกับโลกภายนอกด้วยระดับแรงดันไฟฟ้าที่เวลานั้นเหมาะสมและพิน / สายเคเบิลมาตรฐานบางประเภท ดังนั้นมาตรฐานพิน 25 และ 9 ที่ได้รับความนิยมจึงมักพบได้ในอุปกรณ์ต่อพ่วงต่างๆและในโลกพีซีของ Wintel สิ่งนี้ถูกเรียกว่าพอร์ต COMmunication หรือบางครั้งพอร์ตอนุกรม

แน่นอนว่าพอร์ตที่มีข้อมูลอนุกรมสามารถและเรียกว่าพอร์ตอนุกรม, SPI, I²C, MDIO, UART, HDLC, SDLC, ฯลฯ และแม้กระทั่ง USB และ SCSI; คุณสามารถคลั่งไคล้กับสิ่งนี้ได้ โดยทั่วไปแล้วพอร์ตอนุกรมหมายถึงพินที่คุณสามารถรับได้ที่ UART

โลกของ Unix / Linux พูดttyแทนcom/ serial/ uartแต่มันเป็นสิ่งเดียวกัน

ตอนนี้มีการดำเนินการ คุณสามารถซื้อชิป UART บางส่วนได้ด้วยอินเทอร์เฟซบางตัว (ใช่คุณสามารถมี SPI UART ซึ่งเป็นอนุกรมที่ปลายทั้งสองด้านหรือI²C UART หรือบัสเฉพาะหรือ USB ฯลฯ ) แม้กระทั่งในวันที่ UART มีรถบัสอยู่ด้านหนึ่งซึ่งในที่สุด CPU ก็กำลังสื่อสารผ่าน วันนี้เรามี FTDI และผู้ขายรายอื่นที่สร้างโซลูชัน USB UART ที่ดีไม่ได้ทำให้ชั้นของอินเตอร์เฟซระหว่างซอฟต์แวร์กับ UART แตกต่างกันและด้านอื่น ๆ ของ UART นั้นมีส่วนต่อประสานไม่ว่าจะเป็นระดับ TTL / ชิป RS-232C หรือ RS-422 เป็นต้น

Arduinos ยุคแรก ๆ คุณมักจะใช้บอร์ด FTDI USB-U-UART ที่ให้กำลังแก่ Arduino บางตัวมีพลังงาน USB และอนุกรม / UART บนบอร์ด Arduino เองและจากนั้นก็เชื่อมต่อข้ามบอร์ดไปยัง UART บนชิป AVR (จัดการตัวประมวลผลบางตัวที่มีบัสหลายชั้นเพื่อให้ซอฟต์แวร์สื่อสารกับ UART ซึ่งมี อินเทอร์เฟซบางส่วนในอีกด้านหนึ่งของมันในกรณีนี้หมุดบนขอบของ AVR ที่ระดับแรงดันไฟฟ้าของชิป TTL)

เนื่องจากฟังก์ชั่น UART ไม่ได้มีการเปลี่ยนแปลงในทศวรรษที่ผ่านมาทำไมคำศัพท์ซอฟต์แวร์หรือแม้แต่แอปพลิเคชันซอฟต์แวร์เปลี่ยนไปในระดับแอปพลิเคชัน เขียนแอปพลิเคชัน Linux / Unix TTY เมื่อ 10-15 ปีที่แล้วกับชิป UART บนเมนบอร์ดของคุณและมีโอกาสที่ดีที่จะยังคงทำงานได้ในปัจจุบันด้วยระดับ USB เป็น TTL หรือ USB ระดับ RS-232C หรือ RS-422 นิยามระดับ เช่นเดียวกันสำหรับ Windows และฉันมีรหัสเก่าที่ยังใช้งานได้ทั้ง ในโลกของ Windows จะใช้คำว่า COM

ฉันไม่ได้ใช้ Arduino sandbox ในระยะเวลาหนึ่งและถ้าเป็นเช่นนั้นบน Linux แต่ฉันจะไม่แปลกใจถ้าโปรแกรมที่เป็น Java ถ้าฉันจำได้ถูกต้องเป็นชื่อสามัญและใช้ชื่อระบบดังนั้นttyS2บน Linux และ COM2 บน windows

การอ่านคำถามของคุณอีกครั้งอาจเป็นไปได้อีกมากโดยใช้ประโยชน์จากจำนวนซอฟต์แวร์ที่มีอยู่แล้วที่ใช้การเรียก API เหล่านี้ อีกครั้งเป็นเวลาหลายทศวรรษที่ไม่มีเหตุผลว่าทำไมคุณไม่สามารถสร้างพอร์ตเสมือนในซอฟต์แวร์ที่นำข้อมูลสองทิศทางนี้ลงไปได้ทุกอย่างที่คุณคิด UART to Ethernet เป็นอุปกรณ์ที่ใช้กันทั่วไปและในห้องเซิร์ฟเวอร์ที่เซิร์ฟเวอร์ยังคงใช้พอร์ต COM / TTY / RS-232 เป็นอย่างมากคุณสามารถมีเซิร์ฟเวอร์เทอร์มินัลซึ่งมีอินเตอร์เฟซจำนวนมากซึ่งคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์จำนวนมาก จากนั้นอีเทอร์เน็ตที่อยู่อีกด้านหนึ่งจากนั้นหากคุณเลือกที่จะไม่เทลเน็ตคุณสามารถติดตั้งไดรเวอร์พอร์ต COM เสมือนได้

จากนั้นแอปพลิเคชันของคุณบนคอมพิวเตอร์ของคุณคิดว่ากำลังพูดคุยกับพอร์ต COM แต่ในความเป็นจริงแล้วกระแสข้อมูลไบต์กำลังกระโดดบนอีเทอร์เน็ตจากนั้นกดเซิร์ฟเวอร์เทอร์มินัลจากนั้นกดไปที่ระดับ UART ถึง RS-232C เซิร์ฟเวอร์และสำรองข้อมูลในลักษณะเดียวกัน

บางครั้งไม่มีเหตุผลที่จะทำให้มันเป็นจริง UART ไม่ว่าด้วยเหตุผลใดก็ตามทำให้พอร์ต COM เป็นแบบเสมือนดังนั้นซอฟต์แวร์ที่เขียนขึ้นสำหรับการเรียก API เหล่านั้นยังคงทำงานได้ คุณอาจจะนึกถึงซอฟต์แวร์ธนาคารโบราณที่เรายังคงใช้ซึ่งมีเทอร์มินัลโง่ไปยังอินเทอร์เฟซ UART ที่บางทีในสมัยนั้นมีการเดินสายหรือเข้าโมเด็มเพื่อเซิร์ฟเวอร์ในที่สุด คุณสามารถทำให้ซอฟต์แวร์นั้นยังคงทำงานได้ผ่านการจำลองจำนวนมากรวมถึงพอร์ต COM เสมือนที่ในปัจจุบันมีแนวโน้มว่าจะลดลงอีเทอร์เน็ตไปยังเซิร์ฟเวอร์เป็นสตรีมอนุกรม (TCP / IP เป็นต้น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.