处理串行通信时发送和返回的数据格式是什么

时间:2014-02-28 22:27:09

标签: c# .net bluetooth serial-port

这是一个相对无聊的问题,但我很难得到它。

以下是我面临的问题:

我使用32feet库进行Windows移动(运行紧凑型框架)设备和医疗设备之间的蓝牙通信。

此医疗设备概述了通信说明。它们似乎非常简单,但有一部分我不理解......即数据发送和接收的格式。

文档声称我需要向设备发送某些字符串以给它命令。例如,如果我将它“sw :: CR”,则设备应回复v92:as0001 :: CR“。我现在假设CR标记是回车符。

现在问题是我将这些数据发送到什么格式。数据是否必须是字节数组的形式?

我正在使用BinaryWriter,它有一百万个重载...其中一个是字符串。由于该设备似乎期待“文本”,我只是发送文本?因为它声称返回一个字符串...我只是假设它是一个字符串

它使用NetworkStream来显示数据。我可以简单地发送转向并期待转向吗?

我基本上迷失了往返于设备的数据格式。

总结:使用虚拟通信端口发送数据时,该数据可能采用何种格式,以及我希望接收的格式是什么格式。

如果问题是含糊不清,我会很高兴。

由于

1 个答案:

答案 0 :(得分:0)

免责声明:我没有使用32feet.Net,当然我没有使用过您的医疗设备。

当文档说CR或它们通常表示回车字符时:十六进制0D值。这是一种非常常见的串行通信消息结束指示符。

大多数串行设备都希望仅使用ASCII字符集的数据。您的二进制写入器可能会接受字符串值,并通过蓝牙连接将等效的ASCII字符发送到医疗设备。

您可以这样做:

  string myText = "ver":
  myWriter.SendText(myText + "\n");

可能有效的替代方法是对此进行编码:

  string myText = "ver":
  myWriter.SendText(myText + Environment.NewLine);

如果这对您不起作用,则需要使用ASCII编码将带有连接回车符的字符串更改为字节数组,然后将字节数组流式传输到设备。您可能需要摆弄回车符,可能会尝试“\ r \ n”,具体取决于您的设备需要。