gpt4 book ai didi

c# - 蓝牙拨号与 32feet.net 和 c#

转载 作者:太空狗 更新时间:2023-10-29 20:31:54 26 4
gpt4 key购买 nike

我正在尝试为某人提供一个“点击拨号”解决方案到蓝牙设备,例如手机。我一直在尝试使用 32feet.net 蓝牙 API 这样做。

我还没有真正用蓝牙做过任何事情(自从通过蓝牙串行端口发出 at 命令以来),但我已经将有问题的设备配对,它支持与 pc 的免提服务。我有以下代码尝试连接并发送拨号命令。

String deviceAddr = "11:11:11:11:11:11";
BluetoothAddress addr = BluetoothAddress.Parse(deviceAddr);
BluetoothEndPoint rep = new BluetoothEndPoint(addr, BluetoothService.Handsfree);
BluetoothClient cli = new BluetoothClient();
cli.Connect(rep);
Stream peerStream = cli.GetStream();

String dialCmd = "ATD 0000000000\r\n";
Byte[] dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd);
peerStream.Write(dcB, 0, dcB.Length);

// Begin Edit ------------------------------------------------------------
Byte[] sResponse = new Byte[100];
peerStream.Read(sResponse, 0, 99);
TextBox1.Text = System.Text.Encoding.ASCII.GetString(sResponse);
// End Edit --------------------------------------------------------------

peerStream.Close();
cli.Close();
MessageBox.Show("Done");

由于好像是跑完这几行代码,所以在相关的地方抓紧时间连接或者设备地址错误连接不上就崩溃了。显然 AT 命令不是发送它的正确方式。

任何人都可以告诉我我可能需要通过免提配置文件发送到蓝牙设备以使其拨号吗?

开始编辑----------------------------------------

我决定从流中读取并查看在发送 AT 命令后是否有任何类型的响应。由于我只是在测试是否可以让它工作,所以我只是将响应转储到文本框中。

我从流中读取的响应是:

ERROR

似乎没有错误代码或任何东西。

结束编辑--------------------------------------------

编辑-------------------------------------------- ----

发送指令:AT+CMER\r

结果:好的

然后

发送命令:AT+CIND=?\r

结果:+CIND: ("service",(0-1)),("call",(0-1)),("callsetup",(0-3)),("batchg",(0-5)) ,("信号",(0-5)),("漫游",(0-1)),("通话",(0-2))

然后

发送命令:ATD 0000000000\r

结果:好的D: ("service",(0-1)),("call",(0-1)),("callsetup",(0-3)),("batchg",(0-5)), ("signal",(0-5)),("roam",(0-1)),("callheld",(0-2))

它仍然没有实际拨号 :(

结束编辑-------------------------------------------- -

解决方法--------------------------------------------

以下代码现在可以通过我的 iPhone 拨号。目前真的很艰难,因为我刚刚测试过是否可以让它工作。对于任何想做类似事情的人来说,这足以入门。

String deviceAddr = "00:00:00:00:00:00"; 
BluetoothAddress addr = BluetoothAddress.Parse(deviceAddr);
BluetoothEndPoint rep = new BluetoothEndPoint(addr, BluetoothService.Handsfree);

BluetoothClient cli = new BluetoothClient();
cli.Connect(rep);
Stream peerStream = cli.GetStream();

String dialCmd1 = "AT+CMER\r";
String dialCmd2 = "AT+CIND=?\r";
String dialCmd3 = "AT+BRSF=\r";
String dialCmd4 = "ATD 0000000000;\r";

Byte[] dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd1);
peerStream.Write(dcB, 0, dcB.Length);

Byte[] sRes = new Byte[200];
peerStream.Read(sRes, 0, 199);
textBox1.Text = textBox1.Text + "\n\r----------\n\r" + System.Text.Encoding.ASCII.GetString(sRes);

dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd2);
peerStream.Write(dcB, 0, dcB.Length);

peerStream.Read(sRes, 0, 199);
textBox1.Text = textBox1.Text + "\n\r----------\n\r" + System.Text.Encoding.ASCII.GetString(sRes);

dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd3);
peerStream.Write(dcB, 0, dcB.Length);

peerStream.Read(sRes, 0, 199);
textBox1.Text = textBox1.Text + "\n\r----------\n\r" + System.Text.Encoding.ASCII.GetString(sRes);

dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd4);
peerStream.Write(dcB, 0, dcB.Length);

peerStream.Read(sRes, 0, 199);
textBox1.Text = textBox1.Text + "\n\r----------\n\r" + System.Text.Encoding.ASCII.GetString(sRes);

peerStream.Close();
cli.Close();

最佳答案

尝试找出对 AT\r(或)ATH\r 的响应是什么。如果响应是“OK\r\n”,请尝试使用 ATD 和号码后没有空格的拨号命令。

关于c# - 蓝牙拨号与 32feet.net 和 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com