C#把汉字转换成16进制(HEX)并向串口发送数据
报警器实例:(有发送,无返回获取)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Text.RegularExpressions;
using System.Windows.Forms; namespace ZKJFJK
{
/***
报警器语音输出类,只需在调用时填写需要播报汉字即可
* 例:bool TF = new sendvoice().send("机房报警温度过高");
* 其返回一个bool类型值TF,当TF为True时。则发送成功,否则发送失败;
*/
class sendvoice
{
SerialPort spformdata = new SerialPort();//实例化串口通讯类
public bool send(string voicestr)
{
spformdata.Close();
spformdata.PortName = "COM9";//串口号
spformdata.BaudRate = ;//波特率
spformdata.DataBits = ;//数据位
spformdata.StopBits = (StopBits)int.Parse("");//停止位
spformdata.ReadTimeout = ;//读取数据的超时时间,引发ReadExisting异常
spformdata.Open();//打开串口
byte[] temp = new byte[];
try
{
/***************** 汉字转换为十六进制数(hex)部分 ********************************/
//把汉字转换为十六进制数(hex)
if ((voicestr.Length % ) != )
{
voicestr += " ";//空格
}
System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");
byte[] bytes = chs.GetBytes(voicestr);
string str = "";
for (int i = ; i < bytes.Length; i++)
{
str += string.Format("{0:X}", bytes[i]);
}
string voicehex = "" + str + "ff ff ff"; //转换成功的16进制数,加上报警器格式的开头与结尾 /***************** 串口发送数据部分 ***********************************************/
//首先判断串口是否开启
if (spformdata.IsOpen)
{
int num = ; //获取本次发送字节数
//串口处于开启状态,将发送区文本发送
//判断发送模式
if (true)
{
//以HEX模式发送
//首先需要用正则表达式将用户输入字符中的十六进制字符匹配出来
string buf = voicehex;
string pattern = @"\s";
string replacement = "";
Regex rgx = new Regex(pattern);
string send_data = rgx.Replace(buf, replacement);
//不发送新行
num = (send_data.Length - send_data.Length % ) / ;
for (int i = ; i < num; i++)
{
temp[] = Convert.ToByte(send_data.Substring(i * , ), );
spformdata.Write(temp, , ); //循环发送
}
//自动发送新行
spformdata.WriteLine("");
return true;
}
}
}
catch (Exception ex)
{
spformdata.Close();
//捕获到异常,创建一个新的对象,之前的不可以再用
spformdata = new System.IO.Ports.SerialPort();
//响铃并显示异常给用户
System.Media.SystemSounds.Beep.Play();
MessageBox.Show(ex.Message);
}
return false;
}
}
}
C#把汉字转换成16进制(HEX)并向串口发送数据的更多相关文章
- java中将汉字转换成16进制
技术交流群:233513714 /** * 将汉字转换车16进制字符串 * @param str * @return st */ public static String enUnicode(Stri ...
- Linux c字符串中不可打印字符转换成16进制
本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...
- ip地址转换成16进制long
<span style="font-size:18px;">public class IpUtil { /** * ip地址转换成16进制long * @param i ...
- 运用C语言将图片转换成16进制的字符串(base64)
最近在写手机端的性能测试脚本的时候,发现手机在上传图片数据时,先将图片转换成一堆16进制的字符,将字符传输过去,服务器再将字符解码成图片 我们在loadrunner中测试时,就需要用C语言将图片编码. ...
- Replication--将LSN转换成16进制
在复制中经常会使用到16进制的LSN,但在日志fn_dblog中的LSN是数字形式,于是从网上找到以下转换函数CREATE FUNCTION dbo.fn_convertnumericlsntobin ...
- rgb值转换成16进制
由于jQuery获取css中的background有时候是rgb值,所以往往需要一个转换函数. 以前觉得难,还写个博客记录,现在觉得好容易. let testColor = "rgb(20, ...
- js方法实现rgb颜色转换成16进制格式的代码的方法
原文地址:http://www.cnblogs.com/vaal-water/archive/2013/04/08/3008880.html 自己试过很好用 function zero_fill_he ...
- java-pfx文件转换成16进制内容
public static void main(String[] args) throws Exception { String path = "D://111.pfx"; Inp ...
- 本大神教你用PHP把文本内容转换成16进制数字,进行加密
<?php $a="杨波"; $b = bin2hex($a); echo $a."<br />"; $c = pack("H*&q ...
随机推荐
- Python之路(第十九篇)hashlib模块
一.hashlib模块 HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值 ...
- 如何从平面设计转行到UI设计?
时代的变迁,科技的进步,工具的发展,薪资的差距,促使许多人转行的原因,但平面与界面两者之间有着哪些的差异呢?如果,想要转行又该具备哪些条件呢? 平面.界面设计之间的差异性 平面设计以『视觉』为主轴,强 ...
- [C#]this.Invoke和this.BeginInvoke的区别
private void button1_Click(object sender, EventArgs e) { "; this.Invoke(new EventHandler(delega ...
- bundler简介(ruby gem)
簡介 Bundler RubyGem 是包裝.散佈Ruby程式庫的標準方式,相關文件可以參考 RubyGems Guides 的說明,或是 簡介 plugins 中的第二個例子.在使用rails ...
- mysql之表的查看操作
一 补充一些杂碎的知识 1 插入数据: create table 新表名(字段 数据类型[约束条间]...) select 字段... from 旧表名 create table 新表名(字段 数据类 ...
- Linux+Apache+Mysql+PHP优化技巧
LAMP 平台由四个组件组成,呈分层结构.每一层都提供了整个软件栈的一个关键部分:Linux.Apache.MySQL.PHP. LAMP这个词的由来最早始于德国杂志“c't Magazine”,Mi ...
- 2018.11.06 洛谷P1099 树网的核(最短路+枚举)
传送门 之前看李煜东的书一直感觉是道神题. 然后发现这题数据范围只有300?300?300? 直接上floydfloydfloyd然后暴力就完了啊. 代码: #include<bits/stdc ...
- jQuery插件开发全解析[转]
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...
- vue 开发系列(四) vue 使用外部JS
概要 在开发时我们会经常需要使用到外部的JS,这样我们需要引入外部js,然后进行使用. 实现方法 我们在开发的过程中需要使用到 sha256 将用户的密码进行加密传输. 我们对js进行一点点改造. f ...
- ibatis注意要点
一.ibatis的关键字like查询 select * from t_student where s_name '%张%'; 这种like语句在ibatis中怎么写,他们现在的项目是用ibatis作为 ...