Windows 시스템 에서 C\#블 루 투 스 통신 프로그램 을 만 드 는 간단 한 인 스 턴 스 를 사용 합 니 다.

9594 단어 C#블 루 투 스
현재 많은 컴퓨터 가 블 루 투 스 를 지원 하고 많은 노트북 카드 도 블 루 투 스 기능 을 통합 하 며 USB 블 루 투 스 로 편리 하 게 휴대 전화 등 블 루 투 스 장 비 를 연결 해 통신 할 수 있다.
블 루 투 스 를 조작 하려 면 라 이브 러 리 InTheHand.Net.Personal 을 사용 해 야 합 니 다.
우선 항목 에서 이 라 이브 러 리 를 참조 합 니 다.

static void Main(string[] args) 
{ 
  BluetoothRadio bluetoothRadio = BluetoothRadio.PrimaryRadio; 
  if (bluetoothRadio == null) 
  { 
  Console.WriteLine("          !"); 
  } 
  else 
  { 
  Console.WriteLine("ClassOfDevice: " + bluetoothRadio.ClassOfDevice); 
  Console.WriteLine("HardwareStatus: " + bluetoothRadio.HardwareStatus); 
  Console.WriteLine("HciRevision: " + bluetoothRadio.HciRevision); 
  Console.WriteLine("HciVersion: " + bluetoothRadio.HciVersion); 
  Console.WriteLine("LmpSubversion: " + bluetoothRadio.LmpSubversion); 
  Console.WriteLine("LmpVersion: " + bluetoothRadio.LmpVersion); 
  Console.WriteLine("LocalAddress: " + bluetoothRadio.LocalAddress); 
  Console.WriteLine("Manufacturer: " + bluetoothRadio.Manufacturer); 
  Console.WriteLine("Mode: " + bluetoothRadio.Mode); 
  Console.WriteLine("Name: " + bluetoothRadio.Name); 
  Console.WriteLine("Remote:" + bluetoothRadio.Remote); 
  Console.WriteLine("SoftwareManufacturer: " + bluetoothRadio.SoftwareManufacturer); 
  Console.WriteLine("StackFactory: " + bluetoothRadio.StackFactory); 
  } 
  Console.ReadKey(); 
} 
 PC 에 블 루 투 스 어댑터 가 삽입 되면 블 루 투 스 관련 정보 가 표 시 됩 니 다.
201648155454003.jpg (544×265)
 그리고 우 리 는 블 루 투 스 를 이용 하여 서 류 를 수발 해 야 한다.
전 제 는 블 루 투 스 장치(예 를 들 어 핸드폰)가 이미 PC 와 짝 을 이 루 었 다 는 것 이다.

public partial class Form1 : Form 
{ 
  BluetoothRadio radio = null;//      
  string sendFileName = null;//      
  BluetoothAddress sendAddress = null;//       
  ObexListener listener = null;//    
  string recDir = null;//         
  Thread listenThread, sendThread;//  /     
 
  public Form1() 
  { 
    InitializeComponent(); 
    radio = BluetoothRadio.PrimaryRadio;//    PC       
    CheckForIllegalCrossThreadCalls = false;//         
    if (radio == null)//            
    { 
      MessageBox.Show("         !", "  ", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 
    recDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
    labelRecDir.Text = recDir; 
  } 
 
  private void buttonSelectBluetooth_Click(object sender, EventArgs e)//         
  { 
    SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog(); 
    dialog.ShowRemembered = true;//            
    dialog.ShowAuthenticated = true;//           
    dialog.ShowUnknown = true;//         
    if (dialog.ShowDialog() == DialogResult.OK) 
    { 
      sendAddress = dialog.SelectedDevice.DeviceAddress;//            
      labelAddress.Text = "  :" + sendAddress.ToString() + "     :" + dialog.SelectedDevice.DeviceName; 
    } 
  } 
 
  private void buttonSelectFile_Click(object sender, EventArgs e)//           
  { 
    OpenFileDialog dialog = new OpenFileDialog(); 
    if (dialog.ShowDialog() == DialogResult.OK) 
    { 
      sendFileName = dialog.FileName;//      
      labelPath.Text = Path.GetFileName(sendFileName); 
    } 
  } 
 
  private void buttonSend_Click(object sender, EventArgs e)//     
  { 
    sendThread = new Thread(sendFile);//         
    sendThread.Start(); 
  } 
 
  private void sendFile()//       
  { 
    ObexWebRequest request = new ObexWebRequest(sendAddress, Path.GetFileName(sendFileName));//       
    WebResponse response = null; 
    try 
    { 
      buttonSend.Enabled = false; 
      request.ReadFile(sendFileName);//     
      labelInfo.Text = "    !"; 
      response = request.GetResponse();//     
      labelInfo.Text = "    !"; 
    } 
    catch (System.Exception ex) 
    { 
      MessageBox.Show("    !", "  ", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
      labelInfo.Text = "    !"; 
    } 
    finally 
    { 
      if (response != null) 
      { 
        response.Close(); 
        buttonSend.Enabled = true; 
      } 
    } 
  } 
 
  private void buttonselectRecDir_Click(object sender, EventArgs e)//       
  { 
    FolderBrowserDialog dialog = new FolderBrowserDialog(); 
    dialog.Description = "              "; 
    if (dialog.ShowDialog() == DialogResult.OK) 
    { 
      recDir = dialog.SelectedPath; 
      labelRecDir.Text = recDir; 
    } 
  } 
 
  private void buttonListen_Click(object sender, EventArgs e)//  /     
  { 
    if (listener == null || !listener.IsListening) 
    { 
      radio.Mode = RadioMode.Discoverable;//           
      listener = new ObexListener(ObexTransport.Bluetooth);//     
      listener.Start(); 
      if (listener.IsListening) 
      { 
        buttonListen.Text = "  "; 
        labelRecInfo.Text = "    "; 
        listenThread = new Thread(receiveFile);//       
        listenThread.Start(); 
      } 
    } 
    else 
    {  
      listener.Stop(); 
      buttonListen.Text = "  "; 
      labelRecInfo.Text = "    "; 
    } 
  } 
 
  private void receiveFile()//      
  { 
    ObexListenerContext context = null; 
    ObexListenerRequest request = null; 
    while (listener.IsListening) 
    { 
      context = listener.GetContext();//        
      if (context == null) 
      { 
        break; 
      } 
      request = context.Request;//     
      string uriString = Uri.UnescapeDataString(request.RawUrl);// uri       
      string recFileName = recDir + uriString; 
      request.WriteFile(recFileName);//     
      labelRecInfo.Text = "    " + uriString.TrimStart(new char[] { '/' }); 
    } 
  } 
 
  private void Form1_FormClosed(object sender, FormClosedEventArgs e) 
  { 
    if (sendThread != null) 
    { 
      sendThread.Abort(); 
    } 
    if (listenThread != null) 
    { 
      listenThread.Abort(); 
    } 
    if (listener != null && listener.IsListening) 
    { 
      listener.Stop(); 
    } 
  } 
} 
프로그램 인터페이스:
201648155559869.jpg (427×270)
SelectBluetoothDeviceDialog 는 InThe Hand.Net.Personal 이 제공 하 는 창 으로 블 루 투 스 장 치 를 선택 하 는 데 사 용 됩 니 다.
201648155651467.jpg (650×495)
휴대 전화 에서 컴퓨터 로 파일 을 보 내 려 면 컴퓨터 에서 감청 ObexListener 를 켜 야 파일 을 받 을 수 있다.
201648155708976.jpg (427×270)
핵심 코드:

BluetoothRadio radio = null;//      
string sendFileName = null;//      
BluetoothAddress sendAddress = null;//       
ObexListener listener = null;//    
string recDir = null;//         
Thread listenThread, sendThread;//  /     
 
radio = BluetoothRadio.PrimaryRadio;//    PC       
 
//            
SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog(); 
dialog.ShowRemembered = true;//            
dialog.ShowAuthenticated = true;//           
dialog.ShowUnknown = true;//         
sendAddress = dialog.SelectedDevice.DeviceAddress;//            
 
//       
ObexWebRequest request = new ObexWebRequest(sendAddress, Path.GetFileName(sendFileName));//       
WebResponse response = null; 
request.ReadFile(sendFileName);//     
response = request.GetResponse();//     
response.Close(); 
 
//     
radio.Mode = RadioMode.Discoverable;//           
listener = new ObexListener(ObexTransport.Bluetooth);//     
listener.Start(); 
listener.Stop(); 
 
ObexListenerContext context = null; 
ObexListenerRequest request = null; 
context = listener.GetContext();//        
request = context.Request;//     
string uriString = Uri.UnescapeDataString(request.RawUrl);// uri       
string recFileName = recDir + uriString; 
request.WriteFile(recFileName);//     
labelRecInfo.Text = "    " + uriString.TrimStart(new char[] { '/' } 
PS:InTheHand.Net.Personal
InThe Hand.Net.Personal.dll 은 32feet.NET 에서 유래 했다.
32feet.NET 은 shared-source 프로젝트 로 CF.net 2.0 및 데스크 톱 버 전.NET framework 를 지원 하고 단거리 영역(personal area networking technology)의 통신 기능 을 제공 하 며 bluetooth,Infrared(IrDA)적외선 등 을 지원 합 니 다.더 많은 정 보 를 알 고 싶 으 면 공식 홈 페이지 를 참고 하 십시오.프로젝트 의 설치 패키지 와 소스 코드 는 마이크로소프트 오픈 소스 프로젝트 사이트 CodePlex 위 에 놓 여 있 습 니 다..NET 개발 자로 서 저희 가 꼭 올 라 가 야 할 사 이 트 는 CodePlex 입 니 다.

좋은 웹페이지 즐겨찾기