1

对不起,如果我的标题不是特别精确。

我正在尝试将字节数据从 Android 手机传输到串行设备。正如您在下面看到的,我要发送的数据是具有十六进制值的字节数组。如果我以现在的方式发送它们,RealTerm 串行端口监视器显示的值与我发送的值不同(F0 F0 FC F3)。

void __fastcall Blue::send(Byte * data, int len)
{
    TBytes DataToSend;
    DataToSend.set_length(1);

    for(int i = 0; i < len; i++)
    {
        DataToSend= ToBytes(data[i]);
        if(!btSocket->Connected)
            btSocket->Connect();
        btSocket->SendData(toSend);
    }
}

int Bluetooth::sendMessage(void *data, unsigned short len)
{
    Byte bff[4] = {'\AA', '\x55', '\xA5', '\x5A'};
    unsigned short crc;

    crc = util->calcCRC((unsigned long)data, len / 2);

    send(bff, 4);
    send((Byte *)data, len);
    return 0;
}

这就是我获得连接的方式

TBluetoothSocket* Bluetooth::getBtSocket()
{
    if(btSocket == NULL)
    {
        TBluetoothDevice * lDevice = fPairedDevices->Items[Form1->ComboBoxPairedDevices->ItemIndex];
        btSocket = lDevice->CreateClientSocket(StringToGUID(ServiceGUI), false);
    }
    return btSocket;
}

所以我要做的第一件事是将 bff 作为开始序列发送,然后我想使用串行通信发送其余数据。btSocket只是一个TBluetoothSocket

尽管听起来很愚蠢,但实际上是波特率。

4

1 回答 1

0

在 RealTerm 上设置正确的波特率;)

于 2018-10-11T12:23:10.463 回答