ورود

View Full Version : Service discovery failed on bluetoothSocket.Connect()



mohammadali1375
جمعه 18 مرداد 1392, 01:07 صبح
سلام. من میخام به پرت بلوتوث روی کامپیوتر دیتا بفرستم. بعد از دو روز تلاش تقریبا نحوه اتصال رو فهمیدم ولی الان وقتی متد connect از BluetoohSocket رو صدا میزنم ارور میده ( رو حالت دیباگ این تابع رو مشخص میکنه ) بعد هم از برنامه خارج میشه. فقط بگم اینو با C#‎‎ و Mono نوشتم ولی از روی یک کد جاوا : موقع دیباگ این ارور رو میده :

Java.IO.IOException: Service discovery failed at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr) [0x00022] in /Users/builder/data/lanes/monodroid-mac-monodroid-4.2.3-branch/410a5aba/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:356 at Android.Bluetooth.BluetoothSocket.Connect () [0x0002d] in /Users/builder/data/lanes/monodroid-mac-monodroid-4.2.3-branch/410a5aba/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.Bluetooth.BluetoothSocket.cs:72 at AndroidBluetooth.Activity1.ConnectButton_Click (object,System.EventArgs) [0x0005d] in c:\Users\mohammadali1375\Documents\Projects\Androi dBluetooth\AndroidBluetooth\Activity1.cs:37 at Android.Views.View/IOnClickListenerImplementor.OnClick (Android.Views.View) [0x0000b] in /Users/builder/data/lanes/monodroid-mac-monodroid-4.2.3-branch/410a5aba/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.Views.View.cs:629 at Android.Views.View/IOnClickListenerInvoker.n_OnClick_Landroid_view_Vi ew_ (intptr,intptr,intptr) [0x00010] in /Users/builder/data/lanes/monodroid-mac-monodroid-4.2.3-branch/410a5aba/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.Views.View.cs:600 at (wrapper dynamic-method) object.b05cb9ef-ea88-414d-bea0-d7bd33b4de9c (intptr,intptr,intptr) <IL 0x00012, 0x00033> --- End of managed exception stack trace --- java.io.IOException: Service discovery failed at android.bluetooth.BluetoothSocket$SdpHelper.doSdp( BluetoothSocket.java:406) at android.bluetooth.BluetoothSocket.connect(Bluetoot hSocket.java:217) at mono.android.view.View_OnClickListenerImplementor. n_onClick(Native Method) at mono.android.view.View_OnClickListenerImplementor. onClick(View_OnClickListenerImplementor.java:29) at android.view.View.performClick(View.java:2485) at android.view.View$PerformClick.run(View.java:9080) at android.os.Handler.handleCallback(Handler.java:587 ) at android.os.Handler.dispatchMessage(Handler.java:92 ) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.jav a:3687) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:867) at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:625) at dalvik.system.NativeStart.main(Native Method)
اینم کد برنامه :

using System;
using System.IO;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Bluetooth;

namespace AndroidBluetooth
{
[Activity (Label = "AndroidBluetooth", MainLauncher = true)]
public class Activity1 : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
Button connectButton = FindViewById<Button>(Resource.Id.ConnectButton);
connectButton.Click += ConnectButton_Click;
}

void ConnectButton_Click (object sender, EventArgs e)
{
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter;
TextView topStatusTextView = FindViewById<TextView> (Resource.Id.TopStatusTextView);
if (!bluetoothAdapter.IsEnabled) {
Intent enableBluetooth = new Intent (BluetoothAdapter.ActionRequestEnable);
StartActivityForResult (enableBluetooth, 1);
}
Java.Util.UUID serialUUID = Java.Util.UUID.FromString ("00001101-0000-1000-8000-00805F9B34FB");
BluetoothDevice bluetoothDevice = bluetoothAdapter.GetRemoteDevice ("00:26:5E:DE:7D:FC");
BluetoothSocket bluetoothSocket = null;
Stream outStream = null;
bluetoothSocket = bluetoothDevice.CreateRfcommSocketToServiceRecord( serialUUID);
bluetoothSocket.Connect();
outStream = bluetoothSocket.OutputStream;
}
}
}

goldpower
جمعه 18 مرداد 1392, 08:37 صبح
نمونه برنامه : مشکلت که حل شد اینجا هم کد ها تو قرار بده تا بقیه هم استفاده کنند.

mohammadali1375
جمعه 18 مرداد 1392, 10:02 صبح
ممنون. دارم سعی میکنم حلش کنم. راستش الان اصللا نمیدونم همینجوری باید با بلوتوث لپ تاپ pair شد و دیتا فرستاد یا نه ‍!

mohammadali1375
جمعه 18 مرداد 1392, 10:55 صبح
میگم میشه بگید این برنامه رو از کجا اوردید ؟ اگه یه سورس چت با pc باشه عالی میشه. اینجور که من فهمیدم بادی از spp ( serial port profile ( استفاده کنم، چیزی که دقیقا دنبالم

goldpower
شنبه 19 مرداد 1392, 15:55 عصر
شما حداقل مراحل زیرو باید انجام بدهید :
1. نوشتن برنامه اندروید
2.نوشتن برنامه PC ( با استفاده از پورت سریال )
3.شناساندن بلوتوث دستگاه اندروید و PC به هم
4.بهتره این برنامه برای کارایی بهتر بلوتوث کامپیوتر رو نصب کنید.

http://dl2.soft98.ir/soft/IVT.BlueSoleil.10.0.417.0.rar



نمونه کد برنامه برای pc ( دیتایی که دستگاه اندروید روی پورت سریال بوسیله بلوتوث می فرسترو می گیره و نمایش می ده )

روی فرم یه Timer + SerialPort1 + TextBox + label قرار بدهید:


کد ویژوال بیسیک :


Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.IO.Ports

Public Class Form1

Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
SerialPort1.Close()
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SerialPort1.Open()
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If SerialPort1.IsOpen Then
Label1.Text = " COM Port 3 Open "
TextBox1.Text = SerialPort1.ReadExisting()
Else
Label1.Text = " COM Port 3 close "
End If
End Sub

End Class



کد سی شارپ :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

public class Form1
{

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
SerialPort1.Close();
}

private void Form1_Load(object sender, EventArgs e)
{
SerialPort1.Open();
}

private void Timer1_Tick(object sender, EventArgs e)
{
if (SerialPort1.IsOpen)
{
Label1.Text = " COM Port 3 Open ";
TextBox1.Text = SerialPort1.ReadExisting();
}
else
{
Label1.Text = " COM Port 3 close ";
}
}

}

mohammadali1375
یک شنبه 20 مرداد 1392, 15:18 عصر
ایول. دمت گرم. اصلا درایور بلوتوث لپ تاپ نصب نبود برا همین فقط فایل میتونست بفرسته و بگیره. اون نرم افزاره رو که دادید نصب کردم درست شد. دو تا پرت قبلا بود برا بلوتوث 4 و 5 اونا رفت دو تا پرت جدید باز شد و مشکل کانکت هم حل شد. الان راحت کانکت میشه برنامه ای رو که داشتم مینوشتم کامل میکنم کدش رو اینجا قرار میدم :لبخندساده:

mohsen22
پنج شنبه 24 بهمن 1392, 07:19 صبح
سلام ممکنه کدتون رو قرار بدید ؟
مرسی