Windows 시스템 에서 C\#블 루 투 스 통신 프로그램 을 만 드 는 간단 한 인 스 턴 스 를 사용 합 니 다.
블 루 투 스 를 조작 하려 면 라 이브 러 리 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 에 블 루 투 스 어댑터 가 삽입 되면 블 루 투 스 관련 정보 가 표 시 됩 니 다.그리고 우 리 는 블 루 투 스 를 이용 하여 서 류 를 수발 해 야 한다.
전 제 는 블 루 투 스 장치(예 를 들 어 핸드폰)가 이미 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();
}
}
}
프로그램 인터페이스:SelectBluetoothDeviceDialog 는 InThe Hand.Net.Personal 이 제공 하 는 창 으로 블 루 투 스 장 치 를 선택 하 는 데 사 용 됩 니 다.
휴대 전화 에서 컴퓨터 로 파일 을 보 내 려 면 컴퓨터 에서 감청 ObexListener 를 켜 야 파일 을 받 을 수 있다.
핵심 코드:
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.PersonalInThe 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 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.