2008-09-28 9 views
31

저는 지역 부근의 모바일 장치를 찾아 식별하는 블루투스 스캐너를 작성하는 중입니다. C#을 사용하여이 작업을 수행 할 수 있습니까? 아니면 C/C++ API로 드롭 다운해야합니까? 내 응용 프로그램은 Windows XP 및 Vista를 대상으로합니다. 포인터는 높이 평가됩니다.Windows/.Net의 Bluetooth API?

감사합니다.

답변

25

PC에서 블루투스에 대한 한 가지 문제점은 사용중인 여러 BT 스택이 있고 주어진 시스템에서 어느 것이 사용 가능한지 알 수 없다는 것입니다. 가장 흔한 것은 Widcomm (현재 Broadcom)과 Microsoft (XP에 등장 함, 서비스 팩 중 하나 일 수 있음)입니다. 그러나 일부 BT 하드웨어 공급 업체는 BlueSoleil을 패키지로 제공하고 일부는 Toshiba를 사용합니다. 대부분의 동글은 MS 스택에서 작동하므로 내가 본 .NET 라이브러리는이를 사용하는 경향이 있습니다.

각 스택은 주변 장치를 찾아보고 서비스를 검색하는 완전히 다른 방식으로 검색 부분을 수행합니다.

만약 내가 하나의 접근법을 선택했다면 아마도 C++에서 발견을하고 .NET 용 인터페이스를 추가 할 것입니다.

32feet.net은 잘 시도했지만 Widcomm 스택을 지원하지 않았습니다.

+1

또한 Windows 10에서 32Feet을 시도하고 "32feet.NET이이 장치에서 Bluetooth 스택을 지원하지 않습니다. " 문제를보고했지만 2 년 후에 프로젝트가 업데이트되지 않은 것 같습니다. – LawMan

+0

@LawMan Windows 10과 비슷한 문제가있었습니다. 원인은 Bluetooth가 꺼져 있다는 것입니다. –

+0

@Juozas Kontvainis 그게 내가 제일 먼저 확인한 것. 비록 내 코드가 쌍을 이루지 않는다면 (또는 적어도 lol로 사용되는) 장치를 페어링 할지라도 Windows가 장치와 성공적으로 페어링되어 코드를 실행했는지 확인했습니다. 또한 32Feet은 아직 내 문제에 응답하지 않았습니다. 관심있는 사람이 있다면 여기에 문제 링크가 있습니다. https : //32feet.codeplex.com/workitem/43236 – LawMan

3

참고로 찾을 수있는 유일한 관리 형 BlueTooth API는 here입니다.

14

피터 발의 32feet.net

http://inthehand.com/content/32feet.aspx

도있다는 1.5 버전이었고, 그것이 잘 작동 할 때 나는이 다시 주위 연주했습니다.

+0

저는 Windows 모바일 응용 프로그램에서 32feet.net 라이브러리를 사용하고 있으며 실제로 잘 작동합니다. – tjjjohnson

7

Mike Petrichenko에는 멋진 BT 프레임 워크가 있습니다. BlueSoleil, Widcomm, Toshiba 및 Microsoft에서 작동합니다.

이제는 무선 통신 라이브러리라고하며 Bluetooth 802.11 및 적외선과 함께 작동합니다. Mike는 회사 이름을 Soft Service Company로 지정하고 소스 코드 유무에 관계없이 비영리 및 상업 라이센스를 $ 100 ~ $ 2050에 판매합니다.

+1

프로젝트에 32feet을 사용하고 SPP 장치에 연결하는 데 많은 임의 오류가 발생했습니다. 나는 WCL 데모를 시도했고 훨씬 더 잘 작동하는 것처럼 보였다. – JoelHess

-9

블루투스 장치를 알고 PC에서 블루투스 장치로 파일을 보내는 가장 좋은 방법은 해당 코드를 사용하는 것입니다.

public void ExecuteCommandSync(object command) 
    { 
     try 
     { 
      // create the ProcessStartInfo using "cmd" as the program to be run, 
      // and "/c " as the parameters. 
      // Incidentally, /c tells cmd that we want it to execute the command that follows, 
      // and then exit. 
      System.Diagnostics.ProcessStartInfo procStartInfo = 
       new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command); 

      // The following commands are needed to redirect the standard output. 
      // This means that it will be redirected to the Process.StandardOutput StreamReader. 
      procStartInfo.RedirectStandardOutput = true; 
      procStartInfo.UseShellExecute = false; 
      // Do not create the black window. 
      procStartInfo.CreateNoWindow = true; 

      // Now we create a process, assign its ProcessStartInfo and start it 
      System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
      proc.StartInfo = procStartInfo; 
      proc.Start(); 

      // Get the output into a string 
      string result = proc.StandardOutput.ReadToEnd(); 
      // Display the command output. 
      Console.WriteLine(result); 
     } 
     catch (Exception objException) 
     { 
      // Log the exception 
      MessageBox.Show(objException.Message); 
     } 
    } 

당신은

      string command = "fsquirt"; 
          ExecuteCommandSync(command); 

그래서, BluetoothFileTransferWizard 표시로이 메소드를 호출 할 수 있으며, 해당 장치를 보내기 위해 사용 가능한 장치를 선택하고 파일을 보낼 수 있습니다. 그런 식으로 사용하고 싶지 않으면 32feet.net.uk을 시도하십시오. 그것은 C# 및 VB.NET의 블루투스 개발에 적합했습니다.