概述
在PC端用.NET开发一个蓝牙下载的程序。实现在PC上查找周围的蓝牙设备(主要是手机),并将PC上的文件通过蓝牙传输到手机上。目前我采用的是OpenNETCF.Net.Bluetooth,能够正常发现周围的蓝牙设备,手机也能够正常进行蓝牙连接并接收文件。
代码实现
1、查找周围蓝牙设备
BluetoothClient bc = new BluetoothClient();
BluetoothDeviceInfo[] bdi;
bdi = bc.DiscoverDevices(10);/查找周围最多10个蓝牙设备
if (bdi.Length == 0)
{
this.ShowErrMsg("请确认您的蓝牙已开启!");
return;
}
2、打开数据流
endregion
3、配对连接
private bool OBEXConnect()
{
/send client request
byte[] ConnectPacket = new byte[7];
ConnectPacket[0] = 0x80; / Connect
ConnectPacket[1] = 0x00; / Packetlength Hi Byte
ConnectPacket[2] = 0x07; / Packetlength Lo Byte
ConnectPacket[3] = 0x10; / Obex v1
ConnectPacket[4] = 0x00; / no flags
ConnectPacket[5] = 0x20; / 8k max packet size Hi Byte
ConnectPacket[6] = 0x00; / 8k max packet size Lo Byte
stream.Write(ConnectPacket,0,ConnectPacket.Length);
/listen for server response
byte[] ReceiveBufferA = new byte[3];
stream.Read(ReceiveBufferA,0,3);
if (ReceiveBufferA[0] == 160) / 0xa0
{
/success,decode rest of packet
int plength = (0xff * ReceiveBufferA[1]) + ReceiveBufferA[2]; /length of packet is...
/listen for rest of packet
byte[] ReceiveBufferB = new byte[plength - 3];
stream.Read(ReceiveBufferB,0,plength - 3);
int obver = ReceiveBufferB[0]; /server obex version (16 = v1.0)
int cflags = ReceiveBufferB[1]; /connect flags
int maxpack = (0xff * ReceiveBufferB[2]) + ReceiveBufferB[3]; /max packet size
return true;
}
else
{
return false;
}
}
4、发送文本内容
/send client request,start put
string tName = "BRT优惠卷.txt";
string tType = "";
string tFileContent = "优惠卷内容:" + this.txtContent.Text.Trim();
int result = OBEXRequest("PUT",tName,tType,tFileContent);
if (result == 160)
{
SendSuccess = true;
}
完整代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
1、首先两部手机的蓝牙功能都要打开,一般在设置里会看到蓝牙两个字。2、点击打开滑块,会看到提示允许周围的蓝牙设备搜索,最上面那个是本机的名称。找到需要传输文件的手机蓝牙名称,例如M7,和它互相配对。3、找到文件所在。
using System.Web.UI.HtmlControls;
using System.Net.Sockets;
using OpenNETCF;
using OpenNETCF.Net;
企业回如何正确安装同步带 一、安装同步带时,必须两轮的中心距可以移动,必须先将带轮的中心距缩短,装好同步带后,再使中心距复位。若有涨紧轮时,先把中心距放松,然后装上同步带,再装上涨紧轮。 二、往带轮上装同步带时,切记不要用力过猛,或用。
using OpenNETCF.Net.Bluetooth;
using OpenNETCF.Net.Sockets;
public partial class _Default : System.Web.UI.Page
{
/Stream stream;
使用蓝牙传送文件的具体操作如下:1.首先在桌面找到【设置】,点击该应用进入设置管理页面。2.在【设置】页面上,找到【蓝牙】这个选项,点击进入蓝牙的配置。3.在【蓝牙】页面,将原本处于关闭状态的蓝牙功能开启。4.开启蓝牙。
NetworkStream stream;
OpenNETCF.Net.Sockets.BluetoothClient client;
{
}
endregion
{
if (this.txtContent.Text.Trim() == string.Empty)
{
this.ShowErrMsg("请输入发送内容!");
return;
}
BluetoothClient bc = new BluetoothClient();
BluetoothDeviceInfo[] bdi;
bdi = bc.DiscoverDevices(10);/查找周围最多10个蓝牙设备
if (bdi.Length == 0)
{
this.ShowErrMsg("请确认您的蓝牙已开启!");
return;
}
bool SendSuccess = false;
try
{
foreach (BluetoothDeviceInfo bd in bdi)
{
if (OBEXOpenStream(bd.DeviceID.ToString()))
{
if (OBEXConnect())
{
/send client request,start put
string tName = "BRT优惠卷.txt";
string tType = "";
string tFileContent = "优惠卷内容:" + this.txtContent.Text.Trim();
进入设置--(其他网络与连接)--蓝牙--开启蓝牙,开启后设备会自动搜索附近的设备,点击设备名就可以配对了,配对成功之后(不显示“已连接”,无需再点击设备名进行连接),进入文件管理/相册中找到需要传输的文件进行分享,。
int result = OBEXRequest("PUT",tName,tType,tFileContent);
if (result == 160)
{
SendSuccess = true;
}
}
OBEXCloseStream();
}
else
{
}
}
if (SendSuccess)
{
this.ShowErrMsg("发送成功,谢谢使用!");
}
}
finally
{
OBEXCloseStream();
}
}
endregion
endregion
endregion
endregion
}