随笔分类 - C#/.NET学习
摘要:new:为对象分配空间。 首先,直接声明一个变量:byte[] test;只是有了一个变量名字,而它是没有实际空间的,需要分配空间; 分配空间的方法: 1、使用new,byte[] test = new byte[200];//这里需要制定test的大小 2、使用C#一些返回数据的方法,如:test
阅读全文
摘要:前篇文章是调用非托管,比较复杂,这里是调用托管,很简单【所以在遇到非托管dll时可以通过二次封装成托管的方式,再通过这边文章来使用】 1、注意这是基于COM的ocx或者dll,所以用regsvr32先注册 2、新建C#winform工程 3、在解决方案中的引用中,右键添加引用 如果是注册了的,在CO
阅读全文
摘要:以C#开发周立功CAN举例,在官网下载了周立功的demo 一、C++头文件样子 //接口卡类型定义#define VCI_PCI5121 1 //一些结构体定义 typedef struct tagRemoteClient{ int iIndex; DWORD port; HANDLE hClien
阅读全文
摘要:一、来源 在一个项目中,拿到了一个demo,看起来像是C#,又像是C++,部分截图如下 1、界面【C#的winform】 2、mian入口,是cpp 3、解决方案 二、猜测 一开始以为是C#工程,因为有winform;后来觉得是C++工程,因为源文件都是.h\.cpp,而且有include【c#没有
阅读全文
摘要:一、托管:如果一个动态库本身是基于.NET的,那么可以直接在工程引用里右键添加引用,如微软的COM技术【因为你依托的是微软的框架,所以需要regsvr32注册】 二、非托管:如果不是基于.NEt的,那么需要使用DllImport技术,或者通过MFC把这个dll封装成OCX转为COM【如C++写的DL
阅读全文
摘要:转:https://www.cnblogs.com/zhaoqingqing/p/5468072.html 前言 写这篇文章的目地是为了让更多的小伙伴对VS生成的工程有一个清晰的认识。在开发过程中,为了赶进度,并不是每个人都有学习的时间。 但如果上层项目管理人员对这些工程目录不熟悉的话,把VS编译的
阅读全文
摘要:1、string转byte数组【"<02GS0000FF>"转十六进制3C 30 32 47 53 30 30 30 30 46 46 3E】 string msg = "<02GS0000FF>"; byte[] buffer = System.Text.Encoding.ASCII.GetByt
阅读全文
摘要:1、C#把所有基本类型都封装成自己的类型了,如下图,int被封装成了一个struct结构体。如果定义一个int对象,是可以调用int结构体里的函数的 2、和C\C++不同,C#的char就是单纯的代表ASCII码,而不是用来参与运算的类型【用byte代替】,而C\C++中char是可以随便赋值的,可
阅读全文
摘要:一、阻塞模式 1、命名空间 System.Net.Sockets 2、对象声明 TcpClient dpu1TcpClient = null;//dpu1tcp客户端,TcpClient模式 NetworkStream streamToServer = null;//用于接收和发送数据的数据流对象
阅读全文
摘要:1、声明对象 Thread udpSendThread = null; 2、分配空间 udpSendThread = new Thread(new ThreadStart(udpSendMsg));//发送报文线程初始化,udpSendMsg是线程函数入口 3、开启线程 udpSendThread.
阅读全文
摘要:c#中有两种基本类型,它们分别是值类型和引用类型;而每种类型都可以细分为如下类型: ps:1、基本类型是值类型 2、类、接口、委托都是引用类型
阅读全文
摘要:1、声明socket对象 Socket udpSocket;//udp Socket对象 2、分配空间 udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//使用本机IP ud
阅读全文
摘要:拿到了一个第三方demo,有dll,有.cpp、.h,打开解决方案,如下图: 网上资料貌似很少,根据猜测: 这是使用托管C++来调用C#的方式。 过程: 1、先使用C#代码实现界面和功能,其实就是一个完整可运行的程序,可能是exe? 2、使用C++语法【void main】调用这个可运行的程序 ps
阅读全文
摘要:转:http://blog.sina.com.cn/s/blog_7f7cd96601013trt.html 在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大小并且能重新定位?下面介绍如何将控件锚定到窗体上。 首先,选择要锚定的控件。然后,在属性窗口中,单击
阅读全文
摘要:public static String GetLocalIp() { String[] Ips = GetLocalIpAddress(); foreach (String ip in Ips) if (ip.StartsWith("10.80.")) return ip; foreach (S...
阅读全文
摘要:1、在类中声明 delegate void setDebugDelegate(string info);//线程访问textbox委托函数 private void setDebug(string info)//实际访问textbox函数 { textBox1.AppendText(IMCout +
阅读全文
摘要:转:https://www.cnblogs.com/comsky/p/6020327.html 如果获得当前进程的Id用: Process[] processes = Process.GetProcesses(); foreach(Process process in processes) { if
阅读全文
摘要:转:https://www.cnblogs.com/muyoucai/p/6257213.html Control类提供了一个Invoke方法来给子线程访问主线程的控件,它的原型是酱紫的: method是已创建的委托对象,如果该对象的关联方法有参数,那就放在数组args中,没有就不用传 Invoke
阅读全文
摘要:public static String GetLocalIp() { String[] Ips = GetLocalIpAddress(); foreach (String ip in Ips) if (ip.StartsWith("10.80.")) return ip; foreach (St
阅读全文
摘要:转:https://www.cnblogs.com/lzy575566/p/7718815.html c#结构体和字节流之间的相互转换 结构体转byte数组 1 首先要明白 ,是 在那个命名空间下 System.Runtime.InteropServices; 2 首先得到结构体的大小 2 开辟相应
阅读全文