คำถามติดแท็ก serial-port

อินเทอร์เฟซฮาร์ดแวร์ที่พบได้ทั่วไปในพีซีรุ่นเก่าโดยปกติจะมีซ็อกเก็ต / ปลั๊ก DE-9 9 พินบนอุปกรณ์เครือข่ายหรือเซิร์ฟเวอร์ที่มีซ็อกเก็ต / ปลั๊ก RJ-45 (หรือที่ใช้กันทั่วไปสำหรับอีเธอร์เน็ต) หรือที่มี (กว้างกว่ามาก) ซ็อกเก็ต / ปลั๊ก DB-25 25 พิน สองมาตรฐานทั่วไปที่ใช้กับอินเทอร์เฟซดังกล่าวคือ RS-232 หรือ RS-422

16
วิธีการเชื่อมต่อกับพอร์ตอนุกรมทำได้ง่ายเหมือนการใช้ SSH
มีวิธีการเชื่อมต่อกับเทอร์มินัลแบบอนุกรมเช่นเดียวกับที่คุณทำกับ SSH หรือไม่? จะต้องมีวิธีที่ง่ายกว่าเครื่องมือเช่น Minicom เช่นนี้ $ serial /dev/ttyS0 ฉันรู้ว่าฉันสามารถcatส่งออกจาก/dev/ttyS0แต่การสื่อสารทางเดียวเท่านั้นเป็นไปได้ด้วยวิธีนั้นจากพอร์ตไปยังคอนโซล และechoออกไปยังท่าเรือเป็นเพียงเหมือนกัน แต่วิธีอื่น ๆ เพื่อพอร์ต ฉันจะตระหนักถึงการสื่อสารสองทางกับพอร์ตอนุกรมเป็นวิธีที่ง่ายที่สุดใน Unix / Linux ได้อย่างไร

1
อ่านจากอนุกรมจากบรรทัดคำสั่ง linux
ฉันมีอุปกรณ์พอร์ตอนุกรมที่ฉันต้องการทดสอบโดยใช้บรรทัดคำสั่ง linux ฉันสามารถใช้ stty และ echo เพื่อส่งคำสั่งไปยังพอร์ตอนุกรม แต่เมื่ออุปกรณ์ตอบสนองฉันไม่มีวิธีอ่านสิ่งที่มาจากพอร์ตอนุกรม ฉันใช้ stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0 เพื่อส่งคำสั่งไปยังอุปกรณ์ อุปกรณ์ทำงานและส่งการตอบกลับใน 300 มิลลิวินาที ฉันจะพิมพ์การตอบกลับไปยังคอนโซลโดยใช้บรรทัดคำสั่งได้อย่างไร

5
คำสั่งเพื่อกำหนดพอร์ตของอุปกรณ์ (เช่น / dev / ttyUSB0)
ฉันมีคำถามเกี่ยวกับพอร์ตใน Linux หากฉันเชื่อมต่ออุปกรณ์ผ่าน USB และต้องการตรวจสอบพอร์ตฉันไม่สามารถทำได้โดยใช้คำสั่ง lsusb ซึ่งระบุหมายเลขรถบัสและหมายเลขอุปกรณ์บนรถบัสนี้เท่านั้น: [ziga@Ziga-PC ~]$ lsusb Bus 003 Device 007: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC มีคำสั่งที่บอกพอร์ตที่อุปกรณ์เชื่อมต่อโดยตรงหรือไม่ วิธีเดียวที่จะทำเช่นนี้ได้จนถึงตอนนี้คือการแยกและเชื่อมต่อใหม่และใช้คำสั่ง: [ziga@Ziga-PC ~]$ dmesg | grep tty [ 0.000000] console [tty0] enabled [ 0.929510] 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a …
46 usb  serial-port  dmesg 

5
วิธีการผูกอุปกรณ์ USB ในชื่อคงที่?
ฉันมี Arduino ซึ่งบางครั้งก็ถูกผูกมัด/dev/ttyUSB0และบางครั้ง/dev/ttyUSB1ทำให้สคริปต์ของฉันล้มเหลว ฉันไม่ต้องการให้ระบุเป็นไปได้ทั้งหมดของการที่อุปกรณ์ของฉันอาจจะมี /dev/arduinoแต่ฉันอยากจะมีมันจะผูกพันแบบคงที่บางแห่งเช่น ฉันจะบรรลุสิ่งนั้นได้อย่างไร

9
ฉันจะตรวจสอบปริมาณการใช้งานพอร์ตอนุกรมได้อย่างไร
มีเครื่องมือการตรวจสอบพอร์ตเพื่อดูแพ็กเก็ตที่เขียนบนพอร์ตหรือไม่? โดยเฉพาะอย่างยิ่งฉันต้องการตรวจสอบว่าโปรแกรมของฉันที่เขียนด้วย Java ทำงานได้หรือไม่ดังนั้นฉันต้องการเครื่องมือบางอย่างเพื่อดูว่าแอปพลิเคชันตัวน้อยของฉันกำลังเขียนข้อความไปยังพอร์ตหรือไม่ ฉันจะทำสิ่งนี้ได้อย่างไร

5
วิธีการส่งข้อมูลไปยังพอร์ตอนุกรมและดูคำตอบใด ๆ
บน Linux ฉันต้องการส่งสตริงคำสั่ง (เช่นข้อมูลบางอย่าง) ไปยังพอร์ตอนุกรม (มีอักขระควบคุม) และฟังการตอบกลับ (ซึ่งโดยปกติอาจมีอักขระควบคุม) ฉันจะทำสิ่งนี้ให้ง่ายที่สุดบน Linux ได้อย่างไร ตัวอย่างได้รับการชื่นชม!

3
ทำไมลีนุกซ์ลีนุกซ์บางรุ่นถึงยังมี / dev / ttyS0, ttyS1, ฯลฯ , ถึงแม้ว่าคอมพิวเตอร์ที่ใหม่กว่าไม่มีพอร์ตอนุกรมเช่นนั้น?
คอมพิวเตอร์แล็ปท็อปและเดสก์ท็อปใหม่จำนวนมากไม่มีพอร์ตอนุกรม 9-pin / 25-pin ทำไมลินุกซ์จำนวนมากยังคงมี/dev/ttyS0, dev/ttyS1แฟ้มอุปกรณ์? เนื่องจากudevสามารถสร้างแฟ้มอุปกรณ์แบบไดนามิก, ทำไม/dev/ttyS0, /dev/ttyS1ยังคงสร้างแบบคงที่? ทุกครั้งที่ฉันบูตเครื่อง/dev/ttyS0และ/dev/ttyS1อยู่ในนั้น โดยวิธีการ: ฉันใช้ Debian 7.0

1
จะค้นหาพอร์ตอนุกรมที่ใช้งานอยู่ได้อย่างไร?
คำถาม: ฉันเสียบอุปกรณ์ (เช่นโมเด็ม GSM) ผ่านพอร์ตอนุกรม (aka RS-232) และฉันต้องดูว่าไฟล์ใดใน/dev/ระบบไฟล์ที่อุปกรณ์นี้เชื่อมโยงอยู่เพื่อให้สามารถสื่อสารกับมันได้ น่าเสียดายที่ไม่มีไฟล์ที่สร้างขึ้นใหม่ใน/dev/และไม่สามารถเห็นสิ่งใดในdmesgผลลัพธ์ ดังนั้นนี่เป็นคำถามที่ยากมาก พื้นหลัง: ฉันไม่เคยทำงานกับอุปกรณ์อนุกรมดังนั้นเมื่อวานนี้เมื่อมีความต้องการฉันพยายาม Google แต่ไม่พบว่ามีประโยชน์ ฉันใช้เวลาค้นหาสองสามชั่วโมงและฉันต้องการแบ่งปันคำตอบที่พบเนื่องจากอาจเป็นประโยชน์กับใครบางคน

4
อ่าน / เขียนไปยังพอร์ตอนุกรมที่ไม่มีรูท?
ฉันกำลังเขียนแอปพลิเคชันเพื่ออ่าน / เขียนไปยัง / จากพอร์ตอนุกรมใน Fedora14 และมันใช้งานได้ดีเมื่อฉันเรียกใช้ในฐานะรูท แต่เมื่อฉันเรียกใช้ในฐานะผู้ใช้ทั่วไปฉันไม่สามารถรับสิทธิ์ที่จำเป็นในการเข้าถึงอุปกรณ์ (/ dev / ttySx) นั่นเป็นเรื่องเส็งเคร็งเพราะตอนนี้ฉันไม่สามารถดีบักสิ่งที่แช่งด้วย Eclipse ได้ ฉันลองใช้ Eclipse ด้วย sudo แต่มันขัดกับพื้นที่ทำงานของฉันและฉันไม่สามารถแม้แต่เปิดโครงการ ดังนั้นฉันต้องการทราบว่าเป็นไปได้หรือไม่ที่จะลดข้อกำหนดการเข้าถึงเพื่อเขียนลงใน / dev / ttySx เพื่อให้ผู้ใช้ทั่วไปสามารถเข้าถึงได้ เป็นไปได้ไหม

2
cat รู้อัตรา baud ของพอร์ตอนุกรมได้อย่างไร?
ฉันใช้เป็นประจำcatเพื่อดูข้อมูลการแก้ไขข้อบกพร่องในคอนโซลจากบอร์ดพัฒนา FPGA ของฉันผ่านการเชื่อมต่อแบบอนุกรม แต่ฉันไม่เคยบอก linux ว่าอัตรารับส่งข้อมูลเป็นเท่าไหร่ แมวรู้ได้อย่างไรว่าอัตราการรับส่งข้อมูลของการเชื่อมต่อแบบอนุกรมคืออะไร?

2
ตั้งค่าความเร็ว baud สำหรับ tty
ฉันจะตั้งค่าความเร็ว baud สำหรับ tty ที่เฉพาะเจาะจงได้อย่างไร (ในกรณีนี้คือพอร์ตอนุกรม) ฉันพยายามใช้ stty -F /dev/tty.iap ispeed 19200 แต่รับข้อผิดพลาดInvalid argumentทุกครั้งที่ฉันลอง (2400, 4800 ฯลฯ ) ยกเว้น 9600 (ค่าเริ่มต้น) ผมประสบความสำเร็จสามารถเปลี่ยนความเร็วในโปรแกรม C cfsetspeedใช้ ฉันจำเป็นต้องทำการเปลี่ยนแปลงที่อื่นเช่นttysไฟล์หรือไม่

2
ทำไม awk ทำบัฟเฟอร์เต็มเมื่ออ่านจากไปป์
ฉันกำลังอ่านจากพอร์ตอนุกรมที่เชื่อมต่อกับอุปกรณ์ gps ส่งสตริง nmea การร้องขอที่เรียบง่ายเพื่อแสดงจุดของฉัน: $ awk '{ print $0 }' /dev/ttyPSC9 GPGGA,073651.000,6310.1043,N,01436.1539,E,1,07,1.0,340.2,M,33.3,M,,0000*56 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 $GPRMC,073651.000,A,6310.1043,N,01436.1539,E,0.42,163.42,070312,,,A*67 GPGGA,073652.000,6310.1043,N,01436.1540,E,1,07,1.0,339.2,M,33.3,M,,0000*55 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 ถ้าฉันลองอ่านจากไปป์ให้ awk บัฟเฟอร์อินพุตก่อนที่จะส่งไปยัง stdout $ cat /dev/ttyPSC9 | awk '{ print $0 }' <long pause> GPGGA,073651.000,6310.1043,N,01436.1539,E,1,07,1.0,340.2,M,33.3,M,,0000*56 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 $GPRMC,073651.000,A,6310.1043,N,01436.1539,E,0.42,163.42,070312,,,A*67 GPGGA,073652.000,6310.1043,N,01436.1540,E,1,07,1.0,339.2,M,33.3,M,,0000*55 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 ฉันจะหลีกเลี่ยงการบัฟเฟอร์ได้อย่างไร แก้ไข : Kyle Jones แนะนำว่าแมวกำลังบัฟเฟอร์มันเป็นเอาต์พุต แต่ดูเหมือนจะไม่เกิดขึ้น: $ strace cat /dev/ttyPSC9 | awk …
23 awk  tty  serial-port 

4
ส่งไฟล์โดยโปรโตคอล xmodem หรือ kermit ด้วยหน้าจอ GNU
ผมทำงานกับอุปกรณ์ RS-232 ผ่าน screenGNU $ screen /dev/ttyUSB0 115200 ในบางจุดฉันจำเป็นต้องส่งไฟล์โลคัลไปยังอุปกรณ์โดยใช้โปรโตคอลxmodemหรือ kermitใน Windows ฉันใช้ TeraTerm ซึ่งมีรายการเมนูที่เกี่ยวข้อง ฉันจะบรรลุสิ่งนี้ในหน้าจอ GNU ได้อย่างไร


3
การแนบอุปกรณ์ USB-Serial พร้อม PID ที่กำหนดเองไปยัง ttyUSB0 บนอุปกรณ์
ฉันพยายามรับอุปกรณ์ FTDI USB-Serial ที่มี PID ที่กำหนดเองเพื่อแนบ (โดยอัตโนมัติหรือด้วยตนเอง) ไปยัง ttyUSB% n โดยไม่ประสบความสำเร็จ VID / PID ปกติของอุปกรณ์คือ 0403/6001 เมื่อตั้งโปรแกรมด้วยวิธีนี้มันจะทำงานได้อย่างสมบูรณ์และแนบตัวเองกับ ttyUSB0 โดยอัตโนมัติเมื่อทำการเชื่อมต่อแม้จะมีไดรเวอร์ที่คอมไพล์ใหม่เพื่อเคารพ PID ใหม่ของเราเมื่อตั้งโปรแกรมด้วย ttyUSB0 หนึ่งที่กำหนดเองจะไม่ปรากฏขึ้น โหลดไดรเวอร์ ฉันได้เพิ่ม PID ของเราไปยังส่วนหัวและแหล่งที่มา: // in ftdi_sio_ids.h #define FTDI_CUSTOM_PID 0xABCD // not the actual pid // then in ftdi_sio.c static struct usb_device_id id_table_combined [] = { // …

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