我有一个项目,其中卡拉OK机器记录用户,然后让用户通过蓝牙与他/她的手机连接到机器并下载他们的录音。经过大量的阅读,示例,文档我尝试使用 32feet (卡拉OK是用 C#.NET 编写的),但我找到发送文件的唯一方法是使用< strong> ObexWebResponse ,有些手机没有这项服务:
http://oi62.tinypic.com/153s8p5.jpg(来自蓝牙OBEX文件传输的图片)
这会导致程序抛出异常(这段代码是我从答案中获取的一个示例,只是测试发送视频文件,然后再将对话框移开,并在用户自行配对后使其更自动化到卡拉OK机):
private void sendfile()
{
SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog();
dialog.ShowAuthenticated = true;
dialog.ShowRemembered = true;
dialog.ShowUnknown = true;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Select File";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string m_pin = "";
Console.WriteLine(BluetoothSecurity.PairRequest(dialog.SelectedDevice.DeviceAddress, m_pin));
if (ofd.ShowDialog() == DialogResult.OK)
{
var uri = new Uri("obex://" + dialog.SelectedDevice.ToString() + "/" + ofd.FileName);
var request = new ObexWebRequest(uri);
request.ReadFile(ofd.FileName);
var response = (ObexWebResponse)request.GetResponse(); // << THIS THROWS AN EXCEPTION WITH THE ADDITIONAL INFORMATION: CONNECT FAILED.
response.Close();
}
else
{
MessageBox.Show("File Not Selected");
}
}
else
{
MessageBox.Show("Device Not Selected");
}
}
Debbuger也显示:http://oi62.tinypic.com/e6rpkg.jpg
OBEX有替代品吗?与每部手机兼容的东西,或者与不兼容的设备混合使用OBEX的方法。
我使用原生Windows应用程序(控制面板&gt;设备和打印机&gt;蓝牙设备&gt;'设备名称'&gt;发送文件)来发送文件,所以这不是真的与硬件相关的问题,即使在其他语言或库中有任何解决方案,请指导我如何实现这一目标。
提前感谢您的阅读时间!
答案 0 :(得分:0)
还没有采用这种方式来解决我目前的PC /蓝牙通信问题(目前使用32feet和C#)但是我确实遇到了一个用于C ++的本地Microsoft库:https://msdn.microsoft.com/en-us/library/windows/desktop/aa362932%28v=vs.85%29.aspx
正如我所说的那样,我自己没有尝试过,所以不能保证,但它可能值得一看?