자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi XE7사용 블루투스 통신앱 안드로이드 롤리팝업그레이드 후 이상증세
2015.05.08 01:04
클래식 블루투스통신으로 통신앱을 만들었는데 참조는 Xe7예제 파일부분을 참조 했습니다.
그런데 앞전 테스트안드로이드 기기가 아이스크림샌트위치에서 지난달 롤리팝으로 업그레이드 하고난뒤 통신부분에서
데이터가 제대로 읽혀지거나 보내지지 않는거 같습니다.
클래식 블루투스 보내기 예제에서
procedure TForm1.SendData;
var
ToSend: TBytes;
LDevice: TBluetoothDevice;
begin
if (FSocket = nil) or (ItemIndex <> ComboboxPaired.ItemIndex) then
begin
if ComboboxPaired.ItemIndex > -1 then
begin
LDevice := FPairedDevices[ComboboxPaired.ItemIndex] as TBluetoothDevice;
DisplayR.Lines.Add(GetServiceName(ServiceGUI));
DisplayR.GoToTextEnd;
FSocket := LDevice.CreateClientSocket(StringToGUID(ServiceGUI), False);
if FSocket <> nil then
begin
ItemIndex := ComboboxPaired.ItemIndex;
FSocket.Connect;
ToSend := TEncoding.UTF8.GetBytes(Edit1.Text);
FSocket.SendData(ToSend);
DisplayR.Lines.Add('TX1:'+EDIT1.Text);
DisplayR.GoToTextEnd;
end
else
ShowMessage('Out of time -15s-');
end
else
ShowMessage('No paired device selected');
end
else
begin
ToSend := TEncoding.UTF8.GetBytes(Edit1.Text);
FSocket.SendData(ToSend);
DisplayR.Lines.Add('TX2:'+EDIT1.Text);
DisplayR.GoToTextEnd;
end;
end;
클래식블루투스 예제 수신 부분
FData := ASocket.ReadData;
if length(FData) > 0 then
Synchronize(procedure
begin
Form1.DisplayR.Lines.Add(TEncoding.UTF8.GetString(FData));
Form1.DisplayR.GoToTextEnd;
end);
sleep(100);
end;
아이스크림에서는 보내고 받고가 잘 하는데 롤리팝에서는 캐릭터는 날아가는거 같습니다. 예를 들면 1234 4자를 보내면
length(FData) 하면 4가 리턴이 됩니다. 근데 메모장에서는 아무것도 표시되지 않고 HEX로 보면 00넘어 옵니다 롤리팝에서
위와 같은 이슈가 있는지 있다면 해결방법이 있는지 알려주시기 바랍니다.
Delphi XE7사용 블루투스 통신앱 안드로이드 롤리팝업그레이드 후 이상증세
2015.05.08 01:04
클래식 블루투스통신으로 통신앱을 만들었는데 참조는 Xe7예제 파일부분을 참조 했습니다.
그런데 앞전 테스트안드로이드 기기가 아이스크림샌트위치에서 지난달 롤리팝으로 업그레이드 하고난뒤 통신부분에서
데이터가 제대로 읽혀지거나 보내지지 않는거 같습니다.
클래식 블루투스 보내기 예제에서
procedure TForm1.SendData;
var
ToSend: TBytes;
LDevice: TBluetoothDevice;
begin
if (FSocket = nil) or (ItemIndex <> ComboboxPaired.ItemIndex) then
begin
if ComboboxPaired.ItemIndex > -1 then
begin
LDevice := FPairedDevices[ComboboxPaired.ItemIndex] as TBluetoothDevice;
DisplayR.Lines.Add(GetServiceName(ServiceGUI));
DisplayR.GoToTextEnd;
FSocket := LDevice.CreateClientSocket(StringToGUID(ServiceGUI), False);
if FSocket <> nil then
begin
ItemIndex := ComboboxPaired.ItemIndex;
FSocket.Connect;
ToSend := TEncoding.UTF8.GetBytes(Edit1.Text);
FSocket.SendData(ToSend);
DisplayR.Lines.Add('TX1:'+EDIT1.Text);
DisplayR.GoToTextEnd;
end
else
ShowMessage('Out of time -15s-');
end
else
ShowMessage('No paired device selected');
end
else
begin
ToSend := TEncoding.UTF8.GetBytes(Edit1.Text);
FSocket.SendData(ToSend);
DisplayR.Lines.Add('TX2:'+EDIT1.Text);
DisplayR.GoToTextEnd;
end;
end;
클래식블루투스 예제 수신 부분
FData := ASocket.ReadData;
if length(FData) > 0 then
Synchronize(procedure
begin
Form1.DisplayR.Lines.Add(TEncoding.UTF8.GetString(FData));
Form1.DisplayR.GoToTextEnd;
end);
sleep(100);
end;
아이스크림에서는 보내고 받고가 잘 하는데 롤리팝에서는 캐릭터는 날아가는거 같습니다. 예를 들면 1234 4자를 보내면
length(FData) 하면 4가 리턴이 됩니다. 근데 메모장에서는 아무것도 표시되지 않고 HEX로 보면 00넘어 옵니다 롤리팝에서
위와 같은 이슈가 있는지 있다면 해결방법이 있는지 알려주시기 바랍니다.
자답) HOTFAX 롤리팝으로 업그레이드 하니까 해결이 돼네요