PDA

View Full Version : ارتباط با ماجول بلوتوث HC-05



asgarkz
شنبه 12 تیر 1395, 22:15 عصر
سلام
من یک برنامه با دلفی XE8 و کامپوننت TBluetooth نوشته ام که اگر روی دو تا گوشی اندرویدی نصب بشه، میتونن برای هم ارسال و دریافت اطلاعات رو انجام بدن ولی وقتی با همین برنامه از روی یک گوشی اندرویدی میخوام اطلاعات رو به ماجول بلوتوث HC-05 ارسال کنم، دریافتی صورت نمیگیرد. دلیلش چی میتونه باشه؟

asgarkz
یک شنبه 13 تیر 1395, 23:49 عصر
با تشکر از توجه دوستان، روال برنامه رو توضیح میدم تا شاید در حل مشکل مفید باشه

در ابتدا روال OpenSocket برای یکبار اجرا میشود و سپس روال SendData عملیات ارسال رشته را انجام می دهد



type
TServerConnectionTH = class(TThread)
private
{ Private declarations }
FServerSocket: TBluetoothServerSocket;
FSocket: TBluetoothSocket;
FData: TBytes;
protected
procedure Execute; override;
public
{ Public declarations }
constructor Create(ACreateSuspended: Boolean);
destructor Destroy; override;
end;

------------------

TForm1 = class(TForm)
ComboBox1: TComboBox;
Bluetooth1: TBluetooth;
....
private
{ Private declarations }
zServerConnectionTH: TServerConnectionTH;
zSocket: TBluetoothSocket;
//--------------
procedure OpenSocket;
procedure SendData;
public
{ Public declarations }
end;

---------------------

procedure TForm1.OpenSocket;
begin
if ((zServerConnectionTH = nil) and
(Bluetooth1.ConnectionState = TBluetoothConnectionState.Connected)) then
begin
zServerConnectionTH := TServerConnectionTH.Create(True);
zServerConnectionTH.FServerSocket :=
Bluetooth1.CurrentAdapter.CreateServerSocket('Basi c Text Server', StringToGUID('{B62C4E8D-62CC-404B-BBBF-BF3E3BBB1378}'), False);
zServerConnectionTH.Start;
end;
end;

--------------------

procedure TForm1.SendData;
var
ToSend: TBytes;
zDevice: TBluetoothDevice;
begin
if (zSocket = nil) then
begin
zDevice := Bluetooth1.PairedDevices[ComboBox1.ItemIndex] as TBluetoothDevice;
zSocket := zDevice.CreateClientSocket('{B62C4E8D-62CC-404B-BBBF-BF3E3BBB1378}', False);
zSocket.Connect;
end;
ToSend := TEncoding.UTF8.GetBytes('test');
zSocket.SendData(ToSend);
end;

ابوالفضل عباسی
دوشنبه 14 تیر 1395, 09:26 صبح
عجیبه.ولی شاید کامپوننت بلوتوثی که دلفی داره استفاده میکنه،فقط میتونه با دیوایس های هم شکل خودش ارتباط برقرار کنه.بعیده،ولی ممکنه اینطوری باشه.چون ماژول بلوتوث هم مثل یک گوشی بلوتوثی می مونه که باید بتونه فایل send,receive کنه،ولی دلفی باهاش سازگاری نداره.

DAMAVAND
سه شنبه 15 تیر 1395, 11:00 صبح
منم همین مشکل رو داشتم و هر چی سعی کردم نتوستنم حلش کنم!!! قاعدتا نباید هیچ فرقی باشه بین ماژول و گوشی برای دلفی!!!

asgarkz
پنج شنبه 17 تیر 1395, 16:29 عصر
سلام
خوشبختانه مشکل ارسال اطلاعات حل شد. کافیه سرویس پشتیبانی شده در ماجول HC-05 رو که ظاهرا سرویس سریال هست رو انتخاب کنیم و بعد روال OpenSocket رو اجرا کنیم. اما همچنان مشکل دریافت باقیست

asgarkz
جمعه 01 مرداد 1395, 22:55 عصر
با تشکر از همه دوستان. برای دریافت هم از zSocket.ReceiveData استفاده کردم و مشکل حل شد

moj127
چهارشنبه 10 خرداد 1396, 12:22 عصر
با تشکر از همه دوستان. برای دریافت هم از zSocket.ReceiveData استفاده کردم و مشکل حل شد


آقا دمت گرم میتونی یه راهنمایی بکنی که دقیقا چیکار کردی؟
من هنوز توی ارتباط با ماژول مشکل دارم و نمیدونم باید چیکار کنم؟