TAS-10-428 c#驱动编程笔记

2023-10-12 19:30
文章标签 c# 驱动 笔记 编程 .net 428 tas

本文主要是介绍TAS-10-428 c#驱动编程笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

厂家没提供范例 我将自己写的共享出来 将模块设置到TCP-SERVER模式下
在这里插入图片描述
每一页都要 点读取参数
在这里插入图片描述
在这里插入图片描述

开关 继电器1的代码 在VS2013下测试通过

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;namespace WindowsFormsApplication1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}/****************************************************************************************/public byte[] StringToHex(string sendData){//string转Hexstring[] strArray = sendData.Split(new char[] { ',', ',', '\r', '\n', ' ', '\t' });int decNum = 0;int i = 0;byte[] sendBuffer = new byte[strArray.Length];  //发送数据缓冲区foreach (string str in strArray){try{decNum = Convert.ToInt16(str, 16);sendBuffer[i] = Convert.ToByte(decNum);i++;}catch{//MessageBox.Show("字节越界,请逐个字节输入!", "Error");                          }}return sendBuffer;}/****************************************************************************************/public string HexToString(byte[] data){//Hex转StringStringBuilder sb = new StringBuilder(data.Length * 3);foreach (byte b in data){sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));}return sb.ToString().ToUpper();}//TCP Client 接收 *************************************************************************private void TCP_Receive(object obj){Control.CheckForIllegalCrossThreadCalls = false;Socket socket_R = tcpClient.Client;NetworkStream ns = tcpClient.GetStream();int MaxLen = socket_R.ReceiveBufferSize;while (true){//System.Threading.Thread.Sleep(1);if (ns.CanRead){string s = Get_TCP_Data(socket_R, 100, MaxLen);if (s.Length != 0){RX_Pack++;string display = "\r\nReceive:" + s + "\r\n";textBox3.Text += display;this.textBox3.SelectionStart = this.textBox3.Text.Length;this.textBox3.ScrollToCaret();label6.Text = RX_Pack.ToString();label8.Text = RX_Byte.ToString();}}}}// 获取TCP数据 ****************************************************************************public string Get_TCP_Data(Socket socket, int timeout, int max_len){string result = string.Empty;socket.ReceiveTimeout = timeout;byte[] buffer = new byte[max_len];List<Byte> data = new List<Byte>();data.Clear();int length = 0;try{while ((length = socket.Receive(buffer)) > 0){for (int i = 0; i < length; i++){data.Add(buffer[i]);}break;}}catch{}if ((data != null) && (data.Count > 0)){RX_Byte += data.Count;result = HexToString(data.ToArray());}return result;}TcpClient tcpClient;Thread TCP_Rev_T;int RX_Pack = 0;int RX_Byte = 0;private void button1_Click(object sender, EventArgs e){if (button1.Text == "连接"){tcpClient = new TcpClient();string ServerIP = "192.168.0.80";string ServerPort = "10123";button1.Text = "等待连接";try{var result = tcpClient.BeginConnect(IPAddress.Parse(ServerIP), Int32.Parse(ServerPort), null, null);var sucess = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(3));if (sucess){tcpClient.NoDelay = true;TCP_Rev_T = new Thread(TCP_Receive);TCP_Rev_T.Start();button1.Text = "断开";}else{tcpClient.Close();textBox3.Text = "连接超时,未连接到指定服务器,请检查连接";button1.Text = "连接";}button1.Enabled = true;}catch{MessageBox.Show("连接错误,请检查服务器IP与端口号");button1.Text = "连接";button1.Enabled = true;}}}private void button开继电器1_Click(object sender, EventArgs e){string TCP_Send = "11 05 00 00 FF 00 8E AA";//读取用户的输入NetworkStream ns = tcpClient.GetStream();if (ns.CanWrite){Byte[] sendBytes = null;               sendBytes = StringToHex(TCP_Send);ns.Write(sendBytes, 0, sendBytes.Length);}}private void button关继电器1_Click(object sender, EventArgs e){string TCP_Send = "11 05 00 00 00 00 CF 5A ";//读取用户的输入NetworkStream ns = tcpClient.GetStream();if (ns.CanWrite){Byte[] sendBytes = null;sendBytes = StringToHex(TCP_Send);ns.Write(sendBytes, 0, sendBytes.Length);}}}
}

这篇关于TAS-10-428 c#驱动编程笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

C# Where 泛型约束的实现

《C#Where泛型约束的实现》本文主要介绍了C#Where泛型约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用的对象约束分类where T : structwhere T : classwhere T : ne

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代