读书人

求好手帮忙看下C#实现电脑蓝牙接收手

发布时间: 2013-05-02 09:39:29 作者: rapoo

求高手帮忙看下,C#实现电脑蓝牙接收手机信息并处理
在网上找了些用inthehand.dll写的些程序,自己改了些

namespace serve
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public bool OpenPort()
{
InTheHand.Net.Bluetooth.BluetoothRadio.PrimaryRadio.Mode = InTheHand.Net.Bluetooth.RadioMode.Connectable;
InTheHand.Net.Sockets.BluetoothClient cli = new InTheHand.Net.Sockets.BluetoothClient();
InTheHand.Net.Sockets.BluetoothDeviceInfo[] devices = cli.DiscoverDevices();
foreach (InTheHand.Net.Sockets.BluetoothDeviceInfo device in devices) //设备搜寻
{
device.Update();
device.Refresh();
MessageBox.Show("设备已找到");
break;
}
BluetoothDeviceInfo bd = new BluetoothDeviceInfo(devices[0].DeviceAddress);
bluetoothClient = new BluetoothClient();
Guid mGUID = Guid.Parse("fa87c0d0-afac-11de-8a39-0800200c9a66");
bluetoothClient.Connect(devices[0].DeviceAddress, mGUID);//客户端对地址实现连接,这是一个阻塞线程,需要服务器端的回应
Thread ReceiveThread = new Thread(ReceiveData);


ReceiveThread.Start();
return true;
}
private void ReceiveData()
{
try
{
Guid mGUID = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
bluetoothListener = new BluetoothListener(mGUID);
bluetoothListener.Start();
bluetoothClient = bluetoothListener.AcceptBluetoothClient();
isConnected = true;
}
catch (Exception ex)
{
isConnected = false;
MessageBox.Show(ex.ToString());
}
while (isConnected)
{
string receive = string.Empty;
if (bluetoothClient == null)
{
break;
}
try
{
Stream peerStream = bluetoothClient.GetStream();
byte[] buffer = new byte[6];
peerStream.Read(buffer, 0, 6);
receive = Encoding.UTF8.GetString(buffer).ToString();
textBox1.Text = receive;
}


catch (System.Exception)
{
}
Thread.Sleep(100);
}
}
BluetoothClient bluetoothClient;
BluetoothListener bluetoothListener;
Thread listenThread;
bool isConnected;
[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
[DllImport("user32.dll", EntryPoint = "mouse_event")]
private static extern void mouse_event(long dwFlags, long dx, long dy, long dwData,long dwExtraInfo);
private void button1_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(@"C:\Users\lenovo\Desktop\跑跑卡丁车.swf");
OpenPort();

if(int.Parse(textBox1.Text)==3)
{

keybd_event(0x25, 0, 0, 0);
Thread.Sleep(100);
keybd_event(0x25, 0, 2, 0);
}
if(int.Parse(textBox1.Text)==1)
{

keybd_event(0x26, 0, 0, 0);
Thread.Sleep(100);
keybd_event(0x26, 0, 2, 0);
}
if(int.Parse(textBox1.Text)==4)
{

keybd_event(0x27, 0, 0, 0);


Thread.Sleep(100);
keybd_event(0x27, 0, 2, 0);
}
if(int.Parse(textBox1.Text)==2)
{

keybd_event(0x28, 0, 0, 0);
Thread.Sleep(100);
keybd_event(0x28, 0, 2, 0);
}

}


}
}


运行到 bluetoothClient.Connect(devices[0].DeviceAddress, mGUID); 就不行了,求高手帮忙解释下为什么求好手帮忙看下,C#实现电脑蓝牙接收手机信息并处理
[解决办法]
把PC端当成Server来用
还有private Guid service = new Guid("{7A51FDC2-FDDF-4c9b-AFFC-98BCD91BF93B}");
要与手机的蓝牙的Guid一样才行。由手机连接电脑
查一下是不是两边的事Guid不一至。。

读书人网 >C#

热点推荐