0

我需要你的帮助。我正在尝试在 ac#serialport 应用程序和微控制器之间实现数据读取。

一个小例子:

我的微控制器正在发送 4 个 8 字节值的 32 位整数。

在我的微控制器上,代码如下所示:

uart_putc((uint8_t)(number>>24));
uart_putc((uint8_t)(number>>16));
uart_putc((uint8_t)(number>>8));
uart_putc((uint8_t)number);

uart_putc(char c) 是一个通过串口发送一个字符的函数

当我有一个数字时:

uint32_t number = 16000000;

微控制器将这个号码与上面的代码分开并发送到这 4 个部分:

  • 0
  • 244
  • 36
  • 0

这由终端程序验证。在 C# 中,我想再次将这个数字放在一起。我使用了这个功能

byte[] asciiBytes = Encoding.ASCII.GetBytes(string);

但它不能正常工作,因为它只转换一个 7 字节整数和 244 例如 ist 比它多。你能帮我解决我的问题吗?由于性能原因,我不想将微控制器上的数字转换为字符串并在我的 c# 应用程序中将字符串重新转换为数字。

非常感谢!

PS:

知道了!

问题是,在读取串行端口缓冲区之前的编码是错误的。

System.Text.Encoding iso_8859_1 = System.Text.Encoding.GetEncoding("iso-8859-1");
port.Encoding = iso_8859_1;

解决了我的问题!

不管怎么说,还是要谢谢你 ;)

4

0 回答 0