十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容主要讲解“C# 在PC上的通过蓝牙(Bluetooth)发送数据到手机的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C# 在PC上的通过蓝牙(Bluetooth)发送数据到手机的方法”吧!
目前创新互联公司已为上千的企业提供了网站建设、域名、虚拟主机、网站托管、服务器托管、企业网站设计、历下网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
在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、打开数据流
#region OBEXOpenStream public bool OBEXOpenStream(string BTMAC) { // serial port UUID Guid spguid = OpenNETCF.Net.Bluetooth.BluetoothService.ObexObjectPush; OpenNETCF.Net.BluetoothAddress btaddress = OpenNETCF.Net.BluetoothAddress.Parse(BTMAC); client = new OpenNETCF.Net.Sockets.BluetoothClient(); // define endpoint OpenNETCF.Net.BluetoothEndPoint endpoint = new OpenNETCF.Net.BluetoothEndPoint(btaddress, spguid); try { //open socket client.Connect(endpoint); } catch { //unable to connect (server not listening on spguid) return false; } //connect socket stream = client.GetStream(); return true; } #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; 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; NetworkStream stream; OpenNETCF.Net.Sockets.BluetoothClient client; protected void Page_Load(object sender, EventArgs e) { } #region ShowErrMsg private void ShowErrMsg(string err) { string str; str = "
到此,相信大家对“C# 在PC上的通过蓝牙(Bluetooth)发送数据到手机的方法”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!