私のタイトルが特に正確でない場合は申し訳ありません。
Android Phone からシリアル デバイスにバイト データを転送しようとしています。以下に示すように、送信したいデータは 16 進値のバイト配列です。現在の方法で送信すると、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
.
ばかげているように聞こえるかもしれませんが、実際にはボーレートでした。