正在做一个毕设,本人做的是手机端,通过检测手机的加速度感应器产生的数值确定手机的状态,并且将状态通过蓝牙或者wifi发送出去,然后进行控制电脑上的游戏。首先手机要发送数据,电脑上的蓝牙监听端要接收:
安卓上的代码如下
if(ExternValues.flagscreen == 0)
{
if(values[1]>=9)
{
canvas.drawText(state[0],310, paint.getTextSize()*4+100,paint1);
flag = 1;
onflagchanged(flag);
}
else if(values[1]<=1)
{
canvas.drawText(state[1],310, paint.getTextSize()*4+100,paint1);
flag = 2;
onflagchanged(flag);
}
else if(values[0]>=4)
{
canvas.drawText(state[2],310, paint.getTextSize()*4+100,paint1);
flag = 3;
onflagchanged(flag);
}
else if(values[0]<=-2)
{
canvas.drawText(state[3],310, paint.getTextSize()*4+100,paint1);
flag = 4;
onflagchanged(flag);
}
else if((values[2]>10)||(values[2]<0))
{
canvas.drawText(state[4],310, paint.getTextSize()*4+100,paint1);
flag = 5;
onflagchanged(flag);
}
就是给flag赋值,然后发送flag 发送flag的代码如下
switch(flag)
{
case 0:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
// message = ExternValues.myphoneid + "1";
message = "0";
msgBuffer = message.getBytes();
try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e1) {
// TODO Auto-generated catch block
flag = 0;
}
break;
case 1:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
// message = ExternValues.myphoneid + "1";
message = "1";
msgBuffer = message.getBytes();
try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e1) {
// TODO Auto-generated catch block
flag = 0;
}
break;
case 2:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
//message = ExternValues.myphoneid + "2";
if(setflag == 1)
{
message = "2";
}
else if(setflag == 0)
{
message = "a";
}
msgBuffer = message.getBytes();
try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e) {
flag = 0;
}
break;
case 3:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
// message = ExternValues.myphoneid + "3";
message = "3";
msgBuffer = message.getBytes(); try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e) {
flag = 0;
}
break;
case 4:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
//message = ExternValues.myphoneid + "4";
message = "4";
msgBuffer = message.getBytes(); try {
outStream.write(msgBuffer);
outStream.flush();
flag= 0;
} catch (IOException e) {
flag = 0;
}
break;
case 5:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
//message = ExternValues.myphoneid + "5";
message = "5";
msgBuffer = message.getBytes(); try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e) {
flag = 0;
}
break;
} 代码经测试正常
蓝牙监听端口是用c#写的代码如下
namespace fin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
listenThread = new Thread (blReceiveData);
listenThread.Start();
comboBox1.Items.Add("3D滑雪");
comboBox1.Items.Add("跑跑卡丁车");
comboBox1.Items.Add("3D空间奔跑");
comboBox1.Items.Add("暴力足球");
comboBox1.Items.Add("男孩女孩打乒乓");
comboBox1.Items.Add("史酷比冲浪");
comboBox1.Items.Add("太空版跑跑卡丁车");
comboBox1.Items.Add("网球王子");
}
[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")]
static extern bool SetCursorPos(int X, int Y);
[DllImport("user32.dll")]
static extern void mouse_event(int flags, int dx, int dy, int data, int extraInfo);
private void blReceiveData()
{
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)
{ if (bluetoothClient == null)
{
String ex = "没有接受到信息";
MessageBox.Show(ex.ToString()); break;
}
try
{ Stream peerStream = bluetoothClient.GetStream();
byte[] buffer = new byte[4];
peerStream.Read(buffer, 0, 1);
string receive = Encoding.UTF8.GetString(buffer).ToString();
SetText(receive);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString()); }
Thread.Sleep(100);
}
}
BluetoothClient bluetoothClient;
BluetoothListener bluetoothListener;
Thread listenThread;
bool isConnected;
在有的电脑上可以运行,有的时候突然就不能运行了,有的时候也只能接收到一小段数据。有的时候接收会有延迟。
请问大神,可以给个解释吗??如何调试???在线等!!!跪求~~!!!蓝牙手机连接电脑
安卓上的代码如下
if(ExternValues.flagscreen == 0)
{
if(values[1]>=9)
{
canvas.drawText(state[0],310, paint.getTextSize()*4+100,paint1);
flag = 1;
onflagchanged(flag);
}
else if(values[1]<=1)
{
canvas.drawText(state[1],310, paint.getTextSize()*4+100,paint1);
flag = 2;
onflagchanged(flag);
}
else if(values[0]>=4)
{
canvas.drawText(state[2],310, paint.getTextSize()*4+100,paint1);
flag = 3;
onflagchanged(flag);
}
else if(values[0]<=-2)
{
canvas.drawText(state[3],310, paint.getTextSize()*4+100,paint1);
flag = 4;
onflagchanged(flag);
}
else if((values[2]>10)||(values[2]<0))
{
canvas.drawText(state[4],310, paint.getTextSize()*4+100,paint1);
flag = 5;
onflagchanged(flag);
}
就是给flag赋值,然后发送flag 发送flag的代码如下
switch(flag)
{
case 0:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
// message = ExternValues.myphoneid + "1";
message = "0";
msgBuffer = message.getBytes();
try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e1) {
// TODO Auto-generated catch block
flag = 0;
}
break;
case 1:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
// message = ExternValues.myphoneid + "1";
message = "1";
msgBuffer = message.getBytes();
try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e1) {
// TODO Auto-generated catch block
flag = 0;
}
break;
case 2:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
//message = ExternValues.myphoneid + "2";
if(setflag == 1)
{
message = "2";
}
else if(setflag == 0)
{
message = "a";
}
msgBuffer = message.getBytes();
try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e) {
flag = 0;
}
break;
case 3:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
// message = ExternValues.myphoneid + "3";
message = "3";
msgBuffer = message.getBytes(); try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e) {
flag = 0;
}
break;
case 4:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
//message = ExternValues.myphoneid + "4";
message = "4";
msgBuffer = message.getBytes(); try {
outStream.write(msgBuffer);
outStream.flush();
flag= 0;
} catch (IOException e) {
flag = 0;
}
break;
case 5:
try {
outStream = btSocket.getOutputStream(); } catch (IOException e) {
}
//message = ExternValues.myphoneid + "5";
message = "5";
msgBuffer = message.getBytes(); try {
outStream.write(msgBuffer);
outStream.flush();
flag = 0;
} catch (IOException e) {
flag = 0;
}
break;
} 代码经测试正常
蓝牙监听端口是用c#写的代码如下
namespace fin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
listenThread = new Thread (blReceiveData);
listenThread.Start();
comboBox1.Items.Add("3D滑雪");
comboBox1.Items.Add("跑跑卡丁车");
comboBox1.Items.Add("3D空间奔跑");
comboBox1.Items.Add("暴力足球");
comboBox1.Items.Add("男孩女孩打乒乓");
comboBox1.Items.Add("史酷比冲浪");
comboBox1.Items.Add("太空版跑跑卡丁车");
comboBox1.Items.Add("网球王子");
}
[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")]
static extern bool SetCursorPos(int X, int Y);
[DllImport("user32.dll")]
static extern void mouse_event(int flags, int dx, int dy, int data, int extraInfo);
private void blReceiveData()
{
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)
{ if (bluetoothClient == null)
{
String ex = "没有接受到信息";
MessageBox.Show(ex.ToString()); break;
}
try
{ Stream peerStream = bluetoothClient.GetStream();
byte[] buffer = new byte[4];
peerStream.Read(buffer, 0, 1);
string receive = Encoding.UTF8.GetString(buffer).ToString();
SetText(receive);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString()); }
Thread.Sleep(100);
}
}
BluetoothClient bluetoothClient;
BluetoothListener bluetoothListener;
Thread listenThread;
bool isConnected;
在有的电脑上可以运行,有的时候突然就不能运行了,有的时候也只能接收到一小段数据。有的时候接收会有延迟。
请问大神,可以给个解释吗??如何调试???在线等!!!跪求~~!!!蓝牙手机连接电脑
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货