C#使用TextBox作数据输入方法
作者:怪都督 发布时间:2023-11-16 22:26:14
标签:C#,TextBox,输入
笔者最近需要上位机与下位机进行数据交互,在广泛参考大佬的资料后,较为完善地使用Textbox控件进行数据输入的功能。
程序段主要功能:实现输入数据并转换成byte数组再通过串口发送至下位机。
读取TextBox控件中数据并发送
private void Botton_Float_Click(object sender, EventArgs e)
{
if (button1.Text == "关闭串口")
{
if(TextBox_Tem_Cal.Text != String .Empty) //判断数据输入框是否为空
{
HexMath CRC = new HexMath();
Byte[] buffer = new Byte[6];
float tem_cal_float = float.Parse(TextBox_Tem_Cal.Text);
Byte[] float_byte_array = new Byte[4];
float_byte_array = FloatToBytes(tem_cal_float);
buffer[0] = float_byte_array[0];
buffer[1] = float_byte_array[1];
buffer[2] = float_byte_array[2];
buffer[3 ] = float_byte_array[3];
CRC.CalculateCrc16(buffer, out buffer[5], out buffer[4]);
serialPort1.Write(buffer, 0, 6);
}
else
{
MessageBox.Show("校准数据不能为空");
}
}
else
{
MessageBox.Show("串口未打开");
}
}
限制TextBox控件输入数据
private void TextBox_Tem_Cal_KeyPress(object sender, KeyPressEventArgs e)//在TextBox中按下按键时触发事件,保证只能输入数字
{
//判断按键是不是要输入的类型。
if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar != 8 && (int)e.KeyChar != 46)
e.Handled = true;
//小数点的处理。
if ((int)e.KeyChar == 46) //小数点
{
if (TextBox_Tem_Cal.Text.Length <= 0)
e.Handled = true; //小数点不能在第一位
else
{
float f;
float oldf;
bool b1 = false, b2 = false;
b1 = float.TryParse(TextBox_Tem_Cal.Text, out oldf);
b2 = float.TryParse(TextBox_Tem_Cal.Text + e.KeyChar.ToString(), out f);
if (b2 == false)
{
if (b1 == true)
e.Handled = true;
else
e.Handled = false;
}
}
}
}
Float 与 byte数组 互转
private static byte[] FloatToBytes(float data)
{
unsafe
{
byte* pdata = (byte*)&data;
byte[] byteArray = new byte[sizeof(float)];
for (int i = 0; i < sizeof(float); ++i)
byteArray[i] = *pdata++;
return byteArray;
}
}
private static float BytesToFloat(byte[] data)
{
unsafe
{
float a = 0.0F;
byte i;
byte[] x = data;
void* pf;
fixed (byte* px = x)
{
pf = &a;
for (i = 0; i < data.Length; i++)
{
*((byte*)pf + i) = *(px + i);
}
}
return a;
}
}
程序参考:
TextBox输入限制
C# byte与float转换
来源:https://blog.csdn.net/weixin_44625313/article/details/114329916


猜你喜欢
- 本篇概览在检测人脸数量、位置、性别、口罩等场景时,可以考虑使用百度开放平台提供的web接口,一个web请求就能完成检测得到结果,本篇记录了从
- 1.Hibernate中的多表查询 1.1SQL中的多表查询【交叉连接】select * from A,B;【内连接】显示内连接:
- 关于刮刮卡的实现效果不需要做太多解释,特别是在电商APP中,每当做活动的时候都会有它的身影存在,趁着美好周末,来实现下这个效果,也算是对零
- 一、Jackson简介说明:本篇讲的是Jackson的详细用法,Jackson工具类在文章最后,直接复制粘贴即可使用。 Jackson是公司
- 本文以实例形式展示了C#判等对象是否相等的常用方法,非常实用,可供大家参考借鉴之用。具体分析如下:一、判断相等的3个方法1.实例方法publ
- 问题onClick事件是Android开发中最常见的事件。比如,一个submitButton,功能是点击之后会提交一个订单,则一般代码如下,
- 一、java端首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。webservice的接口代码:
- Consul是什么Consul是一个基于HTTP的服务发现工具,用于配置和管理系统和服务之间的依赖关系。它提供了一个简单的方式来注册、发现和
- 首先来说一下本文中例子所要实现的功能:基于ProtoBuf序列化对象使用Socket实现时时通信数据包的编码和解码下面来看具体的步骤:一、U
- java函数中的传值和传引用问题一直是个比较“邪门”的问题,其实java函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一
- 一 为什么要使用线程池对于操作系统而言,创建一个线程的代价是十分昂贵的, 需要给它分配内存、列入调度,同时在线程切换时要执行内存换页,清空
- 单一职责原则:一个类,只有一个引起它变化的原因。为什么需要单一职责原则?如果一个类有多个原因要去修改它,那么修改一个功能时,可能会让其他功能
- 本文实例讲述了退出Android程序时清除所有activity的方法。分享给大家供大家参考,具体如下:在一个项目中,要退出android程序
- 本文实例讲述了在类库或winform项目中打开另一个winform项目窗体的方法。分享给大家供大家参考。具体如下:一、问题:假设类库或win
- 本文实例为大家分享了Android seekbar实现可拖动进度条的具体代码,供大家参考,具体内容如下SeekBar通过滑块的位置来标识数值
- 目录界面布局分析ListView 简介编码实现用到的组件结语:界面布局分析本篇要实现的列表如上图所示。我们拿到界面设计稿之后,在 UI 开发
- 本文我们要谈的七大原则,即:单一职责,里氏替换,迪米特法则,依赖倒转,接口隔离,合成/聚合原则,开放-封闭 。1.
- 先上代码新建一个Thread,代码如下:package com.thread.test;public class MyThread exte
- 多级缓存在实际开发项目,为了减少数据库的访问压力,都会将数据缓存到内存中比如:Redis(分布式缓存)、EHCHE(JVM内置缓存).例如在
- ListView如何实现简单列表,供大家参考,具体内容如下效果图:啥也没干的ListView张这样:fry.Activity01packag