如何将大于127的ASCII值发送到串口

2024-04-27

每当我将任何大于 127 的 ASCII 值发送到 com 端口时,我都会在串行端口上收到垃圾输出值。

 ComPort.Write(data);

严格来讲ASCII http://en.wikipedia.org/wiki/ASCII仅包含 128 个可能的符号。
您将需要使用不同的字符集来发送除 33 个控制字符和 94 个 ASCII 字母和符号之外的任何内容。

更令人困惑的是,ASCII 被用作几个较大(冲突)字符集的起点。 此列表并不全面,但最常见的是:

  1. 扩展_ASCII http://en.wikipedia.org/wiki/Extended_ASCII这是 ASCII 码,其中还有 128 个字符。
  2. ISO 8859-1 http://en.wikipedia.org/wiki/ISO/IEC_8859-1是 ASCII,包含表示所有西欧语言所需的所有字符。
  3. Windows-1252 http://en.wikipedia.org/wiki/Windows-1252是 ISO 8859-1,有一些更改(包括 0x80-0x9F 范围内的可打印字符)。
  4. ISO 8859-2 http://en.wikipedia.org/wiki/ISO/IEC_8859-2这相当于东欧语言。
  5. Windows-1250 http://en.wikipedia.org/wiki/Windows-1250也适用于东欧语言,但与 8859-2 几乎没有相似之处。
  6. UTF-8 http://en.wikipedia.org/wiki/Utf-8也源自 ASCII,但具有从 128 到 255 的不同字符。

回到您的问题:您的编码设置为 ASCII,因此您无法发送该字符集之外的任何字符。您需要将编码设置为适合您发送的数据的字符集。根据我的经验(美国和西欧确实如此)Windows-1252 是最常用的。

在 C# 中,您可以通过串行端口发送字符串或字节。如果您发送一个字符串,它会使用串口编码 http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.encoding(v=vs.110).aspx将该字符串转换为要发送的字节。您可以根据您的目的将其设置为适当的编码,或者您可以手动转换字符串系统.文本.编码 http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx object.

在com端口上设置编码器:

ComPort.Encoding = Encoding.GetEncoding("Windows-1252");

或手动编码字符串:

System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Windows-1252");
byte[] sendBuffer = enc.GetBytes(command);
ComPort.write(sendBytes, 0, sendBuffer.Length);

两者在功能上都做同样的事情。


编辑: 0x96 是 Windows-1252 中的有效字符 这会输出一个长连字符。 (正常连字符是0x2D)

System.Text.Encoding enc = System.Text.Encoding.GetEncoding("windows-1252");
byte[] buffer = new byte[]{0x96};
Console.WriteLine(enc.GetString(buffer));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将大于127的ASCII值发送到串口 的相关文章

随机推荐

  • 如何将服务添加到 .Net 中属性网格的类型描述符上下文中?

    我有一个应用程序 允许用户在设计时选择图像 无论是直接图像还是从图像列表中 到目前为止 一切都很酷 除了这不是发生在 Visual Studio 属性浏览器中 而是发生在作为类型编辑器一部分的属性网格中 我的问题是 图像选择器 实际上是资源
  • RequestContextHolder 是线程安全的吗?

    在我的 Spring JDBC 项目中 我有一个名为DBStuff我用它来连接到数据库并进行简单的数据库操作 这是一个Web项目 有用户 所以自然我使用会话机制 当我需要检索请求数据时DBStuff类 我使用下面这行代码 HttpServl
  • 为什么我们不能在打字稿的类中使用 let 关键字

    我是 TypeScript 新手 我想知道为什么我们不能使用let类内变量声明的关键字 如下所示 提前致谢 class Greeter let greeting string constructor message string this
  • 使用 asyncio 处理超时

    免责声明 这是我第一次尝试asyncio module 我在用着asyncio wait通过以下方式尝试支持等待一组异步任务的所有结果的超时功能 这是一个更大的库的一部分 因此我省略了一些不相关的代码 请注意 该库已经支持提交任务并使用 T
  • 是否可以在控制器外部获取运行时的路线数据?

    我想知道是否有可能以某种方式获取控制器外部的路由值 这是我尝试过的 我也尝试过做 Values projectId 但我仍然得到null RoutePrefix projects public class UsergroupControll
  • 如何使用 ServiceStack JsonSerializer 序列化 ExpandoObject?

    是否可以让 ServiceStack JsonSerializer 将 ExpandoObject 序列化为平面对象而不是字典 大致类似于这样 x xvalue y Date 1313966045485 我正在尝试比较 JSON 序列化Ex
  • .NET 的 BBCode 或 wiki 标记库? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您最喜欢用于处理以下任一问题的 NET 库是什么 BBCode http en wikipedia org wiki BBCode markup
  • 图标字体的正确字体显示值

    font display https www w3 org TR css fonts 4 font display desc是一个新的 CSS 属性 允许开发人员根据字体加载速度是否足够快来控制字体的呈现方式 已经有几篇文章介绍了 使用 f
  • 如何保证按一定顺序调用的AJAX请求得到相同顺序的响应?

    如何保证按一定顺序调用的AJAX请求得到相同顺序的响应 首先 请记住 服务器本身可能不会按照收到请求的顺序返回响应 想象一下 如果您首先触发一个复杂的 ajax 请求 然后触发一个简单的 ajax 请求 可能引用一些缓存的静态数据 第二个请
  • 如何使用 AndEngine (Android) 移动精灵对象

    我正在使用 andengine 在 android 中开发游戏 我在精灵中放置了一个对象 例如 this mTexture new Texture 32 32 TextureOptions BILINEAR PREMULTIPLYALPHA
  • 在 ubuntu 10 64 位上安装 java 时出错

    EDIT 我添加此注释是为了解释为什么我将这个问题保留在这里 我添加了 Android 作为关键字 我想知道其他人是否尝试过下载代码以及如何解决此问题 我担心如果我问 Ubuntu 他们会建议我使用 OpenJDK 但问题是 有人使用该 S
  • Tkinter:尝试点击离开时窗口闪烁

    我已经尝试这样做有一段时间了 但还没有找到方法 我有一个 tkinter 脚本 当按下按钮时会创建一个弹出窗口 但是 我不希望用户能够从该窗口单击到之前创建的任何窗口 我已经使用 root grab set 进行了此操作 但是没有任何迹象表
  • 如何在 Laravel 5.4 中将 base64 转换为图像?

    我正在 Laravel 5 4 中开发 api 我将收到 Base64 格式的图像 如何在 Laravel 中将 base64 转换为图像 该解决方案将处理所有图像类型 image request gt input image image
  • 将 Spring Boot Web 应用程序与 Pivotal TC Server 结合使用

    我从 Spring Tool Suite 内部将项目重构为 Spring Boot 应用程序 所有文档都展示了如何创建一个带有嵌入式 Tomcat 实例的自包含应用程序 该应用程序可以工作并且很棒 然而在此之前 我有自己的 Maven We
  • 使用 CSS 与使用列和行调整文本区域大小

    使用列和行调整文本区域大小与使用高度和宽度调整文本区域大小有什么区别
  • 如何将变量从一个 PowerShell 脚本加载到另一个?

    我有一个主脚本正在调用其他几个脚本 我需要将其他脚本中的变量加载到主脚本中 以便我可以将它们转储到 html 文件中 我尝试对我正在调用的脚本进行点采购 但这不起作用 或者我做错了什么 任何帮助 将不胜感激 脚本的示例部分 get clus
  • 在弹出窗口中打开 Google Play(如 Vimeo、Wisher、Buzzfeed)- 即时应用

    如何在 Wisher Buzzfeed Vimeo 等弹出窗口中打开 Google Play 我在看谷歌文档 https developer android com distribute marketing tools linking to
  • C# 以编程方式访问 Excel 宏

    我正在使用 Excel 文件的目录来获取有关每个文件的信息 我正在尝试使用 C Excel 互操作来收集有关与其中一些文件关联的 VBA 宏的信息 其代码如下 问题在于 所有 Excel 文件都没有启用对宏的编程访问 我可以在文件的本地副本
  • PHP - 如何替换 url 的特殊字符

    我正在尝试转换特殊字符 例如 我将使用它们来进行 GET 请求 我为此构建了一个函数 function convert text text t text specChars array gt 20 gt 21 gt 22 gt 23 gt
  • 如何将大于127的ASCII值发送到串口

    每当我将任何大于 127 的 ASCII 值发送到 com 端口时 我都会在串行端口上收到垃圾输出值 ComPort Write data 严格来讲ASCII http en wikipedia org wiki ASCII仅包含 128