C#把汉字转换成16进制(HEX)并向串口发送数据
原文:C#把汉字转换成16进制(HEX)并向串口发送数据

报警器实例:(有发送,无返回获取)

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.IO.Ports;
 6 using System.Text.RegularExpressions;
 7 using System.Windows.Forms;
 8
 9 namespace ZKJFJK
10 {
11     /***
12      报警器语音输出类,只需在调用时填写需要播报汉字即可
13      * 例:bool TF = new sendvoice().send("机房报警温度过高");
14      * 其返回一个bool类型值TF,当TF为True时。则发送成功,否则发送失败;
15      */
16     class sendvoice
17     {
18         SerialPort spformdata = new SerialPort();//实例化串口通讯类
19         public bool send(string voicestr)
20         {
21             spformdata.Close();
22             spformdata.PortName = "COM9";//串口号
23             spformdata.BaudRate = 9600;//波特率
24             spformdata.DataBits = 8;//数据位
25             spformdata.StopBits = (StopBits)int.Parse("1");//停止位
26             spformdata.ReadTimeout = 500;//读取数据的超时时间,引发ReadExisting异常
27             spformdata.Open();//打开串口
28             byte[] temp = new byte[1];
29             try
30             {
31                 /***************** 汉字转换为十六进制数(hex)部分 ********************************/
32                 //把汉字转换为十六进制数(hex)
33                 if ((voicestr.Length % 2) != 0)
34                 {
35                     voicestr += " ";//空格
36                 }
37                 System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");
38                 byte[] bytes = chs.GetBytes(voicestr);
39                 string str = "";
40                 for (int i = 0; i < bytes.Length; i++)
41                 {
42                     str += string.Format("{0:X}", bytes[i]);
43                 }
44                 string voicehex = "23" + str + "ff ff ff"; //转换成功的16进制数,加上报警器格式的开头与结尾
45
46                 /***************** 串口发送数据部分 ***********************************************/
47                 //首先判断串口是否开启
48                 if (spformdata.IsOpen)
49                 {
50                     int num = 0;   //获取本次发送字节数
51                     //串口处于开启状态,将发送区文本发送
52                     //判断发送模式
53                     if (true)
54                     {
55                         //以HEX模式发送
56                         //首先需要用正则表达式将用户输入字符中的十六进制字符匹配出来
57                         string buf = voicehex;
58                         string pattern = @"\s";
59                         string replacement = "";
60                         Regex rgx = new Regex(pattern);
61                         string send_data = rgx.Replace(buf, replacement);
62                         //不发送新行
63                         num = (send_data.Length - send_data.Length % 2) / 2;
64                         for (int i = 0; i < num; i++)
65                         {
66                             temp[0] = Convert.ToByte(send_data.Substring(i * 2, 2), 16);
67                             spformdata.Write(temp, 0, 1);  //循环发送
68                         }
69                         //自动发送新行
70                         spformdata.WriteLine("");
71                         return true;
72                     }
73                 }
74             }
75             catch (Exception ex)
76             {
77                 spformdata.Close();
78                 //捕获到异常,创建一个新的对象,之前的不可以再用
79                 spformdata = new System.IO.Ports.SerialPort();
80                 //响铃并显示异常给用户
81                 System.Media.SystemSounds.Beep.Play();
82                 MessageBox.Show(ex.Message);
83             }
84             return false;
85         }
86     }
87 }

posted on 2019-04-15 22:15 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10713632.html

C#把汉字转换成16进制(HEX)并向串口发送数据相关推荐

  1. 将utf-8格式的汉字转换成16进制

    //字符串转换成16进制 function str2hex($str){$hex = '';for($i=0,$length=mb_strlen($str); $i<$length; $i++) ...

  2. 10进制转换成16进制

    更新中......... 任意2-36进制数转化为10进制数. 建议自己写函数,代码如下: int Atoi(string s,int radix) //s是给定的radix进制字符串 {int an ...

  3. 将字符串转换成16进制

    将字符串转换成16进制 原文:将字符串转换成16进制 1.将普通字符串转换成16进制的字符串. 点击进入推荐链接 class Program {static void Main(string[] ar ...

  4. java 16进制数组 字符串_byte数组转换成16进制字符串和字符数组的方法

    byte数组转换成16进制字符串String: public class CommonUtil { /** * byte数组转换成16进制字符串 * @param src * @return */ p ...

  5. ip地址转换成16进制long

    <span style="font-size:18px;">public class IpUtil {/*** ip地址转换成16进制long* @param ipSt ...

  6. QQ号转换成16进制登陆

    QQ号转换成16进制登陆 闲来无事,把自己的QQ号码进行进制转换,以十进制转换成十六进制进行登陆 很好玩,可以拿来装逼 在线进行转换链接 登陆的时候需要在十六进制之前加上 0x,然后进行登陆,完全没毛 ...

  7. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  8. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  9. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!编辑

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  10. STM32+拨码开关,读取拨码开关电平值并转换成16进制数,一种简洁的编程思路

    以2p拨码开关为例 在main.h中,宏定义单片机IO口和函数HAL_GPIO_ReadPin()的返回值 #define DIP0_Pin GPIO_PIN_0 #define DIP0_GPIO_ ...

最新文章

  1. sql优化ppt_Spark优化 | Spark 3.0 中七个必须知道的 SQL 性能优化
  2. 重写描述符(property)魔法方法时可能遇到的问题
  3. Google首席科学家谈Google是怎么做深度学习的
  4. 用mkfs.jffs2 命令制作jffs2镜像文件 (转)
  5. Hadoop hdfs文件操作常用命令
  6. 安装mysql-connector-python-8.0.11-py3.6遇到问题
  7. python 比较运算符放在列表中_在Python3中将运算符放在列表中
  8. spring-102-spring全注解快速实现事务
  9. yum安装Apache Web Server后各个文件存放位置
  10. 获取DataGridView上选中的一行并转换为一个DataRow类型
  11. 流程图的虚线是什么意思_这些新标识啥意思?交警教你怎么走
  12. 相亲之战,以少胜多乎?
  13. 区块链 以太坊 智能合约 运行原理和开发实例
  14. CentOS 7 配置 VNC 远程桌面连接
  15. matlab中polyfit与polyval的功能
  16. 如何查看自己名下有几张手机卡?
  17. Java 文件上传到工程中,上传成功但是目录中没有显示
  18. django调用python脚本返回_Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境...
  19. Hadoop2.x配置-Ubuntu18.04-Vm虚拟机
  20. Cool Number

热门文章

  1. 搜索引擎技术在仿冒网站检测中的应用
  2. python实现完整的特征工程,实践论文中的分类模型和方法用于恶意页面的分类与识别
  3. 新版微信不停跳转到小程序_微信又有大动作,小程序跳转功能将受限?
  4. js中立即执行函数会预编译吗_浅析Vue的生命周期以及JS异步
  5. bootstrap4 图标和文字行内对齐
  6. java -cp 什么意思 怎么用
  7. Hyperledger Fabric blockchain explorer 重启
  8. 设计模式之GOF23代理模式03
  9. 火狐linux ubuntu16.04,在Ubuntu16.04系统上更新FireFox浏览器(即火狐浏览器)到最新版本...
  10. multism中ui和uo应该怎么表示_第310 这四个常考英语单词,到底表示时间还是地点?...