使用蓝牙组件将数据从 Android Phone 传输到串行设备时出现问题
Problems transferring data from Android Phone to Serial Device using Bluetooth component
抱歉,如果我的标题不是特别准确。
我正在尝试将字节数据从 Android Phone 传输到串行设备。
正如您在下面看到的,我要发送的数据是一个具有十六进制值的字节数组。
如果我按照现在的方式发送它们,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
.
虽然听起来很愚蠢,但实际上是波特率。
在您的 RealTerm 上设置正确的波特率 ;)
抱歉,如果我的标题不是特别准确。
我正在尝试将字节数据从 Android Phone 传输到串行设备。 正如您在下面看到的,我要发送的数据是一个具有十六进制值的字节数组。 如果我按照现在的方式发送它们,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
.
虽然听起来很愚蠢,但实际上是波特率。
在您的 RealTerm 上设置正确的波特率 ;)