C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)

ops/2024/11/23 4:44:32/

        最近在做一个与激光器用串口进行通讯的程序文档中要求将频率参数以3个字节的方式进行发送。这里记录一下过程。以便以后再有类似问题时可以快速解决。

        

/// <summary>/// 设置频率/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnSetHz_Click(object sender, EventArgs e){//设置PRF:PRF xxxx<CR><LF>try{//[00][02][00][11][D#1][D#2][CS][CS][0D]if (!string.IsNullOrEmpty(txtHz.Text.Trim())){var command = "[00][03][00][21]";int valueInt = -1;int.TryParse(txtHz.Text.Trim(), out valueInt);if (valueInt > 0){valueInt = valueInt * 1000;var hexStrByteSUm = 03 + 00 + 21;string hexString = valueInt.ToString("X6"); //转换为6位十六进制,前面填充0,数字6表示需求的长度byte[] byteArray = new byte[3];for (int i = 0; i < 3; i++){byte bit = Convert.ToByte(hexString.Substring(i * 2, 2), 16);byteArray[i] = bit;hexStrByteSUm += bit;command += "[" + hexString.Substring(i * 2, 2) + "]";}//command += "[" + hexStrByteSUm.ToString("X2") + "]";//校验和 16进制command += "[" + hexStrByteSUm % 256 + "]";//前面所有字节的和(模256)。这个校验和用于确保命令在传输过程中没有出错。command += "[0D]";AddListViewThread(null, "设置频率 发送:" + command, Color.Blue);//[00][03][00][21][07][A1][20][E0][0D]serialPortLaser.Write(command);}else{MessageBox.Show("输入的值无效!");}}else{MessageBox.Show("频率不能为空!");}}catch (Exception ex){MessageBox.Show("频率异常!msg:" + ex.Message);}}

        在C#中,可以使用ToString方法将整数转换为其十六进制表示的字符串,并使用Convert.ToString方法将整数转换为指定基数的字符串。对于转换为十六进制字节表示,需要首先确定整数的字节表示形式,通常是4个字节。

以下是将5000转换为其十六进制字节表示的示例代码:

using System;class Program
{static void Main(){int number = 5000;string hexString = number.ToString("X8"); // 转换为8位十六进制,前面填充0byte[] byteArray = new byte[4];for (int i = 0; i < 4; i++){byteArray[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);}Console.WriteLine(BitConverter.ToString(byteArray).Replace("-", " "));}
}
这段代码首先将整数5000转换为8位十六进制字符串(前面填充0以确保总是4个字节),然后将每两个十六进制字符转换为字节,并最终以字节数组的形式输出。BitConverter.ToString用于以可读格式输出字节数组,Replace用于将输出中的连字符换成空格。

       

 


http://www.ppmy.cn/ops/135986.html

相关文章

自动化立体仓库:详解

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载。 自动化立体仓库&#xff08;Automated S…

科研实验室的数字化转型:Spring Boot系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理实验室管理系统的相关信息成为必然。开发合…

litepal proguardFiles android studio

Step1&#xff1a;settings.gradle.kts or settings.gradle 添加阿里源 dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {maven(url "https://jitpack.io")maven (url "https://maven.aliyu…

【Excel】拆分多个sheet,为单一表格

Private Sub 分拆工作表() Application.ScreenUpdating True 让屏幕显示操作过程&#xff0c; Dim sht As Worksheet Dim MyBook As Workbook Set MyBook ActiveWorkbook For Each sht In MyBook.Sheets If sht.Visible True Then 隐藏的sheet跳过&#xff0c;否则会报1004无…

人工智能之机器学习5-回归算法2【培训机构学习笔记】

培训班ppt内容&#xff1a; 个人精进总结&#xff1a; 可解释方差 定义 可解释方差的回归评分函数是一种用于评估回归模型性能的指标&#xff0c;以下从其定义、计算公式、取值范围及意义、应用场景等方面进行详细介绍&#xff1a; 可解释方差&#xff08;Explained Varian…

docker 容器的生命周期

使用 docker run 命令启动一个容器时&#xff0c;如果系统关机或者容器被设置为自动清理&#xff08;即使没有使用 --rm 标志&#xff09;&#xff0c;容器的生命周期将取决于几个因素&#xff1a; 系统关机&#xff1a; 如果宿主机在容器运行时突然关机或重启&#xff0c;Dock…

Node.js 23 发布了!

Node.js 23 现已推出&#xff0c;带来了新功能、性能改进和更好的开发者体验。此次版本提升了兼容性和稳定性&#xff0c;提供了更多工具来构建高效的应用程序。 此外&#xff0c;Node.js 22 将在 10 月 29 日当周被提升为长期支持 (LTS) 版本&#xff0c;进入长期维护阶段&am…

【Xbim+C#】创建圆盘扫掠IfcSweptDiskSolid

基础回顾 https://blog.csdn.net/liqian_ken/article/details/143867404 https://blog.csdn.net/liqian_ken/article/details/114851319 效果图 代码示例 在前文基础上&#xff0c;增加一个工具方法&#xff1a; public static IfcProductDefinitionShape CreateDiskSolidSha…