扫码称重上位机
目录
一 设计原型
二 后台代码
一 设计原型
模拟工具:
二 后台代码
主程序:
using System.IO.Ports;
using System.Net;
using System.Net.Sockets;
using System.Text;namespace 扫码称重上位机
{public partial class Form1 : Form{public Form1(){InitializeComponent();}SerialPort serialPort = new SerialPort();TcpClient tcpClient = new TcpClient();bool IsRun = false;NetworkStream GetStream = null;Datas datas = new Datas();bool isCode = false;bool isWeight = false;private void 参数设置ToolStripMenuItem_Click(object sender, EventArgs e){Parameter parameter = new Parameter();parameter.ShowDialog();}private void 运行ToolStripMenuItem_Click(object sender, EventArgs e){try{if (!serialPort.IsOpen){serialPort.Open();}if (!tcpClient.Connected){tcpClient.ConnectAsync(IPAddress.Parse("127.0.0.1"), 8899);GetStream = tcpClient.GetStream();}IsRun = true;}catch (Exception ex){MessageBox.Show(ex.Message);}}private void 停止ToolStripMenuItem_Click(object sender, EventArgs e){try{if (serialPort.IsOpen){serialPort.Close();}//if (tcpClient.Connected)//{// tcpClient.Close();//}//if (GetStream != null)//{// GetStream.Close();//}IsRun = false;}catch (Exception ex){MessageBox.Show(ex.Message);}}private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e){if (IsRun){MessageBox.Show("设备正在运行,请停止后在退出系统");return;}this.Close();System.Environment.Exit(0);}private void Form1_Load(object sender, EventArgs e){try{serialPort.PortName = "COM1";serialPort.Parity = Parity.None;serialPort.BaudRate = 115200;serialPort.StopBits = StopBits.One;serialPort.DataBits = 8;serialPort.DataReceived += SerialPort_DataReceived;}catch (Exception){}Task.Run(() =>{while (true){if (IsRun){try{if (GetStream != null){byte[] bytes = new byte[1024];GetStream.Read(bytes, 0, bytes.Length);datas.weight = Encoding.UTF8.GetString(bytes);isWeight = true;}if (isCode && isWeight){datas.Result = "OK";datas.DateTime = DateTime.Now.ToShortDateString();datas.Note = "测试数据";this.BeginInvoke(() =>{dataGridView1.Rows.Add(datas.Code, datas.weight, datas.Result, datas.DateTime, datas.Note);isCode = false;isWeight = false;});}}catch (Exception){}}}});}private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e){byte[] bytes = new byte[1024];serialPort.Read(bytes, 0, bytes.Length);datas.Code = Encoding.UTF8.GetString(bytes);isCode = true;}}public class Datas{public string Code { get; set; } = "";public string weight { get; set; } = "";public string Result { get; set; } = "";public string DateTime { get; set; } = "";public string Note { get; set; } = "";}
}
参数页面程序:
using System.IO.Ports;
using System.Text.Json;namespace 扫码称重上位机
{public partial class Parameter : Form{public Parameter(){InitializeComponent();}string path = Directory.GetCurrentDirectory() + "\\PM.json";private void Parameter_Load(object sender, EventArgs e){try{port.Items.AddRange(SerialPort.GetPortNames());object[] parityList = { Parity.None, Parity.Odd };ck.Items.AddRange(parityList);object[] arrs = { 115200, 9600 };bau.Items.AddRange(arrs);object[] stp = { StopBits.One, StopBits.None };stop.Items.AddRange(stp);object[] ds = { 6, 7, 8 };data.Items.AddRange(ds);ip.Items.Add("127.0.0.1");tcpport.Items.Add(9999);ParameterClass parameter = new ParameterClass();string str = File.ReadAllText(path);parameter = JsonSerializer.Deserialize<ParameterClass>(str);if (parameter != null){port.SelectedItem = parameter.Com;ck.SelectedItem = parameter.Parity;bau.SelectedItem = parameter.BaudRate;stop.SelectedItem = parameter.StopBits;data.SelectedItem = parameter.DataBits;ip.SelectedItem = parameter.IP;tcpport.SelectedItem = parameter.TCPPort;}}catch (Exception){}}private void SAVE_Click(object sender, EventArgs e){try{ParameterClass parameter = new ParameterClass();parameter.Com = port.Text;parameter.Parity = (Parity)ck.SelectedItem;parameter.BaudRate = int.Parse(bau.Text);parameter.StopBits = (StopBits)stop.SelectedItem;parameter.DataBits = int.Parse(data.Text);parameter.IP = ip.Text;parameter.TCPPort = int.Parse(tcpport.Text);File.WriteAllText(path, JsonSerializer.Serialize(parameter));}catch (Exception ex){MessageBox.Show(ex.Message);}}}public class ParameterClass{public string Com { get; set; }public Parity Parity { get; set; }public int BaudRate { get; set; }public StopBits StopBits { get; set; }public int DataBits { get; set; }public string IP { get; set; }public int TCPPort { get; set; }}
}
相关文章:
![](https://img-blog.csdnimg.cn/direct/0c1136f3b99e4b82a88d1e0f74b79ce0.png)
扫码称重上位机
目录 一 设计原型 二 后台代码 一 设计原型 模拟工具: 二 后台代码 主程序: using System.IO.Ports; using System.Net; using System.Net.Sockets; using System.Text;namespace 扫码称重上位机 {public partial class Form1 : Form{public Form1(){Initialize…...
![](https://www.ngui.cc/images/no-images.jpg)
操作系统入门 -- 进程的通信方式
操作系统入门 – 进程的通信方式 1.什么是进程通信 1.1 定义 进程通信就是在不同进程之间交换信息。在之前文章中可以了解到,进程之间相互独立,一般不可能互相访问。因此进程之间若需要通信,则需要一个所有进程都认可的共享空间࿰…...
![](https://img-blog.csdnimg.cn/direct/1f7777d5d9864693b7e7e533a8d3a86e.png)
Python读取wps中的DISPIMG图片格式
需求: 读出excel的图片内容,这放在微软三件套是很容易的,但是由于wps的固有格式,会出现奇怪的问题,只能读出:类似于 DISPIMG(“ID_2B83F9717AE1XXXX920xxxx644C80DB1”,1) 【该DISPIMG函数只有wps才拥有】 …...
![](https://www.ngui.cc/images/no-images.jpg)
elasticsearch的入门与实践
Elasticsearch是一个基于Lucene构建的开源搜索引擎。它提供了一个分布式、多租户能力的全文搜索引擎,具有HTTP web接口和无模式的JSON文档。以下是Elasticsearch的入门与实践的基本步骤: 入门 安装Elasticsearch: 从Elasticsearch官网下载对…...
![](https://img-blog.csdnimg.cn/direct/997d94270d3341e28284ef9546527e7e.png)
神经网络学习6-线性层
归一化用的较少 正则化用来解决过拟合,处理最优化问题,批量归一化加快速度 正则化(Regularization): 作用:正则化是一种用来防止过拟合的技术,通过向模型的损失函数中添加惩罚项,使…...
![](https://www.ngui.cc/images/no-images.jpg)
PHP框架详解 - CodeIgniter 框架
CodeIgniter 是一个成熟的轻量级 PHP 框架,专为小到中型的 Web 应用开发设计。它以其简洁、灵活和易于学习的特点而受到开发者的喜爱。 CodeIgniter 框架的特点包括: 轻量级:CodeIgniter 的核心非常小,加载速度快,适…...
![](https://img-blog.csdnimg.cn/direct/17fad06dba734aeca0ce9246ba68bcd1.jpeg)
奔驰EQS SUV升级原厂主动式氛围灯效果展示
以下是一篇关于奔驰 EQs 升级原厂主动氛围灯案例的宣传文案: 在汽车科技不断演进的今天,我们自豪地为您呈现奔驰 EQs 升级原厂主动氛围灯的精彩案例。 奔驰 EQs,作为豪华电动汽车的典范,其卓越品质与高端性能有目共睹。而此次升…...
![](https://img-blog.csdnimg.cn/direct/7d9a5d4de3dc4256b8e73dc107a7d0ac.png)
echarts Y轴展示时间片段,series data数据 也是时间片段,鼠标放上去 提示框显示对应的时间片段
功能要求 1、折线图,展示每天对应的一个时间片段 2、echarts Y轴展示时间片段,如:[00:00,03:00,05:15] 3、X轴展示日期,如:[xx年xx月xx日] 后端返回的数据结构,如 [{xAdate:"2024-06-15",data:…...
![](https://img-blog.csdnimg.cn/direct/dc35142ead6644429b33d29e4e27bf00.png)
20. mediasoup服务器的布署与使用
Mediasoup Demo部署 架构服务分析 服务端提供3个服务: 1.www服务,浏览器通过访问服务器目录获取客户端代码,通过V8引擎,启动底层WebRTC 2.nodejs提供websocket服务和http服务,用于信令交互 3.Mediasoup C提供的流媒体…...
![](https://img-blog.csdnimg.cn/direct/1858796749e64e8b9f563bbb1229655f.png)
【leetcode--同构字符串】
要求:判断两个字符串的形式是不是一致,即是不是AABC或者ABBBCC这种。 trick:使用set()结合zip()。 set()用法:用于创建一个不包含重复元素的集合 zip&#…...
![](https://www.ngui.cc/images/no-images.jpg)
shell expr功能详解
expr命令可以实现数值运算、数值或字符串比较、字符串匹配、字符串提取、字符串长度计算等功能。它还具个特殊功能,判断变量或参数是否为整数、是否为空、是否为0等。 1.字符串表达式 ------------------------- expr支持模式匹配和字符串操作。字符串表达式的优先…...
![](https://www.ngui.cc/images/no-images.jpg)
java继承Thead类和实现Runnable接口创建线程的区别
一、继承Thread类创建多线程 public class Demo{public static void main(String[] args) {MyThread thread new MyThread();thread.start();}} class MyThread extends Thread{Overridepublic void run() {//子线程执行的操作} }注意:开启子线程要调用start()方法…...
![](https://www.ngui.cc/images/no-images.jpg)
interface Ref<T = any> 这是什么写法?为什么写接口还需要加上<T = any>
问: export interface Ref<T any> { value: T [RefSymbol]: true } 这里既然是interface接口,为什么还有<T any>这是什么意思? 回答: <T any> 中的 <T> 表示这是一个泛型参数,它可以在接口中作为类型的占位符,在实际…...
![](https://www.ngui.cc/images/no-images.jpg)
深入探索 MongoDB GridFS:高效大文件存储与管理的全面指南
GridFS 是 MongoDB 的一个规范,用于存储和检索超过 BSON 文档大小限制(16MB)的文件。与传统的文件系统不同,GridFS 可以将一个大文件分割成多个小块,并存储在 MongoDB 的两个集合中:fs.files 和 fs.chunks。…...
![](https://img-blog.csdnimg.cn/direct/70fbd34b94db47ecaaf83df128a5949f.png)
基于CentOS Stream 9平台 安装/卸载 Redis7.0.15
已更正systemctl管理Redis服务问题 1. 官方下载地址 https://redis.io/downloads/#redis-downloads 1.1 下载或上传到/opt/coisini目录下: mkdir /opt/coisini cd /opt/coisini wget https://download.redis.io/releases/redis-7.0.15.tar.gz2. 解压 tar -zxvf re…...
![](https://img-blog.csdnimg.cn/direct/52aaa0f5b6c34fa5919952ad6ea9bca8.jpeg)
激励-保健理论和公平理论
激励-保健理论 herzberg的激励-保健理论中,保健因素是context of a job,激励因素是content of a job。 context of a job是受组织控制的因素,比如工作条件,基本工资,公司政策等,个人无法支配。content of…...
![](https://www.ngui.cc/images/no-images.jpg)
深入探索 Spring Boot 自定义启动画面
目录 引言什么是 Spring Boot 启动画面Spring Boot 默认启动画面为什么要自定义启动画面如何自定义 Spring Boot 启动画面 修改配置文件使用 Banner 接口通过图片实现启动画面ASCII 艺术画的应用 进阶:基于环境变量的动态 Banner多模块项目中的启动画面Spring Boot…...
![](https://img-blog.csdnimg.cn/direct/1723af0affd14eb8a10cd95aac71a73e.png)
Redis实战—Redis分布式锁
本博客为个人学习笔记,学习网站与详细见:黑马程序员Redis入门到实战 P56 - P63 目录 分布式锁介绍 基于Redis的分布式锁 Redis锁代码实现 修改业务代码 分布式锁误删问题 分布式锁原子性问题 Lua脚本 编写脚本 代码优化 总结 分布式锁介绍…...
![](https://img-blog.csdnimg.cn/direct/147e15b6c34249ab91b078f3b5c731de.png)
联想Y7000P 2023款拆机教程及升级内存教程
0.电脑参数介绍 联想Y7000P 2023电脑,笔者电脑CPU为i7-13700H,14核20线程;标配内存为三星的DDR5-5600MHz-8GB*2,由于电脑CPU限制,实际内存跑的频率为5200MHz; 2个内存插槽,2个固态硬盘插槽。每个内存插槽最…...
![](https://www.ngui.cc/images/no-images.jpg)
开发常用依赖
目录 代理对象 Swagger Web 单元测试 MybatisPlus Lombok Mysql SpringBoot Jdk SpringCloud 数据库驱动包 hutool工具 配置仓库 通用库 maven插件 nacos注册中心 OpenFeign Spring AMQP JSON转换器 Redis 邮箱验证 Redisson分布式锁 客户端 代理对象 &l…...
![](https://www.ngui.cc/images/no-images.jpg)
【区分vue2和vue3下的element UI Empty 空状态组件,分别详细介绍属性,事件,方法如何使用,并举例】
在 Element UI(为 Vue 2 设计)和 Element Plus(为 Vue 3 设计)中,Empty(空状态)组件通常用于在数据为空或没有内容时向用户展示一种占位提示。然而,需要注意的是,Element…...
![](https://img-blog.csdnimg.cn/direct/236aaab50e1d4e349dfd97387ae0de1f.png)
【AI作曲】毁掉音乐?早该来了!一个网易音乐人对于 AI 大模型音乐创作的思辨
引言:AI在创造还是毁掉音乐? 正如当初 midjourney 和 StableDiffusion 在绘画圈掀起的风波一样,suno 和 各大音乐大模型的来临,其实早该来了。 AI 在毁掉绘画?或者毁掉音乐? 没错,但也错了。…...
![](https://img-blog.csdnimg.cn/direct/ed41568049e44214b5a0f00d5cb3efe1.png)
RabbitMQ实践——最大长度队列
大纲 抛弃消息创建最大长度队列绑定实验 转存死信创建死信队列创建可重写Routing key的最大长度队列创建绑定关系实验 在一些业务场景中,我们只需要保存最近的若干条消息,这个时候我们就可以使用“最大长度队列”来满足这个需求。该队列在收到消息后&…...
![](https://img-blog.csdnimg.cn/direct/1e2715c672fc44d5b490b0c842c12d20.png)
【pytorch02】手写数字问题引入
1.数据集 现实生活中遇到的问题 车牌识别身份证号码识别快递单的识别 都会涉及到数字识别 MNIST(收集了很多人手写的0到9数字的图片) 每个数字拥有7000个图像train/test splitting:60k vs 10k 图片大小28 28 数据集划分成训练集和测试集合的意义…...
![](https://img-blog.csdnimg.cn/direct/dedae3b879424381ac3d9997f3142a77.png)
【查看显卡信息】——Ubuntu和windows
1、VMware虚拟机 VMware虚拟机上不能使用CUDA/CUDNN,也安装不了显卡驱动 查看显卡信息: lspci | grep -i vga 不会显示显卡信息,只会输出VMware SVGA II Adapter,表示这是一个虚拟机,无法安装和使用显卡驱动 使用上…...
![](https://www.ngui.cc/images/no-images.jpg)
在 RK3568 上构建 Android 11 模块:深入解析 m、mm、mmm 编译命令
目录 Android 编译系统概述编译命令简介 环境准备使用 m、mm、mmm 编译模块编译整个源码树编译单个模块编译指定目录下的模块 高级应用并行编译清理编译结果编译特定配置 在 Android 开发中,特别是在 RK3568 这样的高性能平台上,有效地编译和管理模块是确…...
![](https://img-blog.csdnimg.cn/img_convert/d691d039ec95e20e34718ae23ea5f75b.png)
实战|YOLOv10 自定义目标检测
引言 YOLOv10[1] 概述和使用自定义数据训练模型 概述 由清华大学的研究团队基于 Ultralytics Python 包研发的 YOLOv10,通过优化模型结构并去除非极大值抑制(NMS)环节,提出了一种创新的实时目标检测技术。这些改进不仅实现了行业领…...
![](https://www.ngui.cc/images/no-images.jpg)
TTS前端原理学习 chatgpt生成答案
第一篇文章学习 小绿鲸阅读器 通篇使用chatgpt生成答案 文章: https://arxiv.org/pdf/2012.15404 1. 文章概述 本文提出了一种基于Distilled BERT模型的统一普通话文本到语音前端模块。该模型通过预训练的中文BERT作为文本编码器,并采用多任务学习技术…...
![](https://www.ngui.cc/images/no-images.jpg)
AI“音乐创作”横行给音乐家带来哪些隐忧
近日,200多名国际乐坛知名音乐人联署公开信,呼吁AI开发者、科技公司、平台和数字音乐服务商停止使用人工智能(AI)来侵犯并贬低人类艺术家的权利,具体诉求包括,停止使用AI侵犯及贬低人类艺术家的权利,要求…...
![](https://www.ngui.cc/images/no-images.jpg)
SolidityFoundry 安全审计测试 Delegatecall漏洞2
名称: Delegatecall漏洞2 https://github.com/XuHugo/solidityproject/tree/master/vulnerable-defi 描述: 我们已经了解了delegatecall 一个基础的漏洞——所有者操纵漏洞,这里就不再重复之前的基础知识了,不了解或者遗忘的可…...
![](/images/no-images.jpg)
周口网站制作公司哪家好/河南百度关键词优化排名软件
package.json 非官方字段集合 package.json 官方字段请参考 https://docs.npmjs.com/files/package.json。下面介绍的是非官方字段,也就是各种工具定义的相关字段。 1. yarn 相关字段 yarn: 类似 npm 的依赖管理工具,但 yarn 缓存了每个下载过的包&am…...
![](/images/no-images.jpg)
公司建设网站算入什么会计科目/云南网站建设百度
免费邮箱容量太小不适合办公,邮件刚破千就提示邮箱容量已满,有没有什么好办法可以解决这个问题呢?当然有的呀,今天就告诉大家邮箱容量满了如何解决?如何注册超大容量个人邮箱 邮箱容量满了如何解决? 我们…...
![](http://f.hiphotos.bdimg.com/album/s%3D550%3Bq%3D90%3Bc%3Dxiangce%2C100%2C100/sign=1723011a49fbfbedd859367a48cb860b/a50f4bfbfbedab644ec3dde5f536afc379311e65.jpg?referer=4a848d2d1d30e92496b3a9015a3c&x=.jpg)
建设旅游网站的价值/网站维护一般都是维护什么
近期项目发现,在使用release发布项目包,图片找不到了,而debug下面又有图片。 后来发现,原来图片被另外一个组件嵌入了。 下面例子展示了组件嵌入和不嵌入图片的区别 <?xml version”1.0″ encoding”utf-8″?> <s:Appl…...
![](/images/no-images.jpg)
学外贸英语的网站/seo概念的理解
在聚合操作中,需要指定键或分组方式,以及指定如何转换一列或多列数据的聚合函数。s除了处理任意类型的值之外,Spark还可以创建以下分组类型:最简单的分组通过在select语句中执行聚合来汇总整个DataFrame“group by”指定一个或者多个key也可以指定一个或…...
win2008 iis 新建网站/提高工作效率的重要性
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的…...
![](/images/no-images.jpg)
专题页是什么/泰州seo外包公司
本系列笔记主要是回顾了一下PHP中和日期操作相关的函数在PHP中设置时区有三种方法:1、直接在php的配置文件中修改以mac系统为例,我使用的是mamp pro 集成环境,所以我就说明了一下如何修改这种环境下的配置文件。a) 打开终端,输入 …...