我需要你的帮助。我正在尝试在 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;
解决了我的问题!
不管怎么说,还是要谢谢你 ;)