建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

網賭新浦金可靠嗎:Windows Mobile 與 PC之間的通過藍牙(Bluetooth) 傳輸文件的開發BRWindows Mobile客戶端的實現BRPC服務端的實現BRPC客戶端的實現

?

背景

之前也寫過一些Windows Mobile和Wince下Bluetooth開拓的文章如下。

.NET Compact Framework下的Bluetooth開拓 之 Windows Embedded Source Tools for Bluetooth

.NET Compact Framework下的Bluetooth開拓 之 32feet.NET

.NET Compact Framework下的Bluetooth開拓 之 Bluetooth Virtual Serial Port (可以用于把Bluetooth的GPS receiver變成串口)

.NET Compact Framework下的Bluetooth設備的配對

30 Days of .NET [Windows Mobile Applications] - Day 02: Bluetooth Manager(藍牙治理器) (簡單的Bluetooth利用)

.NET Compact Framework下的Bluetooth廣播法度榜樣的開拓

時代有兩個同硯問我若何實現藍牙的文件傳輸,本日收拾出藍牙文件傳輸的代碼實現,并把他記錄下來。

簡介

本文講述Windows Mobile和PC之間藍牙文件傳輸的實現。經由過程應用32feet.net庫對Obex的封裝實現了Push文件的法度榜樣。Obex Push 的PC法度榜樣可以給所有支持Obex的設備傳輸文件,包括非Windows Mobile的設備。

OBEX

藍牙文件傳輸可以借助OBEX實現。OBEX(The Object Exchange Protocol,工具互換協議)被廣泛用于小我無線收集中設備的文件傳輸,基礎上所有的移動設備都支持該協議。實現了OBEX,不僅僅可以實現 Window Mobile和PC的文件傳輸,可以實現所有支持OBEX協議的設備的文件傳輸。關于OBEX可以參考 Object Exchange Protocol.

Windows Mobile 推文件到PC

本節講述Windows Mobile推文件到PC的實現,著實PC推文件到Windows Mobile的實現差異性不大年夜。

Windows Mobile客戶真個實現

見源代碼ObexPushDevice項目。

private void menuItem1_Click(object sender, EventArgs e)

{

// use the new select bluetooth device dialog

SelectBluetoothDeviceDialog sbdd = new SelectBluetoothDeviceDialog();

sbdd.ShowAuthenticated = true;

sbdd.ShowRemembered = true;

sbdd.ShowUnknown = true;

if (sbdd.ShowDialog() == DialogResult.OK)

{

OpenFileDialog ofdFileToBeam = new OpenFileDialog();

if (ofdFileToBeam.ShowDialog() == DialogResult.OK)

{

Cursor.Current = Cursors.WaitCursor;

System.Uri uri = new Uri("obex://" + sbdd.SelectedDevice.DeviceAddress.ToString() + "/" + System.IO.Path.GetFileName(ofdFileToBeam.FileName));

ObexWebResponse response = null;

try

{

ObexWebRequest request = new ObexWebRequest(uri);

request.ReadFile(ofdFileToBeam.FileName);

response = request.GetResponse() as ObexWebResponse;

MessageBox.Show(response.StatusCode.ToString());

}

catch

{

MessageBox.Show("Fail to beam the file " + uri);

}

finally

{

if (response != null)

{

response.Close();

}

}

Cursor.Current = Cursors.Default;

}

}

}

SelectBluetoothDeviceDialog 是 32feet.net里面的一個藍牙發明類,自動發明周邊的藍牙設備,然后經由過程對話框的形式出現。如下圖:

選摘要推文件的目標PC后,經由過程OpenFileDialog 類選摘要推動文件,如下圖:

經由過程ObexWebRequest 來推文件到目標機械。ObexWebRequest 的實現模式和HttpWebRequest類似,都是發送哀求,等等回應,回應封裝在ObexWebResponse 類里面。假如目標機械的Obex辦事沒有打開,會發生下面的差錯。關于HttpWebRequest的文件可以參考 .NET Compact Framework下HttpWebRequest開拓。

PC辦事真個實現

見源代碼ObexListenerPC項目。

初始化

InTheHand.Net.Bluetooth.BluetoothRadio.PrimaryRadio.Mode = InTheHand.Net.Bluetooth.RadioMode.Discoverable;

listener = new ObexListener(ObexTransport.Bluetooth);

因為藍牙通信支持一個設備的通信,以是找出主要(Primary)設備,把他綁定到ObexListener里。

啟動辦事

listener.Start();

System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(DealWithRequest));

t.Start();

啟動線程來處置懲罰哀求。

處置懲罰哀求

public void DealWithRequest()

{

while (listener.IsListening)

{

try

{

ObexListenerContext olc = listener.GetContext();

ObexListenerRequest olr = olc.Request;

string filename = Uri.UnescapeDataString(olr.RawUrl.TrimStart(new char[] { '/' }));

olr.WriteFile(Environment.SpecialFolder.MyDocuments + DateTime.Now.ToString("yyMMddHHmmss") + " " + filename);

BeginInvoke(new MethodInvoker(delegate()

{

this網賭新浦金可靠嗎.listBoxDetail.Items.Add("Received " + filename);

}));

}

catch(Exception e)

{

BeginInvoke(new MethodInvoker(delegate()

{

this.listBoxDetail.Items.Add(e.Message);

}));

continue;

}

}

}

DealWithRequest()函數處置懲罰來自客戶真個ObexListenerRequest 哀求。把接管的文件寄放到Environment.SpecialFolder.MyDocuments文件夾里面。如下圖收到"abc shops.bmp”文件。

竣事辦事

listener.Stop();

法度榜樣關閉時必要竣事辦事。

PC 推文件到Windows Mobile

著實PC推文件到Windows Mobile和Windows Mobile推文件到PC的實現是一網賭新浦金可靠嗎樣的,應用32feet.net可以在不合Winodws Mobile之間,或者不合PC之間相互推文件,根據需求不合,可以使用源碼中的不合項目。

PC客戶真個實現

見源代碼ObexPushPC項目。

private void buttonBeam_Click(object sender, EventArg網賭新浦金可靠嗎s e)

{

// use the new select bluetooth device dialog

SelectBluetoothDeviceDialog sbdd = new SelectBluetoothDeviceDialog();

sbdd.ShowAuthenticated = true;

sbdd.ShowRemembered = true;

sbdd.ShowUnknown = true;

if (sbdd.ShowDialog() == DialogResult.OK)

{

OpenFileDialog ofdFileToBeam = new OpenFileDialog();

if (ofdFileToBeam.ShowDialog() == DialogResult.OK)

{

Cursor.Current = Cursors.WaitCursor;

System.Uri uri = new Uri("obex://" + sbdd.SelectedDevice.DeviceAddress.ToString() + "/" + System.IO.Path.GetFileName(ofdFileToBeam.FileName));

ObexWebResponse response = null;

try

{

ObexWebRequest request = new ObexWebRequest(uri);

request.ReadFile(ofdFileToBeam.FileName);

response = request.GetResponse() as網賭新浦金可靠嗎 ObexWebResponse;

MessageBox.Show(response.StatusCode.ToString());

}

catch

{

MessageBox.Show("Fail to beam the file " + uri);

}

finally

{

if (response != null)

{

response.Close();

}

}

Cursor.Current = Cursors.Default;

}

}

}

可以說和上面實現的“Windows Mobile客戶真個實現”沒有差別, 32feet.net樊籬的差異性。

選擇目標設備。

選擇傳輸文件。

Windows Mobile默認是打開了Obex的辦事,以是,在Windows Mobile可以不用支配任何法度榜樣就可以接管文件了。異常方便,假如某些設備不支持Obex的辦事,必要支配法度榜樣,可以應用源代碼中的ObexListenerDevice項目。

我同時應用這個Obex Push法度榜樣給非Windows Mobile系統成功發送文件。這是一個通用的Obex文件傳輸法度榜樣。

情況: VS 2008 + XP + Windows Mobile 6.5 + 32feet.net

源代碼:http://files.cnblogs.com/procoder/BluetoothObex.rar

轉自:http://www.cnblogs.com/procoder/archive/2009/0網賭新浦金可靠嗎9/22/Windows_Mobile_Bluetooth_Transfer_File.html

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
东方6+1 浙江十一选五根据什么来出号码的 上海时时彩预测软件 贝捷娱乐注册、 安徽快三最大遗漏 幸运28app官网下载ios 山东手机彩票投注 手机彩票网站大全 足彩胜负彩预测新浪 鼎盛彩票网址