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 ...
随机推荐
- 什么时候出现死锁,如何解决?mysql 引擎? 多个like or 查询sql如何优化?什么是常量池?for条件执行顺序
1. 什么时候出现死锁,如何解决?mysql 引擎? 多个like or 查询sql如何优化? 资源竞争导致死锁,比如A B 同时操作两条记录,并等待对方释放锁. 优化sql, 加缓存,主从(如读写分 ...
- 提升HTML5的性能体验系列之一 避免切页白屏
窗体切换白屏的现实问题 HTML5的性能比原生差很多,比如切页时白屏.列表滚动不流畅.下拉刷新和上拉翻页卡顿.在低端Android手机上,很多原生App常用的功能和体验效果都很难使用HTML5技术模拟 ...
- SWE_Browser编译
QRD从android4.4开始使用SWE_Browser,android原始代码中不再提供Browser.最近在做一个QRD8916_113517 CMCC入库版本,需要使用SWE_Browser. ...
- jrebel
jrebel 编辑 JRebel是一套JavaEE开发工具.JRebel允许开发团队在有限的时间内完成更多的任务修正更多的问题,发布更高质量的软件产品. JRebel是收费软件,用户可以在JReb ...
- Windows-universal-samples学习笔记系列三:Navigation
Navigation Back Button Master/detail Navigation menu (XAML) Pivot Projection XHR, handling navigatio ...
- 【WebService】WebService基础知识(一)
WebService是什么? 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言.跨平台的规范(抽象) 3. 多个跨平台.跨语言的应用间通信整合的方案(实际) ...
- 9月list
开学了,我已经是大三的老学姐了,难受! 哇,时间过得好快啊,感觉自己快毕业了,肿么办!!! 9月了,快一年了,其实很多东西都变了,比如你. 9月4日的list:
- FMS4.5( Adobe Flash Media Server4.5)流媒体服务器搭建
下载FMS4.5 下载地址:http://pan.baidu.com/s/1pJLi5Ur(已更新) FMS是用于用户之间相互通讯的新平台.它集成了Flash多媒体交互的特性,又添加了实时音频和实时数 ...
- 2019.01.17 bzoj1854: [Scoi2010]游戏(二分图匹配)
传送门 二分图匹配菜题. 题意:nnn个二元组(xi,yi)(x_i,y_i)(xi,yi),每个二元组可以选一个数总共nnn个数aia_iai,问将aia_iai排好序之后从111开始最多可 ...
- hadoop学习笔记(三):hdfs体系结构和读写流程(转)
原文:https://www.cnblogs.com/codeOfLife/p/5375120.html 目录 HDFS 是做什么的 HDFS 从何而来 为什么选择 HDFS 存储数据 HDFS 如何 ...