现在4.2的蓝牙模块某特性通道发送的字节为243字节,所以PC端必须采用4.2的蓝牙适配器(Silicon Labs CP210x USB to UART Bridge)来接收数据,但是发现DataReceived事件始终没有被触发。
我尝试按照论坛关于DataReceived事件无法触发的帖子进行修改没有成功;尝试用4.0的适配器能够接收到数据,说明蓝牙的GAP,ATT命令应该是没有问题的;尝试用串口调试助手发现4.2的适配器也能接收数据,说明蓝牙适配器应该没问题。所以有点迷惑,想询问可能de原因是什么?是否是蓝牙适配器的相关操作存在问题?
下面是串口的相关操作代码
public void Open(string strPortName)
{
if (ComPort.IsOpen)
throw new Exception("蓝牙适配器已经打开");
thdSPDataProc.Start();
ComPort.BaudRate = 115200;
ComPort.Parity = System.IO.Ports.Parity.None;
ComPort.DataBits = 8;
ComPort.StopBits = System.IO.Ports.StopBits.One;
ComPort.PortName = strPortName;
ComPort.Open();
// 复位蓝牙适配器
if (false == SB_HCI_Ext_ResetSystemCmd(1))
{
LogUtil.LoggingRunStatus(DateTime.Now, "蓝牙适配器复位命令下发失败,请确认 适配器 是否被已拔出!");
return;
}
}
// 复位蓝牙适配器命令
private bool SB_HCI_Ext_ResetSystemCmd(int iRstMode)
{
Byte[] BHCI_ResetCmd = new Byte[5] { 0x01, 0x1D, 0xFC, 0x01, 0x00 };
BHCI_ResetCmd[4] = (Byte)(iRstMode & 0xff);
return Send(BHCI_ResetCmd);
}