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

 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)并向串口发送数据的更多相关文章

  1. java中将汉字转换成16进制

    技术交流群:233513714 /** * 将汉字转换车16进制字符串 * @param str * @return st */ public static String enUnicode(Stri ...

  2. Linux c字符串中不可打印字符转换成16进制

    本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...

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

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

  4. 运用C语言将图片转换成16进制的字符串(base64)

    最近在写手机端的性能测试脚本的时候,发现手机在上传图片数据时,先将图片转换成一堆16进制的字符,将字符传输过去,服务器再将字符解码成图片 我们在loadrunner中测试时,就需要用C语言将图片编码. ...

  5. Replication--将LSN转换成16进制

    在复制中经常会使用到16进制的LSN,但在日志fn_dblog中的LSN是数字形式,于是从网上找到以下转换函数CREATE FUNCTION dbo.fn_convertnumericlsntobin ...

  6. rgb值转换成16进制

    由于jQuery获取css中的background有时候是rgb值,所以往往需要一个转换函数. 以前觉得难,还写个博客记录,现在觉得好容易. let testColor = "rgb(20, ...

  7. js方法实现rgb颜色转换成16进制格式的代码的方法

    原文地址:http://www.cnblogs.com/vaal-water/archive/2013/04/08/3008880.html 自己试过很好用 function zero_fill_he ...

  8. java-pfx文件转换成16进制内容

    public static void main(String[] args) throws Exception { String path = "D://111.pfx"; Inp ...

  9. 本大神教你用PHP把文本内容转换成16进制数字,进行加密

    <?php $a="杨波"; $b = bin2hex($a); echo $a."<br />"; $c = pack("H*&q ...

随机推荐

  1. SevenZipShaper压缩类

    //7z下载或者自己去找个地址 nurget,github之类的 链接:https://pan.baidu.com/s/1__dPu7X5b8Xr_ej9ya7Kdg 密码:q8nwusing Sev ...

  2. docker下安装tensorflow

    一,查找镜像 root@xushi:~# docker search tensorflow NAME DESCRIPTION STARS OFFICIAL AUTOMATED tensorflow/t ...

  3. SVN简明教程

    SVN简明教程 Posted on 2010-09-07 17:34 幻海蓝梦 阅读(7196) 评论(0)  编辑  收藏 所属分类: 版本管理  http://www.emsym.com/blog ...

  4. The Django Book(自定义ModelAdmi类)

    默认的,管理界面下显示的东西只是 python2:def __unicode__(self): 和 python3:def __str__(self): 中返回的字段内容 想要让它更加的多元化的话 c ...

  5. CRC-32的原理和实现

    /* crc32.c -- compute the CRC-32 of a data stream * Copyright (C) 1995-2002 Mark Adler * For conditi ...

  6. mybatis学习四 mybatis的三种查询方式

    <select id="selAll" resultType="com.caopeng.pojo.Flower"> select * from fl ...

  7. python文件打包

    python文件打包 先安装 pip3 install --upgrade pyinstaller 进入到文件的当前目录 ,在命令行中输入: pyinstaller -F -w[文件名].py 其中- ...

  8. html--笔记day03

    html--笔记day03 1.结构标记 1.<header>元素 <header></header> ==> <div id="header ...

  9. Java 读取HDFS文件系统

    最近有个需求,计算用户画像. 系统大概有800W的用户量,算每个用户的一些数据. 数据量比较大,算用hive还是毫无压力的,但是写的oracle,在给出数据给前端,就比较难受了. 然后换了种解决方法: ...

  10. $.cookie is not a function的错误原因

    网上说的原因是:“手残导入2次jquery库文件 ” 是的,就是这个原因.引入了两次jquery.js