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 ...
随机推荐
- shell for if
#!/bin/bash ..} do ];then j="${i}" else j="${i}" fi echo $j >> venn.log ec ...
- 2019.01.20 bzoj2238: Mst(kruskal+树链剖分)
传送门 树链剖分菜题. 题意简述:给一个无向图,边有边权,每次询问删一条边(对后面的询问无影响)之后的最小生成树. 思路: 先跑一次kruskalkruskalkruskal并把跑出来的最小生成树给链 ...
- ThinkPHP 二维码生成
请求获取并展示二维码 <img src="<?php echo U('createCode?zsnumber='.$time.$kcname['id'].$stuInfo['id ...
- 学习刘伟择优excel视频
for each 字符串函数: 默认参数,在子函数中必须要有默认值. 在工作表输入时,F9的功能是把区域编程数组,shift+ctrl+enter功能是把数组分开填入单元格. 创建数组: 1. 2. ...
- vue动态路由
我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件.例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染.能够提供参数的路由即为动态路由第一步:定义组件 c ...
- ubuntu server 在 virtualbox中安装增强包
原文链接:http://luzl.iteye.com/blog/1010597 首先说下增强包能干什么,在desktop下面有了增强包桌面就能变大了,在server下也是类似,那个黑屏就能变大了,还有 ...
- 20155205 2016-2017-2 《Java程序设计》第2周学习总结
20155205 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 变量 变量在命名时有一些规则,它不可以使用数字作为开头,也不可以使用特殊字符. 对常用忽略符 ...
- silverlight 定时器 System.Windows.Threading.DispatcherTimer
声明 System.Windows.Threading.DispatcherTimer _MessageControler; //刷新 _MessageControler = new System.W ...
- 15-BOM
BOM的介绍 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的 ...
- 批处理FINDSTR正则表达式用法实例分析
1.findstr . 2.txt 或 Findstr "." 2.txt 从文件2.txt中查找任意字符,不包括空字符或空行 2.findstr .* 2.txt 或 finds ...