извините, если мой заголовок не очень точен.
Я пытаюсь перенести байтовые данные с телефона Android на последовательное устройство.
Как вы можете видеть ниже, данные, которые я хочу отправить, являются байтовым массивом со значениями Hex.
если я отправлю их так, как я делаю прямо сейчас, на мониторе последовательного порта 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;)
Других решений пока нет …