Encoding 串行端口编码-我需要8位ASCII或提示

Encoding 串行端口编码-我需要8位ASCII或提示,encoding,ascii,Encoding,Ascii,我需要你的帮助。我试图在c#串行端口应用程序和微控制器之间实现数据读出 举个小例子: 我的微控制器正在发送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)是一

我需要你的帮助。我试图在c#串行端口应用程序和微控制器之间实现数据读出

举个小例子:

我的微控制器正在发送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
  • 三十六
  • 0
这是由终端程序验证的。在C#中,我想把这个数字重新组合起来。 我使用了这个函数

byte[] asciiBytes = Encoding.ASCII.GetBytes(string);
但是它不能正常工作,因为它只转换一个7字节的整数,例如244,比它多。 你能帮我解决我的问题吗?由于性能原因,我不想将微控制器上的数字转换为字符串,并在我的c#应用程序中将字符串重新转换为数字

非常感谢

附言:

明白了

问题是,在读取serialport缓冲区之前的编码是错误的

System.Text.Encoding iso_8859_1 = System.Text.Encoding.GetEncoding("iso-8859-1");
port.Encoding = iso_8859_1;
解决了我的问题


无论如何,谢谢你;)

仅定义128个字符(即7位)写一个解决方案,在那里解释它,然后接受它。这样(1)线索就得出了一个合乎逻辑的结论(2)任何其他人都可能受益。