gpt4 book ai didi

c# - SerialPort 编码 - 如何获得 8 位 ASCII?

转载 作者:太空宇宙 更新时间:2023-11-03 17:18:29 26 4
gpt4 key购买 nike

我在使用通过串行端口通信的程序时遇到问题。它必须发送和接收的字符之一是度数符号,ASCII 0xBF。它多年来一直工作良好,现在突然串口对象开始丢弃第 7 位,所以我得到 0x3F 而不是 0xBF。

我确信这是我所做的愚蠢的事情,因为我最近在那个区域修改了我的代码 - 但是我看不到我所做的导致第 8 位丢失的事情。

我的端口是这样初始化的:

    BaudRate              9600  int  
DataBits 8 int
DiscardNull true bool
DtrEnable true bool
Encoding {System.Text.ASCIIEncoding} System.Text.Encoding Handshake None System.IO.Ports.Handshake
NewLine "\n" string
Parity None System.IO.Ports.Parity
ParityReplace 63 byte
PortName "COM4" string
ReadBufferSize 128 int
ReadTimeout 250 int
ReceivedBytesThreshold 1 int
RtsEnable true bool
StopBits One System.IO.Ports.StopBits
WriteBufferSize 64 int
WriteTimeout 1500 int

关于如何将端口恢复为 8 位操作的任何想法?

最佳答案

你的问题是ASCIIEncoding是一个 7 位编码。您正在寻找支持 Extended ASCII 的东西.

以下将为您提供Codepage 1252 .

System.Text.Encoding.GetEncoding(1252);

这会给你 ISO 8859-1 .

System.Text.Encoding.GetEncoding(28591);

这两个都被认为是Extended ASCII并且两者都包含通常与此集合关联的符号(大部分具有相同的字节表示),例如 © 、 ¥ 和 º 。有关每种编码中包含哪些字符的更多信息,请参阅引用链接。

关于c# - SerialPort 编码 - 如何获得 8 位 ASCII?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com