加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

从Windows使用32feet.net库发送bMessage到消息访问服务器C#

发布时间:2020-12-24 13:44:30 所属栏目:Windows 来源:网络整理
导读:我正在尝试从Win7 PC上的C#代码发送一个bMessage到Samsung Note 2手机.我有32feet蓝牙库,并使用Visual Studio 2013社区版. 以下是我目前拥有的代码: string sendMessage = ""; sendMessage = File.ReadAllText(file_path); BluetoothClient btClient = ne

我正在尝试从Win7 PC上的C#代码发送一个bMessage到Samsung Note 2手机.我有32feet蓝牙库,并使用Visual Studio 2013社区版.

以下是我目前拥有的代码:

string sendMessage = "";
    sendMessage = File.ReadAllText(file_path);

    BluetoothClient btClient = new BluetoothClient();
    btClient.Connect(btEp);
    Stream clientStream = btClient.GetStream();

    using (StreamWriter utfWriter = new StreamWriter(clientStream,Encoding.UTF8))
    {
        utfWriter.Write(sendMessage);
    }

btEp是一个蓝牙端点,传递给发送消息的功能,并在其他地方定义如下:

BluetoothEndPoint BtEp;

这是使用变量构建的:

BtEp = new BluetoothEndPoint(device.DeviceInfo,mapServiceId);

这两个值都是在运行时从设备获取的,并在执行期间获取以下值:

-       mapServiceId    {00001132-0000-1000-8000-00805f9b34fb}  System.Guid
+       BtEp    {BC20A4164A8C:0000113200001000800000805f9b34fb} InTheHand.Net.BluetoothEndPoint

BC20A4164A8C是设备报告的设备地址.

与手机的连接似乎正在工作并访问正确的服务,因为当我执行代码时,手机提示我询问我是否愿意接受来自我的电脑的消息服务器的连接.当语句’btClient.Connect(btEp);’被执行.

据我所知,我通过流读取并发送到手机的文本文件是由蓝牙MAP规范定义的正确格式化的bMessage,并在其他地方进行了验证.它的构造如下:

BEGIN:BMSG
VERSION:1.0
STATUS:UNREAD
TYPE:SMS_GSM
FOLDER:TELECOM/MSG/OUTBOX
BEGIN:VCARD
    VERSION:2.1
    N:(redacted)
    TEL:(redacted)
END:VCARD
BEGIN:BENV
    BEGIN:VCARD
        VERSION:2.1
        N:(redacted)
        TEL:(redacted)
    END:VCARD
    BEGIN:BBODY
        ENCODING:G-7BIT
        LENGTH:47
        BEGIN:MSG
            This is a short message
        END:MSG
    END:BBODY
END:BENV
END:BMSG

我用(编辑)替换了个人身份信息,但实际的文本文件包含正确的名称和数字.我在英国,所以SMS_GSM应该是正确的,据我所知.

任何帮助将不胜感激!

更新:我已经在目标电话上安装了一个蓝牙终端,并通过将相同的数据发送到设备上的虚拟端口,而不是消息访问服务器,验证该消息正在接收.不知道终端程序是否是一个问题,但是消息的最后一行被附加到前端并从最后错过.我修改了这个问题的文件末尾添加了一个换行符,但是当我将bMessage发送给MAS时,仍然没有任何的乐趣.

我也尝试了一些不同的流写作方法:

1)删除StreamWriter编码包装器 – 相同的结果
2)从循环中顺序发送每个字节 – 类似的结果,在手机上仍然没有动作.

如果有任何蓝牙通讯专家,我真的很感激一些建议!不一定必须是消息访问配置文件特定的,也不一定是C#.

我想我的下一步将是看看我是否可以找到一个现代汽车,它具有用于MAP服务的蓝牙配对,并且可以连接到手机,也可以在使用类似的功能时嗅探数据包?

03/02/16 – 在我的手机和新车之间嗅探数据包,同时在两个方向发送/接收消息,并将其与我的PC /代码和电话之间的嗅探数据包进行比较(谢谢Android!dev选项本机允许BT数据包记录,能够将其转储到Wireshark进行分析).我的代码正在使用BluetoothClient,它在BT协议栈中的RFCOMM上运行,而汽车则使用L2CAP. L2CAP在BT堆栈中低于RFCOMM,32Feet具有在此级别上运行的等效的L2CapClient.已经实现了这一点,但是它会抛出一个错误.事实证明,虽然支持L2CAP,但并不是所有使用它的配置文件都是MAP,而MAP似乎是其中之一.

我要回答这个问题,给任何绊倒的人提供可能的选择.

想想我已经确定,使用32Feet / C#这样做是不可行的.如果要访问手机的蓝牙消息访问服务器/配置文件/客户端(MAS MAP MAC),则无法使用32Feet.Net库中的高级功能.相反,您将需要在C中使用较低级别的代码,具体如下:MSDN:

https://msdn.microsoft.com/en-us/library/windows/hardware/ff536674%28v=vs.85%29.aspx

19/02/16 – 我已经设法使用蓝牙链接到手机上的免提配置文件来发起呼叫(这是我想要做的,但我错误地认为短信会更容易!).我用AT命令来实现这一点.然后,我尝试使用AT命令发送短信,但显然我的手机在实施HFP时没有实现AT命令.所以还没有短信.

我的手机和汽车之间有几个通过蓝牙短信的数据包嗅探,所以会看看在某些时候如何处理.我确实需要得到短信排序,但可以在项目的当前阶段使用简单的语音呼叫启动运行.

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读