如何从串口读取时应用编码我正在从串口读取数据。我看了这篇文章:http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/a709d698-5099-4e37-9e10-f66ff22cdd1e他写了很多我遇到的问题,但在他的他提到使用写作:System.Text.Encoding.GetEncoding("Windows-1252")。我遇到的问题是何时以及如何应用它。我认为有三个地方要点。定义串口对象时:privateSerialPortcomport=newSerialPort();事件处理程序:comport.DataReceived+=newSerialDataReceivedEventHandler(port_DataReceived);或者读取数据时:stringdata=comport.ReadExisting();无论我添加它。我好像弄错了什么。如何使用编码?不使用ReadExisting,而是使用端口的Read方法获取字节,然后将它们转换为具有所需编码的字符串,如下所示:voidport_DataReceived(objectsender,SerialDataReceivedEventArgse){byte[]data=newbyte[port.BytesToRead];端口.读取(数据,0,数据长度);字符串s=Encoding.GetEncoding("Windows-1252").GetString(数据);}更新:根据Jo?o的回答,这里有一个更简单、仍然对C#-2.0友好的版本。实例化SerialPort对象后,设置其Encoding属性如下:port.Encoding=Encoding.GetEncoding("Windows-1252");然后你的DataReceived方法变成这样:voidport_DataReceived(objectsender,SerialDataReceivedEventArgse){字符串s=port.ReadExisting();}你应该在发送或接收数据之前设置合适的编码,所以构造函数是一个不错的选择。varsp=newSerialPort{Encoding=Encoding.GetEncoding("Windows-1252")};如果此后仍然收不到数据,则需要确保发送到串口的数据是您指定的编码(“Windows-1252”)。以上是C#学习教程:串口读取时如何应用编码。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
