扫码称重上位机

2024-06-23 06:36
文章标签 扫码 称重 上位

本文主要是介绍扫码称重上位机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一 设计原型

二 后台代码


一 设计原型

模拟工具:

二 后台代码

主程序:

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; }}
}

这篇关于扫码称重上位机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086405

相关文章

开启青龙 Ninja 扫码功能失效后修改成手动填写CK功能【修正Ninja拉库地址】

国内:进入容器docker exec -it qinglong bash #获取ninjagit clone -b main https://ghproxy.com/https://github.com/wjx0428/ninja.git /ql/ninja#安装cd /ql/ninja/backend && pnpm install cp .env.example .env

上位机图像处理和嵌入式模块部署(mcu和swd接口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         最近学习mcu的时候,接触了不少调试器,这里面有daplink、st-link v2、j-link v9。虽然模块的形状可能不太一样,但是硬件的连线都差不多,都是mcu上的3.3v、clk、dio和gnd四根连线。出于好奇,今天花了点时间了解了一下debug port、sw

.NET 上位机通讯 NModbus4 的使用教程

使用nuget引入NModbus4 RTU 示例 1,串口通信示例 // // RTU SerialPort serialPort = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);serialPort.Open();ModbusMaster master = ModbusSerialMaster.CreateRtu(s

上位机图像处理和嵌入式模块部署(mcu之静态库生成和使用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         很多同学做了很长时间的mcu和keil开发,都认为keil工程中必须包含所有的源代码,其实这是不对的。如果有一些代码我们不希望别人看到,那么就可以把h文件和lib文件提供给别人,这样就避免了代码暴露的风险。甚至于说,我们也可以自己来实现dll的调用,动态加载算法插件,这都是

SerialChart上位机使用详解

SerialChart 上位机 软件分为三个区域:接收数据区,用于显示串口接收的数据。参数配置区,用于配置串口参数和显示参数。波形显示区,显示串口数据的波形。 在参数配置区写入串口号,波特率,通道波形颜色等,然后点击运行按钮即可。当串口接收到数据时,接收数据区和波形显示区都会有相应的显示。该软件可以同时显示多个通道的波形,直接按照格式添加通道名称和对应的波形颜色即可。 数据格式 每一帧

信捷PLC与上位机通讯-以太网通讯dll

应用场景 最近做项目,电气部分PLC选用了国产的信捷PLC,需要考虑上位机与信捷PLC通讯的问题,直接读写寄存器或线圈。 解决方案 信捷官网找资料,介绍的各种通讯方法,感觉都不是很好理解,而且也没办法直接拿来用。然后网上找教程也基本没有,csdn资源还要收费、收积分,而且下载了也不一定好用。最后还是好不容易在信捷的官网找到了这样一篇文章和资源。 链接:https://college.xin

开发扫码点餐小程序,让用餐更方便!

随着餐饮行业的数字化转型,扫码点餐小程序逐渐成为餐厅提升服务效率和顾客体验的重要工具。它不仅能够简化点单流程,还能帮助餐厅实现智能化管理。那么怎么搭建一个扫码点餐小程序呢? 作为餐饮商家来说,把握小程序的流量,小程序无需下载与关注,使用十分便利,投入开发后即可投入使用,对于商家来讲能够带来更多便利,节省运营成本,获取更多的市场红利。 需要注意的是,制作小程序需要一定的技术知识和开发经验,如

uniapp——微信扫码进入小程序、H5页面,获取数据

进入小程序 微信调起扫一扫,扫描一个二维码码进入小程序 【http://www.love.com/?id=20】 onLoad((options) => {if (options.q) {let url = decodeURIComponent(options.q)id.value = i.getUrlKey('id', url)getDetails()return}}) 进入H5 微

小程序餐饮点餐系统,扫码下单点菜,消费端+配送端+收银端+理端

目录 前言: 一、小程序功能有哪些 前端: 管理端:  二、实体店做小程序的好处 方便快捷的点餐和支付体验: 扩大店铺的曝光度和影响力: 优化顾客体验和服务质量: 降低成本和提高效率: 数据分析和精准营销: 便于管理和维护: 综上所述 前言: 助实体餐饮老板高效营销需求,有堂食,外卖,桌号,分销,骑手,连锁,外卖,平台打通。多功能部署账号。 一、小程序功能

基于FINS协议的OMRON PLC与上位机以太网通信的实现

基于FINS协议的OMRON PLC与上位机以太网通信的实现[多图] 0 引言 在当代工业自动化控制系统中,可编程逻辑控制器(PLC)作为常用的现场控制设备,上位机作为数据采集及人机界面的一种已经得到广泛运用。过去,在工程项目开发中,PLC和上位机间的通信常采用RS-232C或者RS-485串行方式,这种要领很难满足数据量大、通信距离远、实时性要求高的控制系统。随着