Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与蓝牙OBDII加密狗通信(我认为它是ELM327)_C#_Obd Ii_32feet_Elm327 - Fatal编程技术网

C# 与蓝牙OBDII加密狗通信(我认为它是ELM327)

C# 与蓝牙OBDII加密狗通信(我认为它是ELM327),c#,obd-ii,32feet,elm327,C#,Obd Ii,32feet,Elm327,我的车有一个蓝牙OBDII加密狗(品牌是Veepeak),我正在尝试编写一个可以与之通信的Windows应用程序。到目前为止,我似乎能够从笔记本电脑连接到设备,发送命令,并接收某种响应,但我收到的响应并不是我所期望的。我用32英尺的通讯库来处理蓝牙的东西 以下是我用于连接的代码,以及我用于发送消息的功能: BluetoothClient client; Stream stream; client = new BluetoothClient(); Guid uuid = new Guid("000

我的车有一个蓝牙OBDII加密狗(品牌是Veepeak),我正在尝试编写一个可以与之通信的Windows应用程序。到目前为止,我似乎能够从笔记本电脑连接到设备,发送命令,并接收某种响应,但我收到的响应并不是我所期望的。我用32英尺的通讯库来处理蓝牙的东西

以下是我用于连接的代码,以及我用于发送消息的功能:

BluetoothClient client;
Stream stream;
client = new BluetoothClient();
Guid uuid = new Guid("00001101-0000-1000-8000-00805f9b34fb");
client.BeginConnect(SelectedDevice.DeviceAddress, uuid, bluetoothClientConnectCallback, client);

private void bluetoothClientConnectCallback(IAsyncResult result)
{
        client = (BluetoothClient)result.AsyncState;
        client.EndConnect(result);
        clientConnected = true;
        stream = client.GetStream();
        UIWriteLine("Client connected");
}

private string sendMessage(string message)
{
        byte[] encodedMessage = Encoding.ASCII.GetBytes(message);
        stream.Write(encodedMessage, 0, encodedMessage.Length);
        Thread.Sleep(100);
        int count = 0;
        byte[] buffer = new byte[1024];
        string retVal = string.Empty;
        count = stream.Read(buffer, 0, buffer.Length);
        retVal += Encoding.ASCII.GetString(buffer, 0, count);
        return retVal.Replace("\n", "");
}

private string getValue(string pid)
{
        byte[] encodedMessage = Encoding.ASCII.GetBytes(pid + "\r");
        stream.Write(encodedMessage, 0, encodedMessage.Length);
        Thread.Sleep(100);
        bool cont = true;
        int count = 0;
        byte[] buffer = new byte[1024];
        string retVal = string.Empty;
        while (cont)
        {
            count = stream.Read(buffer, 0, buffer.Length);
            retVal += Encoding.ASCII.GetString(buffer, 0, count);
            if (retVal.Contains(">"))
            {
                cont = false;
            }
        }
        return retVal.Replace("\n", "");
}
我使用sendMessage方法发送AT命令,使用getValue方法获取特定的PID(这些方法从我找到的OBDII库中借用代码)

当我发送AT命令时,我似乎只收到我发送的任何东西的回音,而当我发送PID时,我得到的是单个问号的响应,据我理解,这意味着该命令无效


我的加密狗可能没有ELM327吗?我的蓝牙通信是否有问题,或者UUID是否有问题?谢谢。

我还有一个电话。它在相关评论中得到了高度推荐,并且与可用的试用应用程序和我的android手机配合得非常好。然而,我正在自己的python应用程序中努力进行初始化


在我正在raspi上开发的基于python的应用程序上,我必须打开一个“虚拟”串行端口,该端口通过mac地址映射到先前配对的设备。mac地址的配对和记录是在操作系统级别使用通用蓝牙工具完成的。

我建议您在PC上使用realterm(或任何其他com端口终端)等工具,首先验证设备是否正常工作。并验证您正在使用的设备是否正确。有elm327命令用于查询设备描述AT@1Thanks,我现在使用com终端来确定我拥有的是一个ELM327v1.5,它似乎工作正常。我可以直接通过蓝牙流发送消息,还是必须打开串行端口才能进行通信?这并不能回答这个问题。一旦你有足够的声誉,你将能够评论任何帖子;相反,提供不需要提问者澄清的答案。