上位机编程:ASCII码精讲

一 ASCII码介绍:

       ASCII(American Standard Code for Information Interchange)码是一种使用数字来表示字符的编码标准。它是一种字符编码,将常见的字符映射到数字,以便计算机能够理解和处理文本数据。

ASCII码最初是为美国的电信设备设计的,于1963年制定,并在后来的几个版本中进行了扩展。标准ASCII码使用7位来表示一个字符,提供128个不同的字符,包括大写和小写字母、数字、标点符号和一些控制字符。

ASCII码表示中的基本规则是:每个字符都有一个唯一的7位二进制代码。例如,字母"A"的ASCII码是65,而小写字母"a"的ASCII码是97

ascii编码表:

 

二 ASCII码转换

    string 转换ascii的 byte[]

     上位机开发下发内要ascii编码数据java实现代码如下:

/*** @author hua* @date 2024-01-17 14:55*/
public class Demo {public static void main(String[] args) {String vin = "L78GCS4B7JA000579";//转换成ASCII码数据byte[] sendData = stringToAscii(vin);//下发到设备,代码省略…}public static byte[] stringToAscii(String input) {// 默认是 UTF-8 编码// byte[] asciiBytes = input.getBytes();// 使用 ASCII 编码byte[] asciiBytes = input.getBytes(java.nio.charset.StandardCharsets.US_ASCII);return asciiBytes;}}

ascii的 byte[] 转 string

还原设备上传 格式ascii的 byte[] 转 string,用java代码实现如下:

/*** @author hua* @date 2024-01-17 14:59*/
public class Demo {public static void main(String[] args) {byte[] asciiBytes = {72, 101, 108, 108, 111, 44, 32, 65, 83, 67, 73, 73, 33};String resultString = asciiToString(asciiBytes);System.out.println("ascii格式结果: " + resultString);}public static String asciiToString(byte[] asciiBytes) {String resultString = new String(asciiBytes, java.nio.charset.StandardCharsets.US_ASCII);return resultString;}}

 

三  ASCII编码使用总结

       在上位机开发中,涉及文本数据传输一般使用ASCII编码解析。以下是一些关于在上位机开发中使用ASCII编码的总结:

  1. 文本数据传输: ASCII编码是一种文本字符的编码方式,适用于传输和存储可打印字符,包括字母、数字等。在上位机开发中,使用ASCII编码可以轻松地传输和解析文本数据。

  2. 串口通信: ASCII编码通常用于将文本数据从传感器、设备或其他外部设备发送到上位机,或者反之。通过使用ASCII编码,可以在串口通信中简化数据的解析和调试。

  3. 命令和响应: 在上位机与下位机通信的过程中,使用ASCII编码可以通过发送和解析简单的文本命令和响应来进行通信。这对于控制设备、请求数据或执行其他操作非常有用。

  4. 数据记录和日志: ASCII编码的文本数据更容易记录和查看。在上位机开发中,将数据以ASCII形式记录到文件中,或者实时显示在用户界面上,有助于调试和分析系统的运行状态。

  5. 易于调试: 使用ASCII编码的数据在调试过程中更易于查看和理解。通过查看ASCII文本,开发人员能够直观地了解传输的数据,快速发现问题并进行调试。

  6. 协议制定: 在某些应用中,开发者可能会制定基于ASCII编码的简单通信协议,定义命令、数据格式和响应规则,以实现上位机与下位机之间的有效通信。

  7. 注意字符集: 虽然ASCII编码是一个通用的字符编码标准,但在实际应用中需要注意字符集的选择。在不同国家和地区,可能会有一些特殊字符,因此要确保使用的字符集符合应用的需求。

总体而言,使用ASCII编码在上位机开发中是一种简单而常见的做法,特别适用于传输和解析文本数据。对于二进制数据或非文本数据,可能需要考虑其他编码方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十大排序算法模板

☆* o(≧▽≦)o *☆嗨~我是小奥🍹 📄📄📄个人博客:小奥的博客 📄📄📄CSDN:个人CSDN 📙📙📙Github:传送门 📅&a…

本地一键部署grafana+prometheus

本地k8s集群内一键部署grafanaprometheus 说明: 此一键部署grafanaPrometheus已包含: victoria-metrics 存储prometheus-servergrafanaprometheus-kube-state-metricsprometheus-node-exporterblackbox-exporter grafana内已导入基础的dashboard【7个…

户外火光如何玩转?智能酒精壁炉安全使用攻略大揭秘!

在户外使用智能酒精壁炉是一个别致而令人惬意的选择,但在享受户外炉火带来的温馨时,也需要注意一些安全和使用细节。下面将介绍智能酒精壁炉在户外使用需要注意的事项。 智能酒精壁炉需放置在平坦、通风的户外场地,远离易燃物体,确…

Maven 搭建私服

一、Maven 私服简介 1.1 私服简介 Maven 私服是一种特殊的 Maven 远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。 当然也并不是说私服只能建立在局域网,也有很多公…

网络部署实战具体学习内容总结

网络部署实战具体学习内容总结 💻网络部署实战课程通常旨在教授学生如何规划、配置、维护和优化计算机网络。这些课程涵盖了广泛的主题,以确保学生具备网络部署和管理所需的技能。 网络部署实战课程具体学习内容👇 1️⃣网络架构设计及网络原…

第一个Python程序_获取网页 HTML 信息[Python爬虫学习笔记]

使用 Python 内置的 urllib 库获取网页的 html 信息。注意,urllib 库属于 Python 的标准库模块,无须单独安装,它是 Python 爬虫的常用模块。 获取网页 HTML 信息 1) 获取响应对象 向百度(http://www.baidu.com/)发起…

九州金榜|孩子厌学是家庭教育原因还是学校教育原因?

孩子厌学,这是一个让所有家长的头疼的问题,尤其在看到别人家孩子是学霸的时候,就更会有种莫名其妙的伤感,然后回想自己的孩子,仿佛全都是缺点,家长要是有这种想法那就大错特错了,其实每个孩子都…

杨中科 .NETCORE EFCORE第七部分 一对一,多对多

一对一 一对一关系配置 1、builder.HasOne(o >o.Delivery).WithOne(d>d.Order).HasForeignKey(d>dOrderId); 2、测试插入和获取数据 示例 新建 Order 新建 Delivery DeliveryConfig OrderConfig 执行 迁移命令 查看数据库 测试数据插入 运行查看数据 多对多…

【Shell编程练习】编写 shell 脚本,打印 9*9 乘法表

系列文章目录 输出Hello World 通过位置变量创建 Linux 系统账户及密码 监控内存和磁盘容量,小于给定值时报警 猜大小 输入三个数并进行升序排序 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态 系列文章目录编写 shell 脚本,打…

软件测试|如何使用selenium处理下拉框?

简介 下拉框是网页表单中常见的元素之一,通常用于选择不同的选项。对于我们的自动化测试工作来说,操作下拉框是我们经常需要处理的元素,selenium作为我们最常使用的web自动化测试框架,也是支持我们对下拉框进行操作的。本文我们就…

【问题+解决】axios/vue/element/echarts引入报错

缘由 笔者在html页面引用vue来快速实现页面&#xff1b;<head></head>中通过<script>src""></script>方法引入&#xff0c;开始引入&#xff0c;应用都是正常&#xff0c;后来用了也没问题&#xff1b;奇怪的是&#xff0c;前几天发现htm…

代码随想录算法训练营第6天 | 242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数 , 1. 两数之和

哈希知识基础 文章链接&#xff1a;https://programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E5%93%88%E5%B8%8C%E8%A1%A8 242.有效的字母异位词 题目链接&#xff1a;https://leetcode.cn/problems/valid-anagram/description/…

Qt根据单价计算总价与进制转换

1.相关说明 二进制、十进制、十六进制间的相互转换 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete …

路由黑洞和黑洞路由的区别

路由黑洞&#xff1a; 路由黑洞是一种现象&#xff0c;一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象&#xff0c;就是汇总的时候有时会有一些不在内网中存在的网段&#xff0c;但是又包含在汇总后的网段中&#xff0c;如果在这个汇总的边界设备上同时还配…

【SQL】SQL语法小结

相关资料 参考链接1&#xff1a;SQL 语法&#xff08;超级详细&#xff09; 参考链接2&#xff1a;史上超强最常用SQL语句大全 SQL练习网站&#xff1a;CSDN、牛客、LeetCode、LintCode SQL相关视频&#xff1a; 推荐书籍&#xff1a; 文章目录 数据分析对SQL的要求SQL语法简介…

Android Traceview 定位卡顿问题

Traceview 是一个 Android 性能分析工具&#xff0c;用于时间性能分析&#xff0c;主要帮助开发者了解应用程序中各个方法的执行时间和调用关系。通过图形化界面查看应用程序的代码执行细节&#xff0c;包括每个方法的调用次数、方法调用的时间消耗、方法调用堆栈等信息。我们可…

Java、C#、Python间的Battle

一、编译原理和开发效率 编译速度&#xff1a; C# &#xff08;约大于等于&#xff09; JAVA > Python python的编译原理 前提&#xff1a;python 3.6 python不会直接编译源码 而是把源码直接扔给解释器&#xff0c;这种方式 使得python非常灵活&#xff0c;让它的开发效…

交通流量预测HSTGCNT:Hierarchical Spatio–Temporal Graph Convolutional

Hierarchical Spatio–Temporal Graph Convolutional Networks and Transformer Network for Traffic Flow Forecasting 交通流预测的层次时空图卷积网络和Transformer网络 Abstract 图卷积网络&#xff08;GCN&#xff09;具有图形化描述道路网络不规则拓扑结构的能力&#…

乳腺癌预测_EDA_Models

文章目录 **前言**数据介绍1.概述2.**关于数据集** 预测过程1.安装包2.加载库3.导入数据4.数据清洗5.EDA重复行缺失值单变量分析正态性检验双变量分析年龄与肿瘤大小(cm)肿瘤大小&#xff08;cm&#xff09;与诊断结果肿瘤大小&#xff08;cm&#xff09;与转移多元分析 6.预处…

QT软件在线安装与维护

一.安装 安装QT开发环境分离线安装和在线安装两种方式&#xff0c;具体步骤如下&#xff1a; QT官网注册账号----下载安装包-----安装-----选择要安装的版本与开发包----版本维护 注意&#xff1a;Qt5.14.2是最后提供二进制安装包的版本&#xff0c;后面的版本都需要在线安装…