2013-02-10 174 views
0

我正在做一个项目,其中我从8051 MC的某些开关和按钮上获取数据。现在我必须串行传输这些端口引脚上的数据到PC。在PC端,我使用串口类在C#sharp .net应用程序中接收数据。现在的问题是我希望在C sharp应用程序中收到的数据是位串而不是Ascii的形式。将Ascii字符串转换为位流

有人可以指导我如何实现?

+0

您可以向我们表明接受数据,样本输入和期望输出的代码开始。 – 2013-02-10 14:30:03

+0

@Ilia事情是,在端口上显然有1和0的一些组合。当我从端口接收到8位数据的这种组合并将其传输到PC时,我会得到一些随机符号。相反,我希望它是完全相同的组合位串,即组合8位,就像它在8051的端口上一样。 – 2013-02-11 00:56:12

+0

我用于从8051微控制器串行接收数据的代码是: - private void serialPortRead_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e){try {Rxstring = serialPortRead.ReadExisting();/* Rxstring具有字符串数据类型*/this.Invoke(new EventHandler(DisplayText)); } catch(System.TimeoutException){}} private void DisplayText(object s,EventArgs e){ReadTextBox.AppendText(Rxstring);} } – 2013-02-11 01:37:07

回答

0

像这样的东西?

byte b = 23; 
var str = Convert.ToString(b, 2).PadLeft(8,'0'); 
0

字符通常存储在集合在C#双字节的。因此,对于每个16位,将二进制的集合转换为char类型。

char c = (char)myBinary; 

编辑:这当然取决于您的项目分配给每个字符的位数。这可能是一个字节。如果是这样,您需要查看下面的链接以了解字符结构。

编号:http://msdn.microsoft.com/en-us/library/vstudio/x9h8tsay.aspx