
c# 非控件常用操作
文章平均质量分 73
主要为c#编写的,基于vs平台的相关工作长需要的操作
Yyuanyuxin
可关注公众号“毛线杂货铺”或淘bao店铺ID:122344852,订阅文章或技术更优惠
展开
-
c#-出现类型初始值设定项引发异常的解决方案
我们可以找到应发异常的类,例如我上面类为YY_Model.DefaultConfig。打开这个类文件,加一个断点,一行行运行,到哪里突然跳出该文件,则可详细查看附近代码。当出现该问题时,通常摸不着头脑,无法定位到该问题所在行。原创 2024-10-09 09:07:05 · 1148 阅读 · 0 评论 -
c#有关TCP和UDP通信的简单粗暴答疑
近期由于工作需要,对TCP和UDP通信都有涉及,在不断踩坑和学习探索中,也有了一些粗微的领悟,写出来和大家分享讨论。有关TCP的帮助类,后期再写一篇文章。ps:本文只是简单粗暴不使用专用术语来解决一些简单的疑问,具体有兴趣可自行深入学习。1.有关分包先把总结放上:UDP.会自动分包,如果一个数据包超过1472,则分多次触发接收事件,每次最多传递1472个字节。tcp无需拼包,会一次性传递过来,但是数据包越大,触发接收事件所需的时间更多。具体缘由可查看如下两个网址:https://blog.c原创 2022-04-07 16:07:58 · 2747 阅读 · 0 评论 -
c#禁止同时打开两个相同的程序
有时候运行可通信软件时,如果打开两个软件,通信有可能会造成混乱,为了避免这样的情况,我们可以在启动软件前先检测是否打开了软件,若打开,则弹出提示并关闭。代码块: Process[] pro = Process.GetProcessesByName("CarParkInspectApp"); if (pro == null || pro.Length >= 2) { MessageBox.Show("软件已打开,请勿重复原创 2021-07-23 16:23:52 · 1161 阅读 · 0 评论 -
c#实现Udp通信(四)--UPD大数据量接收(异步接收)
之前困恼了很久的问题,终于解决了,项目要求使用Upd传输,128000的采样率 ,每次一个通道2000个数据,一个数据用3个字节传输,共8通道,最后两字节验证码,最后计算转成double值,用曲线显示并保存文件。则:128000/2000=62(次)1/62≈0.016(s)=16(ms)200038+2=48002(字节)相当于循环16ms传输48002个字节。在之前的项目中,没有解决,让c++的同事写的插件,空闲时还是要自己研究下哈,但是资料真的好难找,最后自己摸索,实现了,下面把帮助类贴原创 2021-04-27 17:36:35 · 10187 阅读 · 5 评论 -
c#--文件读写、删除及追加内容的几种方法
目录简单string的读写1.写入:2.读内容:3.追加内容:4.修改某一行并追加内容二进制读写:1.读2.写文件删除简单string的读写1.写入:StreamWriter sw = File.AppendText(txtPath); //保存到指定路径sw.Write(txt);sw.Flush();sw.Close();2.读内容: string strContent = File.ReadAllText(path);3.追加内容:无文件会自动生成文件using (FileS原创 2020-12-02 16:30:04 · 5145 阅读 · 0 评论 -
c#实现Udp通信(三)--遇到的问题归纳
以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.这个1500字节被称为链路层的MTU(最大传输单元).但这并不是指链路层的长度被限制在1500字节,其实这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节.所以,事实上,这个1500字节就是网络层IP数据报的长度限制.因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节.而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据报的.又因为UDP数据原创 2020-11-17 08:57:29 · 1000 阅读 · 0 评论 -
C#实现Upd通信(二)--socket通信配合订阅者模式广播及收发信息
上一节讲的是简单的socket通信,为了提高复用率,整理为一个帮助类,并加入订阅者模式(想要接受通知的类或者界面只要注册了该类,则无需通过一层层传递的方式传递数据,具体下次写一篇具体说明),方便本机电脑广播的方式发生信息给多台用户,并在多个界面能够接到远程设备返回的数据。帮助类代码:private static SocketHelper instants;public static SocketHelper Instants{ get { if (instants =原创 2020-10-23 16:21:15 · 1016 阅读 · 0 评论 -
C#实现Upd通信(一)--最简单的socket通信
工作需要用到UPD和设备通信,于是又开始学习这块的知识,首先,学习一个简单的入门程序。界面如下:先初始化后,可以给本机发送信息,随时接收初始化:Socket server;public void InitSocket(){ server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); server.Bind(new IPEndPoint(IPAddress.Parse(t原创 2020-10-20 17:56:32 · 1400 阅读 · 0 评论 -
c#--导出excel或txt文件
使用:List<string> columns = new List<string> {"时间","设备编号","计数器","线号","点号"};var name= DateTime.Now.ToString("yyyy-MM-dd HH mm ss") + " " + cb_type.Text + " " + cb_wave.Text + " " + cb_fre.Text;SaveFileDialog saveFileDialog = new SaveFileDialog(原创 2020-09-28 10:23:29 · 1280 阅读 · 0 评论 -
c#串口通信(四)--串口数据丢失或分段原因及串口事件的说明
最近在软件调试中,发现数据一长就经常丢失数据,所以耐下心了解了一些原理,用较为简单的理解方式记录下来。题外话:一般来说,半双工通信需要添加一个超时时间,当超过这个时间后,就判定接收失败了,之前的缓存数据也要清空。个人选择定时器的方式,至于如何计算超时,公式如下:数据所需时常=总数据长度10/波特率。对于我的数据,最长为1237字节,波特率选择9600,则需要耗时123710/9600=1.28854…,基本为1.3秒,所以我设置了串口的超时时间为3秒。发送后如果3秒没接收到数据,就算超时,直接发下原创 2020-08-19 13:50:52 · 14707 阅读 · 5 评论 -
C#--主程序启动EXE插件,并使用SendMessage进行进程间通信
[DllImport("User32.dll", EntryPoint = "SendMessage")] private static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam); [DllImport("User32.dll", EntryPoint = "FindWindow")] private static extern int Fi原创 2020-06-17 09:07:44 · 1923 阅读 · 0 评论 -
Windows常用消息大全
表A-1 Windows消息分布消息范围说 明0 ~ WM_USER – 1系统消息WM_USER ~ 0x7FFF自定义窗口类整数消息WM_APP ~ 0xBFFF应用程序自定义消息0xC000 ~ 0xFFFF应用程序字符串消息> 0xFFFF为以后系统应用保留表A-2 常用Windows消息消息名称...转载 2020-06-15 17:33:39 · 361 阅读 · 0 评论 -
c#--无线通信,实现简单有人透传云通信
学习文档:http://cloud.usr.cn/Public/sdk/dll/#USR-Init-%E5%88%9D%E5%A7%8B%E5%8C%96%E6%8E%A5%E5%8F%A3学习过串口通信后,在连线不方便或者距离比较远的使用场景,会用到4G模块。本文使用的是有人物联网旗下的4G透传模块(新版本) WH目录1.配置有人透传云管理系统2.在VS项目上连接云关系系统(1)连接云管理系统:(2)断开云管理系统:(3)订阅设备:(4)与设备通信:3.完整代码例子:1.配置有人透传云管理系统一原创 2020-06-10 16:55:56 · 2767 阅读 · 0 评论 -
c# 多线程中将函数作为方法传递(多串口并发,单串口保证一发一收机制)
一.首先简单说明多线程。1.不带参数且无返回值。public void show(){ MessageBox.Show("ss");} Thread thread = new Thread(new ThreadStart(show)); thread.Start();2.带一个参数且无返回值。public void SendGain(float gain){ RS485Helper.SetGain(this, gain);}使用的时候: Thread threa原创 2020-06-09 11:48:07 · 2265 阅读 · 0 评论 -
c#串口通信(三)--半双工通信的数据接收
上文提到了如何简单发送和接收串口数据。在实际操作中,对于半双工通信(一问一答),如果需要一次发送多个指令,用DataReceived事件判断是否接收完毕,再发送下一条数据,不是很好的选择。个人采用如下的方式,总的来说就是发送指令之后,用循环判断是否完成接收,未完成就延时一段时间再去判断,直到接收完成后再执行下一条指令:先写好单条一问一答的函数:有关接收事件GetCallbackData()代码如下:private byte[] DataBuffer = new byte[1000];priva原创 2020-05-19 16:45:33 · 2816 阅读 · 0 评论 -
SQLite查询报错--该字符串未被识别为有效的 DateTime 错误
数据库数据正常,同样的查询语句,在sqlite的可视化工具中查询不报错,但是在VS中查询的时候,报该字符串未被识别为有效的 DateTime 错误。解决方案,在保存到数据库的时候,处理时间:时间.ToString("s")则数据库显示为:再去查询不报错。...原创 2020-05-19 16:14:32 · 1055 阅读 · 0 评论 -
c#有关多线程导致的常见问题--从不是创建控件的线程访问、不能调用invoke
System.InvalidOperationException:“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。”原创 2020-05-19 15:43:01 · 829 阅读 · 0 评论 -
c#串口通信(二)--通信协议的发送及数据解析
在简单的认识及使用串口通信之后,在实际应用中应该是配合硬件,和负责硬件通信的同事沟通好通信协议,来进行设备的控制及数据获取。常用的串行通信协议有TTL电平(普通MCU芯片输出的串口电平)、RS232(工业上常用的串口标准)及RS485(串行总线标准,常用语通信距离为几十米到上千米时)等。本文采用的是RS485,为半双工工作方式。下面是一个简单的获取设备信息的例子。通信协议如下:数据包格式:包头(2byte)命令码(1byte)包长(2byte)数据/状态(Nbyte)异或校验(1b原创 2020-05-11 16:43:56 · 10879 阅读 · 8 评论 -
c#串口通信初接触
1.什么是串口及串口通信?串口全称串行接口,是采用串行通信方式的扩展接口。通俗的来说,例如我们电脑等设备用的USB接口类似,串口功能类似USB,都是用于数据传输的工具,也是一种非常通用的设备通信协议。串口通信就是计算机和外设之间通过数据线相连按位传输数据,通过向串口发送的电信号可以控制终端器械以及设备。比如我们用电脑给单片机发送指令,就是USB转串口来控制单片机的方式。如何理解串口,UA...原创 2020-04-29 15:00:07 · 936 阅读 · 0 评论 -
c#winform打开特定网址
主要是这个代码://调用系统默认的浏览器 System.Diagnostics.Process.Start("https://blog.youkuaiyun.com/testcs_dn/article/details/42246969");但是有几个不同的使用:上面的代码还可以写为: System.Diagnostics.Process.Start("explorer.exe", "https:/...原创 2020-04-17 14:15:07 · 490 阅读 · 0 评论 -
c#--文件及文件夹相关操作
目录1.判断存在判断文件存在:2.打开打开指定路径对应文件夹3.创建创建文件夹4.写入文件1.判断存在判断文件存在:if (!Directory.Exists(projectPath)) return;判断文件夹存在:if (!Directory.Exists(projectPath)) return;2.打开打开指定路径对应文件夹 if (!Directory.Exists...原创 2020-04-09 13:35:39 · 257 阅读 · 0 评论 -
c#_VS2019 项目打包最新笔记
**## 1.安装打包插件2.需要打包的项目上添加新工程,选择setup3.设置打包启动项目三个文件夹说明如下:Application Folder:应用程序包含的文件设置,指最终在客户电脑上的安装根目录User’s Desktop:用户桌面快捷方式设置,用户桌面,一般放个快捷图标。User’s Programs Menu:用户启动菜单的快捷方式设置,一般也是放快捷图标。PS...原创 2020-04-08 14:22:32 · 4559 阅读 · 12 评论 -
c#的全局异常捕获
以下操作在Program.cs中1.最简单的方式try…catch…一般用在某一段容易出错的代码,如果用在整个软件排查,如下所示 static void Main() { try { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefa...原创 2020-03-31 17:56:04 · 810 阅读 · 0 评论