将数字(以字符串格式)发送为一个字节,并通过串行端口读取

时间:2016-06-02 21:39:46

标签: c# android bluetooth serial-port

我一直致力于一个项目,在这个项目中,Android通过蓝牙向PIC发送一个号码,PIC通过串口向我的笔记本发送相同的号码。

目前,我在此项目中运行了两个不同的应用程序。

  • 第一个应用程序在Android上运行,基本上允许用户选择通过蓝牙发送的号码。例如," 123"。

要通过蓝牙发送号码,我使用以下代码:

byte[] bytes = new byte[1];
bytes[0] = byte.Parse(<Number entered by user, in string format>);
await _socket.OutputStream.WriteAsync(bytes, 0, bytes.Length);

PIC接收该字节,并将相同的数据发送到串行端口。

  • 现在,在我的笔记本电脑上运行的另一个应用程序(连接到COMM3串行端口)接收数据,但它打印出来:

Received: 75

而不是&#39; 123&#39;。

之后,我尝试更改上面的代码,因为我认为它可能与编码有关。所以现在我的代码是:

byte[] bytes = Encoding.ASCII.GetBytes(<Number entered by user, in string format>);
await _socket.OutputStream.WriteAsync(bytes, 0, bytes.Length);

现在,我的应用程序打印出来了:

Received: 1
Received: 2
Received: 3

这几乎是我想要的。我需要处理用户在我的Android应用程序中输入的完全相同的整数,因此它应该打印:

Received: 123

我的字节数组可能是这样的:

bytes[0] = b'00110001' ("1" according ASCII Table)
bytes[1] = b'00110010' ("2" according ASCII Table)
bytes[2] = b'00110011' ("3" according ASCII Table)

当我需要的只是一个字节时:

byte = b'01111011' (123 in binary)

关于如何正确发送字符串并将其读取为只有一个字节的任何想法?

(考虑到我的字符串将始终是一个数字,从0到255)

提前致谢。

0 个答案:

没有答案