Làm cách nào để kết nối thiết bị đầu cuối nối tiếp thô với kết nối bluetooth?


10

Tôi đang cố gắng kết nối với Totalstation không cung cấp trình điều khiển bluetooth. Khi tôi đang làm điều này vì lý do chẩn đoán thuần túy, tôi muốn thấy đầu ra thô từ kết nối nối tiếp được thiết lập.

Tôi phải làm gì để chuyển tất cả đầu ra từ kết nối bluetooth sang thiết bị đầu cuối?


Bạn đang thực hiện Bluetooth-> Nối tiếp, Nối tiếp-> Bluetooth hoặc hai chiều?
nanofarad

Totalstation Bluetooth <-> Ubuntu Bluetooth. Cho rằng Totalstation có cấu hình nối tiếp tiêu chuẩn qua USB, tôi nghi ngờ nó đang thiết lập kết nối nối tiếp qua Bluetooth. Tất nhiên, tôi có thể hoàn toàn sai, tại thời điểm đó, câu trả lời rằng tôi sai và bluetooth sử dụng XYZ là hoàn toàn cho phép.
Brian Ballsun-Stanton

Về mặt bằng chứng hai chiều, tôi đã quản lý để thiết lập kết nối nối tiếp trống qua "màn hình" gây ra tiếng bíp trên thiết bị khi tôi nhấn phím trên bàn phím. Vì vậy, tôi nghi ngờ rằng tôi đang đi được nửa đường, tôi chỉ không biết là một nửa.
Brian Ballsun-Stanton

Bạn có thể vẽ một sơ đồ nhanh chóng? Tôi không thể hiểu liệu nó nối tiếp hay bluetooth qua nối tiếp, cũng như ai đang truyền dữ liệu tới đâu. Chỉ cần làm điều đó trong GIMP hoặc một cái gì đó và tải nó lên đây
nanofarad

Hoạt động rất tốt nhưng tôi gặp phải một số trục trặc với RFCOMM. Khi tôi kết nối với SCREEN, một số Chuỗi AT được nhập tự động "ATE1 E0" <RETURN> ba lần. Do đó, một số "Đăng nhập thất bại" xuất hiện ở phía Raspi. Sau đó, tôi có thể đăng nhập thành công và sử dụng phiên cuối cùng với bất kỳ trục trặc nào khác.
Cody

Câu trả lời:


5

Như một bổ sung cho câu trả lời của Brian. Màn hình không hoạt động với tôi, ngay lập tức hiển thị[screen is terminating]

Vì vậy, tôi tìm thấy kịch bản python miniterm này . Cách sử dụng tương tự:

sudo miniterm.py /dev/rfcomm0

12

1) Sử dụng hcitool scanđể tìm địa chỉ Mac của thiết bị.

Thiết bị nên được đặt ở chế độ phụ với một pin đã biết. Nếu bạn không sử dụng mã pin đã biết, ubfox sẽ tạo ra một pin và bạn thường sẽ không có thời gian để nhập nó vào các menu cồng kềnh của công cụ đo lường của bạn.

2) Tôi không hoàn toàn chắc chắn điều này là cần thiết, nhưng trong menu bluetooth gui, hãy ghép nối thiết bị.

3) trong /etc/bluetooth/rfcomm.conf

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

"Liên kết không" rất quan trọng, nếu không, nó sẽ cố gắng tự động ràng buộc, điều này đưa ra tất cả các loại vấn đề khi thực sự truy cập thiết bị (vì nó khá kén chọn khi liên kết với nó)

4) sudo rfcomm connect 0

Nếu bạn có lỗi, hãy khởi động lại dịch vụ bluetooth.

5) screen /dev/rfcomm0

Đối với các lệnh nối tiếp thực tế được truyền theo cách này, liên hệ với nhà cung cấp của bạn và cầu xin.


3
Tôi nhận được "Thiếu tham số dev" khi tôi cố chạy "rfcomm kết nối 0"
someonewithpc

Bạn đã chỉnh sửa tập tin conf của bạn một cách chính xác?
Brian Ballsun-Stanton

5
Hãy thử sudo rfcomm kết nối rfcomm0 00: 07: 80: 44: 4F: 37
elopio

@ elopia's oneliner rất đơn giản. Nó làm việc cho tôi
ptetteh227

10

Đây là cách của tôi để tiến hành kết nối với thiết bị bluetooth HC-05 được cắm trên arduino của tôi. Không cần phải viết một tệp như trong câu trả lời của Brian, nhưng ý tưởng thì tương tự. Tôi đã thử nghiệm nó với thiết lập tốc độ baud 9600 trên thiết bị HC-05.

Bước đầu tiên: ghép nối thiết bị và cung cấp mã PIN

Tôi đã cố gắng thiết lập từ GUI ghép nối, nhưng nó không hoạt động. Đây là cách dòng lệnh để tiến hành làm việc cho tôi. Đầu tiên, chúng ta hãy ghép nối thiết bị từ dòng lệnh. Chạy :

sudo bluetoothctl

Hãy chắc chắn rằng thiết bị bluetooth đã được khởi động:

# power on

Bây giờ chúng ta bắt đầu tác nhân sẽ "nhớ pin" cho rfcomm:

# agent on

Bây giờ chúng tôi kích hoạt chế độ quét để tìm thiết bị của mình và có thể ghép nối thiết bị:

# scan on

Sau vài giây, MAC của thiết bị của bạn sẽ xuất hiện. Chúng tôi sẽ biểu thị nó như sau. Sau đó, bạn chỉ cần ghép thiết bị như thế này:

# pair <MAC>

Theo mặc định, bạn sẽ được yêu cầu nhập mã PIN, 1234trên thiết bị HC-05 của tôi. Bạn có thể lưu ý rằng có thể thiết bị của bạn kết nối rồi ngắt kết nối với một tin nhắn như thế:

[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

Nhưng nó không phải là một vấn đề. Bạn không cần kết nối, vì vậy bây giờ bạn có thể thoát bluetoothctlbằng cách nhập Ctrl + D.

Cung cấp một tập tin có thể sử dụng /dev/rfcomm0

Đầu tiên, hãy chắc chắn rằng bạn không chạy bất kỳ lệnh rfcomm nào trước đó. Thật vậy, ngay cả khi bạn đóng với Ctrl+Cchương trình, nó vẫn chạy trong nền.

sudo killall rfcomm

Bây giờ, bạn có thể chạy

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

Lưu ý rằng nếu bạn cố gắng ghi vào đầu vào của rfcom, không có gì xảy ra. Bạn cần sử dụng một chương trình khác.

Bước thứ ba và cuối cùng: viết vào /dev/rfcomm0

Có một số cách để viết trên tệp, nhưng lưu ý rằng tất cả các cách để tiến hành liên quan đến root. Tôi mô tả ở đây một số chương trình có thể làm điều đó (để bạn có thể chọn tùy thuộc vào nhu cầu của bạn hoặc vào những gì được cài đặt trên hệ thống của bạn chẳng hạn). Nếu bạn quên chạy chương trình với quyền root, bạn có thể gặp lỗi:

stty: /dev/rfcomm0: Device or resource busy

Tùy chọn đầu tiên: kết nối bằng screen

Màn hình là một công cụ rất mạnh mẽ. Bạn có thể cài đặt nó (nó luôn hữu dụng nữa) bằng cách sử dụng:

sudo apt-get install screen

và sau đó chạy

sudo screen /dev/rfcomm0

Nếu bạn quên chạy nó dưới quyền root, bạn sẽ gặp lỗi như Aleksander mắc phải:

[screen is terminating]

Để thoát khỏi nó, nhập "(CTRL + A) +: thoát"

Tùy chọn thứ hai: kết nối bằng minicom

Cài đặt nó

sudo apt-get install minicom

và sau đó chạy

sudo minicom -D /dev/rfcomm0

Nếu bạn quên chạy nó dưới quyền root, bạn sẽ gặp lỗi như

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

Để thoát khỏi nó, gõ "Ctrl + A X".

Tùy chọn thứ ba: tập lệnh python miniterm

Tải xuống tập lệnh này và chạy:

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

Viết trực tiếp vào tập tin

Đầu tiên chạy lệnh sau (9600 là tốc độ 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 

Bây giờ bạn có thể viết trong tệp này như trong một tệp cổ điển:

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

và trên lý thuyết đọc từ nó bằng cách sử dụng

sudo tail -f /dev/rfcomm0

Nhưng tôi không biết đọc không hoạt động, nếu bất kỳ ai trong số bạn có ý tưởng ...


/def/rfcomm0nên/dev/rfcomm0
stewSquared
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.