Raspberry PI 蓝牙 RFcomm 立即断开连接

Raspberry PI Bluetooth RFcomm Immediately Disconnects

我正在尝试在 Windows 10 计算机上创建 Raspberry Pi 和 .NET 应用程序之间的连接。 到目前为止,我已经成功地配对了这两个设备。下一步是在它们之间发送数据。

为此,我使用以下命令开始侦听端口

sudo rfcomm watch /dev/rfcomm1

当我在 Windows 机器上使用 PuTTY 建立连接时,它工作正常,所以我想我正确配置了 Raspberry PI。

但是,我的目标是通过 .NET 应用程序建立连接。当我 运行 应用程序时,它会连接,但之后会立即断开连接。

pi@raspberrypi:~ $ sudo rfcomm watch /dev/rfcomm1 Waiting for connection on channel 1 Connection from B4:0E:DE:13:FB:D6 to /dev/rfcomm1 Press CTRL-C for hangup Disconnected Waiting for connection on channel 1

Connection Bug

我为 .NET 应用程序使用了以下代码。

using System;
using System.IO.Ports;

namespace ControllerManager
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] ports = SerialPort.GetPortNames();
            Console.WriteLine("The following serial ports were found:");
            foreach (string port in ports)
            {
                Console.WriteLine(port);
            }

            if (ports.Length > 0)
            {
                SerialPort Port = new SerialPort("COM12", 9600, Parity.None, 8, StopBits.One)
                {
                    Handshake = Handshake.XOnXOff
                };

                Console.WriteLine("");              
                Console.WriteLine($"Opened {Port.PortName}");              
                if (!Port.IsOpen) Port.Open();

                Console.ReadKey();
            }
        }
    }
}

Sudo btmon 对 .NET 应用的响应:

pi@raspberrypi:~ $ sudo btmon
Bluetooth monitor ver 5.55
= Note: Linux version 5.10.63-v7+ (armv7l)                             0.457478
= Note: Bluetooth subsystem version 2.22                               0.457492
= New Index: B8:27:EB:B5:04:83 (Primary,UART,hci0)              [hci0] 0.457502
= Open Index: B8:27:EB:B5:04:83                                 [hci0] 0.457506
= Index Info: B8:27:EB:B5:04:83 (Cypress Semiconductor)         [hci0] 0.457512
@ MGMT Open: bluetoothd (privileged) version 1.18             {0x0001} 0.457518
> HCI Event: Connect Request (0x04) plen 10                #1 [hci0] 105.381895
        Address: B4:0E:DE:13:FB:D6 (Intel Corporate)
        Class: 0x2a010c
          Major class: Computer (desktop, notebook, PDA, organizers)
          Minor class: Laptop
          Networking (LAN, Ad hoc)
          Capturing (Scanner, Microphone)
          Audio (Speaker, Microphone, Headset)
        Link type: ACL (0x01)
< HCI Command: Accept Connection R.. (0x01|0x0009) plen 7  #2 [hci0] 105.382027
        Address: B4:0E:DE:13:FB:D6 (Intel Corporate)
        Role: Master (0x00)
> HCI Event: Command Status (0x0f) plen 4                  #3 [hci0] 105.382508
      Accept Connection Request (0x01|0x0009) ncmd 1
        Status: Success (0x00)
> HCI Event: Role Change (0x12) plen 8                     #4 [hci0] 105.541361
        Status: Success (0x00)
        Address: B4:0E:DE:13:FB:D6 (Intel Corporate)
        Role: Master (0x00)
> HCI Event: Connect Complete (0x03) plen 11               #5 [hci0] 105.562721
        Status: Success (0x00)
        Handle: 11
        Address: B4:0E:DE:13:FB:D6 (Intel Corporate)
        Link type: ACL (0x01)
        Encryption: Disabled (0x00)
< HCI Command: Read Remote Support.. (0x01|0x001b) plen 2  #6 [hci0] 105.563343
        Handle: 11
> HCI Event: Command Status (0x0f) plen 4                  #7 [hci0] 105.564214
      Read Remote Supported Features (0x01|0x001b) ncmd 1
        Status: Success (0x00)
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1      #8 [hci0] 105.564316
        Scan enable: No Scans (0x00)
> HCI Event: Read Remote Supported Featu.. (0x0b) plen 11  #9 [hci0] 105.564769
        Status: Success (0x00)
        Handle: 11
        Features: 0xbf 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
          3 slot packets
          5 slot packets
          Encryption
          Slot offset
          Timing accuracy
          Role switch
          Sniff mode
          Power control requests
          Channel quality driven data rate (CQDDR)
          SCO link
          HV2 packets
          HV3 packets
          u-law log synchronous data
          A-law log synchronous data
          CVSD synchronous data
          Paging parameter negotiation
          Power control
          Transparent synchronous data
          Enhanced Data Rate ACL 2 Mbps mode
          Enhanced Data Rate ACL 3 Mbps mode
          Enhanced inquiry scan
          Interlaced inquiry scan
          Interlaced page scan
          RSSI with inquiry results
          Extended SCO link (EV3 packets)
          EV4 packets
          EV5 packets
          AFH capable slave
          AFH classification slave
          LE Supported (Controller)
          3-slot Enhanced Data Rate ACL packets
          5-slot Enhanced Data Rate ACL packets
          Sniff subrating
          Pause encryption
          AFH capable master
          AFH classification master
          Enhanced Data Rate eSCO 2 Mbps mode
          Enhanced Data Rate eSCO 3 Mbps mode
          3-slot Enhanced Data Rate eSCO packets
          Extended Inquiry Response
          Simultaneous LE and BR/EDR (Controller)
          Secure Simple Pairing
          Encapsulated PDU
          Erroneous Data Reporting
          Non-flushable Packet Boundary Flag
          Link Supervision Timeout Changed Event
          Inquiry TX Power Level
          Enhanced Power Control
          Extended features
> HCI Event: Command Complete (0x0e) plen 4               #10 [hci0] 105.565058
      Write Scan Enable (0x03|0x001a) ncmd 1
        Status: Success (0x00)

< ACL Data TX: Handle 11 flags 0x00 dlen 12                #76 [hci0] 36.293040
      Channel: 65 len 8 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x01 cr 0 dlci 0x00
         Control: 0xef poll/final 0
         Length: 4
         FCS: 0xaa
         MCC Message type: Modem Status Command RSP (0x38)
           Length: 2
           dlci 2
           fc 0 rtc 1 rtr 1 ic 0 dv 1
> HCI Event: Number of Completed Packets (0x13) plen 5     #77 [hci0] 36.316233
        Num handles: 1
        Handle: 11
        Count: 2
> ACL Data RX: Handle 11 flags 0x02 dlen 18                #78 [hci0] 36.319919
      Channel: 64 len 14 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x03 cr 1 dlci 0x00
         Control: 0xef poll/final 0
         Length: 10
         FCS: 0x70
         MCC Message type: Remote Port Negotiation Command CMD (0x24)
           Length: 8
           dlci 2
           br 3 db 0 sb 0 p 0 pt 0 xi 0 xo 0
           rtri 0 rtro 0 rtci 0 rtco 0 xon 0 xoff 0
           pm 0x0001
< ACL Data TX: Handle 11 flags 0x00 dlen 18                #79 [hci0] 36.320062
      Channel: 65 len 14 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x01 cr 0 dlci 0x00
         Control: 0xef poll/final 0
         Length: 10
         FCS: 0xaa
         MCC Message type: Remote Port Negotiation Command RSP (0x24)
           Length: 8
           dlci 2
           br 3 db 0 sb 0 p 0 pt 0 xi 0 xo 0
           rtri 0 rtro 0 rtci 0 rtco 0 xon 0 xoff 0
           pm 0x3f7f
> HCI Event: Number of Completed Packets (0x13) plen 5     #80 [hci0] 36.322590
        Num handles: 1
        Handle: 11
        Count: 2
> ACL Data RX: Handle 11 flags 0x02 dlen 18                #81 [hci0] 36.324936
      Channel: 64 len 14 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x03 cr 1 dlci 0x00
         Control: 0xef poll/final 0
         Length: 10
         FCS: 0x70
         MCC Message type: Remote Port Negotiation Command CMD (0x24)
           Length: 8
           dlci 2
           br 3 db 0 sb 0 p 0 pt 0 xi 0 xo 0
           rtri 0 rtro 0 rtci 0 rtco 0 xon 0 xoff 0
           pm 0x0001
< ACL Data TX: Handle 11 flags 0x00 dlen 18                #82 [hci0] 36.325051
      Channel: 65 len 14 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x01 cr 0 dlci 0x00
         Control: 0xef poll/final 0
         Length: 10
         FCS: 0xaa
         MCC Message type: Remote Port Negotiation Command RSP (0x24)
           Length: 8
           dlci 2
           br 3 db 0 sb 0 p 0 pt 0 xi 0 xo 0
           rtri 0 rtro 0 rtci 0 rtco 0 xon 0 xoff 0
           pm 0x3f7f
> ACL Data RX: Handle 11 flags 0x02 dlen 12                #83 [hci0] 36.329897
      Channel: 64 len 8 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x03 cr 1 dlci 0x00
         Control: 0xef poll/final 0
         Length: 4
         FCS: 0x70
         MCC Message type: Modem Status Command CMD (0x38)
           Length: 2
           dlci 2
           fc 0 rtc 1 rtr 0 ic 0 dv 0
< ACL Data TX: Handle 11 flags 0x00 dlen 12                #84 [hci0] 36.330044
      Channel: 65 len 8 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x01 cr 0 dlci 0x00
         Control: 0xef poll/final 0
         Length: 4
         FCS: 0xaa
         MCC Message type: Modem Status Command RSP (0x38)
           Length: 2
           dlci 2
           fc 0 rtc 1 rtr 0 ic 0 dv 0
< ACL Data TX: Handle 11 flags 0x00 dlen 8                 #85 [hci0] 36.330290
      Channel: 65 len 4 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Disconnect (DISC) (0x43)
         Address: 0x09 cr 0 dlci 0x02
         Control: 0x53 poll/final 1
         Length: 0
         FCS: 0xd9
> HCI Event: Number of Completed Packets (0x13) plen 5     #86 [hci0] 36.333749
        Num handles: 1
        Handle: 11
        Count: 2
> ACL Data RX: Handle 11 flags 0x02 dlen 12                #87 [hci0] 36.336186
      Channel: 64 len 8 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x03 cr 1 dlci 0x00
         Control: 0xef poll/final 0
         Length: 4
         FCS: 0x70
         MCC Message type: Modem Status Command CMD (0x38)
           Length: 2
           dlci 2
           fc 0 rtc 0 rtr 0 ic 0 dv 0
< ACL Data TX: Handle 11 flags 0x00 dlen 12                #88 [hci0] 36.336372
      Channel: 65 len 8 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x01 cr 0 dlci 0x00
         Control: 0xef poll/final 0
         Length: 4
         FCS: 0xaa
         MCC Message type: Modem Status Command RSP (0x38)
           Length: 2
           dlci 2
           fc 0 rtc 0 rtr 0 ic 0 dv 0
> ACL Data RX: Handle 11 flags 0x02 dlen 8                 #89 [hci0] 36.337405
      Channel: 64 len 4 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Ack (UA) (0x63)
         Address: 0x09 cr 0 dlci 0x02
         Control: 0x73 poll/final 1
         Length: 0
         FCS: 0xf3
< ACL Data TX: Handle 11 flags 0x00 dlen 8                 #90 [hci0] 36.337588
      Channel: 65 len 4 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Disconnect (DISC) (0x43)
         Address: 0x01 cr 0 dlci 0x00
         Control: 0x53 poll/final 1
         Length: 0
         FCS: 0x9c
> HCI Event: Number of Completed Packets (0x13) plen 5     #91 [hci0] 36.340002
        Num handles: 1
        Handle: 11
        Count: 2
> ACL Data RX: Handle 11 flags 0x02 dlen 8                 #92 [hci0] 36.344859
      Channel: 64 len 4 [PSM 3 mode Basic (0x00)] {chan 0}
      RFCOMM: Unnumbered Ack (UA) (0x63)
         Address: 0x01 cr 0 dlci 0x00
         Control: 0x73 poll/final 1
         Length: 0
         FCS: 0xb6
< ACL Data TX: Handle 11 flags 0x00 dlen 12                #93 [hci0] 36.345027
      L2CAP: Disconnection Request (0x06) ident 6 len 4
        Destination CID: 65
        Source CID: 64
> ACL Data RX: Handle 11 flags 0x02 dlen 12                #94 [hci0] 36.387495
      L2CAP: Disconnection Response (0x07) ident 6 len 4
        Destination CID: 65
        Source CID: 64
> HCI Event: Number of Completed Packets (0x13) plen 5     #95 [hci0] 36.387898
        Num handles: 1
        Handle: 11
        Count: 2
> HCI Event: Disconnect Complete (0x05) plen 4             #96 [hci0] 39.523319
        Status: Success (0x00)
        Handle: 11
        Reason: Remote User Terminated Connection (0x13)
@ MGMT Event: Device Disconnected (0x000c) plen 8     {0x0001} [hci0] 39.523393
        BR/EDR Address: B4:0E:DE:13:FB:D6 (Intel Corporate)
        Reason: Connection terminated by remote host (0x03)
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1      #97 [hci0] 39.645666
        Scan enable: Page Scan (0x02)
> HCI Event: Command Complete (0x0e) plen 4                #98 [hci0] 39.646023
      Write Scan Enable (0x03|0x001a) ncmd 1
        Status: Success (0x00)

关于如何解决这个问题有什么建议吗?在此先感谢。

所以我还是没能正确使用System.IO.ports库;相反,我现在使用 InTheHand 蓝牙库,它运行良好。