ฉันจะเชื่อมต่อเทอร์มินัลอนุกรมดิบกับการเชื่อมต่อบลูทู ธ ได้อย่างไร


10

ฉันกำลังพยายามเชื่อมต่อกับ Totalstation ที่ไม่มีไดรเวอร์บลูทู ธ ขณะที่ฉันกำลังทำสิ่งนี้ด้วยเหตุผลในการวินิจฉัยอย่างแท้จริงฉันต้องการที่จะเห็นผลดิบจากการเชื่อมต่อแบบอนุกรมที่จัดตั้งขึ้น

ฉันต้องทำอย่างไรกับการส่งออกท่อทั้งหมดจากการเชื่อมต่อบลูทู ธ ไปยังเทอร์มินัล


คุณกำลังทำ Bluetooth-> Serial, Serial-> Bluetooth หรือสองทาง?
nanofarad

Totalstation Bluetooth <-> Ubuntu Bluetooth ระบุว่า Totalstation มีการกำหนดค่ามาตรฐานแบบอนุกรมผ่าน USB ฉันสงสัยว่ามันกำลังสร้างการเชื่อมต่อแบบอนุกรมผ่านบลูทู ธ แน่นอนฉันอาจผิดอย่างสมบูรณ์ ณ จุดนี้คำตอบที่ฉันผิดและบลูทู ธ ที่ใช้ XYZ นั้นอนุญาตอย่างสมบูรณ์
Brian Ballsun-Stanton

ในแง่ของการพิสูจน์สองทางฉันได้สร้างการเชื่อมต่อแบบอนุกรมว่างเปล่าผ่าน "หน้าจอ" ที่ทำให้เกิดเสียงบี๊บผิดพลาดบนอุปกรณ์เมื่อฉันกดปุ่มบนคีย์บอร์ด ดังนั้นฉันสงสัยว่าฉันไปมาครึ่งทางแล้วฉันก็ไม่รู้ว่าครึ่งทางไหน
Brian Ballsun-Stanton

คุณสามารถวาดแผนภาพอย่างรวดเร็วได้หรือไม่? ฉันไม่สามารถเข้าใจได้ว่ามันเป็นอนุกรมหรือบลูทู ธ ผ่านอนุกรมรวมถึงผู้ที่ส่งผ่านข้อมูลไปยังที่ใด เพียงแค่ทำใน GIMP หรือบางสิ่งและอัปโหลดได้ที่นี่
nanofarad

ทำงานได้ดีมาก แต่ฉันพบข้อผิดพลาดบางอย่างกับ RFCOMM เมื่อฉันเชื่อมต่อกับ SCREEN บาง AT-Sequences จะถูกพิมพ์โดยอัตโนมัติ "ATE1 E0" <RETURN> สามครั้ง เนื่องจากว่ามีบางอย่าง "การเข้าสู่ระบบล้มเหลว" ปรากฏขึ้นที่ด้าน Raspi หลังจากนั้นฉันสามารถล็อกอินสำเร็จและใช้เทอร์มินัลเซสชันโดยไม่มีข้อบกพร่องเพิ่มเติม
โคดี้

คำตอบ:


5

เป็นการเพิ่มเติมจากคำตอบของไบรอัน หน้าจอไม่ทำงานสำหรับฉันแสดงทันที[screen is terminating]

ดังนั้นฉันจึงพบสคริปต์pit minitermนี้ การใช้งานที่คล้ายกัน:

sudo miniterm.py /dev/rfcomm0

12

1) ใช้hcitool scanเพื่อค้นหาที่อยู่ Mac ของอุปกรณ์

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

2) ฉันไม่แน่ใจว่านี่เป็นสิ่งจำเป็น แต่ในเมนู Bluetooth gui ให้จับคู่อุปกรณ์

3) ใน /etc/bluetooth/rfcomm.conf

rfcomm0 {
        bind no;
        device 00:07:80:44:4F:37;
        channel 1;
        comment "Serial Port";
        }

"ไม่มีการผูกมัด" มีความสำคัญมิฉะนั้นจะพยายามผูกมัดแบบอัตโนมัติซึ่งแสดงปัญหาทุกประเภทสำหรับการเข้าถึงอุปกรณ์จริง ๆ

4) sudo rfcomm connect 0

หากคุณมีข้อผิดพลาดให้เริ่มบริการบลูทู ธ ใหม่

5) screen /dev/rfcomm0

สำหรับคำสั่งอนุกรมจริงที่ส่งด้วยวิธีนี้ติดต่อผู้ขายของคุณ


3
ฉันได้รับ "พารามิเตอร์ dev ที่ขาดหายไป" เมื่อฉันพยายามเรียกใช้ "rfcomm connect 0"
someonewithpc

คุณแก้ไขไฟล์ conf ของคุณถูกต้องหรือไม่?
Brian Ballsun-Stanton

5
ลอง sudo rfcomm เชื่อมต่อ rfcomm0 00: 07: 80: 44: 4F: 37
elopio

oneliner ของ elopia ง่ายมาก มันใช้งานได้สำหรับฉัน
ptetteh227

10

นี่คือวิธีในการเชื่อมต่อกับอุปกรณ์บลูทู ธ HC-05 ที่ต่อกับ Arduino ของฉัน ไม่จำเป็นต้องเขียนไฟล์เหมือนในคำตอบของ Brian แต่ความคิดนั้นคล้ายกัน ฉันทดสอบด้วยการตั้งค่าอัตราบอด 9600 บนอุปกรณ์ HC-05

ขั้นตอนแรก: จับคู่อุปกรณ์และระบุ PIN

ฉันพยายามตั้งค่าจากการจับคู่ GUI แต่มันไม่ทำงาน นี่คือวิธีที่บรรทัดคำสั่งเพื่อดำเนินการที่ได้ผลสำหรับฉัน ก่อนอื่นให้เราจับคู่อุปกรณ์จากบรรทัดคำสั่ง วิ่ง :

sudo bluetoothctl

ตรวจสอบให้แน่ใจว่าอุปกรณ์บลูทู ธ เริ่มทำงานแล้ว:

# power on

ตอนนี้เราเริ่มตัวแทนที่จะ "จดจำพิน" สำหรับrfcomm:

# agent on

ตอนนี้เราเปิดใช้งานโหมดสแกนเพื่อค้นหาอุปกรณ์ของเราและสามารถจับคู่ได้:

# scan on

หลังจากนั้นไม่กี่วินาที MAC ของอุปกรณ์ของคุณจะปรากฏขึ้น เราจะแสดงว่าเป็นหลังจาก จากนั้นคุณต้องจับคู่อุปกรณ์ดังนี้:

# pair <MAC>

คุณจะถูกขอให้พิมพ์ PIN โดยค่าเริ่มต้นจะ1234อยู่ในอุปกรณ์ HC-05 ของฉัน คุณสามารถทราบว่าเป็นไปได้ว่าอุปกรณ์ของคุณเชื่อมต่อจากนั้นตัดการเชื่อมต่อด้วยข้อความเช่นนั้น:

[CHG] Device 20:16:10:24:29:77 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:16:10:24:29:77 ServicesResolved: yes
[CHG] Device 20:16:10:24:29:77 Paired: yes
Pairing successful
[CHG] Device 20:16:10:24:29:77 ServicesResolved: no
[CHG] Device 20:16:10:24:29:77 Connected: no

แต่มันไม่ใช่ปัญหา คุณไม่จำเป็นต้องเชื่อมต่อดังนั้นตอนนี้คุณสามารถออกจากพิมพ์bluetoothctlCtrl + D

ระบุไฟล์ที่ใช้งานได้ /dev/rfcomm0

ประการแรกต้องแน่ใจว่าคุณไม่ได้ใช้คำสั่ง rfcomm ใด ๆ มาก่อน แน่นอนแม้ว่าคุณจะปิดด้วยCtrl+Cโปรแกรมก็ยังคงทำงานในพื้นหลัง

sudo killall rfcomm

ตอนนี้คุณสามารถเรียกใช้

sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &

โปรดทราบว่าหากคุณพยายามเขียนอินพุตของ rfcom ไม่มีอะไรเกิดขึ้น คุณต้องใช้โปรแกรมอื่น

ขั้นตอนที่สามและครั้งสุดท้าย: เขียนลงใน /dev/rfcomm0

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

stty: /dev/rfcomm0: Device or resource busy

ตัวเลือกแรก: เชื่อมต่อโดยใช้ screen

หน้าจอเป็นเครื่องมือที่มีประสิทธิภาพมาก คุณสามารถติดตั้งได้ (มันจะเป็นประโยชน์ตลอดไปอีกต่อไป) โดยใช้:

sudo apt-get install screen

จากนั้นเรียกใช้

sudo screen /dev/rfcomm0

หากคุณลืมที่จะรันมันในฐานะ root คุณจะได้รับข้อผิดพลาดเหมือนที่ Aleksander ได้รับ:

[screen is terminating]

หากต้องการออกจากระบบให้พิมพ์ "(CTRL + A) +: quit"

ตัวเลือกที่สอง: เชื่อมต่อโดยใช้ minicom

ติดตั้ง

sudo apt-get install minicom

จากนั้นเรียกใช้

sudo minicom -D /dev/rfcomm0

หากคุณลืมรันเป็นรูทคุณจะพบข้อผิดพลาด

minicom: cannot open /dev/rfcomm0: Device or resource busy

หากต้องการออกจากระบบให้พิมพ์ "Ctrl + A X"

ตัวเลือกที่สาม: สคริปต์ python miniterm

ดาวน์โหลดสคริปต์นี้และเรียกใช้:

chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0

เขียนลงในไฟล์โดยตรง

เรียกใช้คำสั่งต่อไปนี้ก่อน (9600 เป็นอัตรา baud):

sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts 

ตอนนี้คุณสามารถเขียนในไฟล์นี้เหมือนในไฟล์คลาสสิค:

sudo su -c "echo 'message' > /dev/rfcomm0"

และในทางทฤษฎีอ่านจากการใช้

sudo tail -f /dev/rfcomm0

แต่ฉันไม่ทราบว่าการอ่านไม่ได้ผลหากคุณมีความคิด ...


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