乱七八糟的知识

本文介绍了C#中的Directory类操作、WinForm中的基本控件如FormClosing、ListBox和ComboBox,TCP通信的实现,以及视觉方向的转换。涵盖了文件系统操作、GUI编程和网络通信技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:C#的类

1.Directory 文件夹类 

Directory.GetCurrentDirectory(); //获取当前程序文件夹路径

Directory.CreateDirectory();//括号里面写路径,创建此路径及文件夹

File.Exists(); //括号里面写路径,判断是否有此路径,返回true或者false

File.Create(); //括号里面写路径,创建文件

2.Ini数据读写

IniAPI.INIWriteValue(地址, 键名称, 值名称, 值数据);//写入值

IniAPI.GetPrivateProfileString(键名称, 值名称, "", 地址);//获取某个值

IniAPI.INIGetAllSectionNames(地址);//获取所有的键名称 返回数组

IniAPI.INIGetAllItemKeys(地址,键名称);//获取所有的值名称 返回数组

IniAPI.INIGetAllItems(地址,键名称);//获取所有的值名称和值(值名称=值)返回数组

IniAPI.INIDeleteSection(地址,键名称);//删除键名称和对应的数据

IniAPI.INIEmptySection(地址,键名称);//只删除键名称对应的数据,不删除键名称

IniAPI.INIDeleteKey(地址,键名称,值名称);//删除值名称和对应的值

3.创建.ini文件

 string path = Directory.GetCurrentDirectory() + "\\test"; //文件夹地址
 if (!File.Exists(path))  //判断是否有当前文件夹
 {
     Directory.CreateDirectory(path); //如果没有就创建一个文件夹
 }
 string paths = path + "\\test.ini";  //声明.ini的地址和名称
 IniAPI.INIWriteValue(paths, "键名称", "值名称", "值");  //创建.ini和键值对

二:WinForm

1.关闭所有线程

//当窗体关闭时发生的事件
FormClosing
关闭所有线程
System.Environment.Exit(0);

 2.ComboBox设置

//不可编辑
将ComboBox的DropDownStyle 属性设置为 DropDownList
//默认选项
comboBox1.SelectedItem = comboBox1.Items[0];

3.listBox代码

private void PrinMsg(string msg,bool bReceive=false)//传入一个字符串和一个bool(判断是向listBox输出还是向服务器端输出)
{
 string time = DateTime.Now.ToString("HH:mm:ss");//时间
 string receive = bReceive ? " <- " : " -> ";//bool
 string str = $"{time}:{receive}{msg}";//时间+判断想谁输出+字符
 try
 {
  listBox1.BeginInvoke(new Action(() =>{if (listBox1.Items.Count > 60){listBox1.Items.Remove(0);}
   listBox1.Items.Add(str);//向listBox最后一行输出,判断超过60行清除第一行
   //添加一个程序运行的状态
   mfop.SaveLog(str);//添加一个FileOperate的本地文件,向本地文件写入数据
   }));

   //listbox总是显示最后一行
    listBox.TopIndex = listBox.item.Count -1;


 }
 catch (Exception ex)
  {
   //ex是捕获所有异常
   mfop.SaveLog(ex.Message);//捕获到的异常写到本地文件中
  }

 4.界面的控件调用

当界面2要调用界面1的某个控件
界面1实例化界面2的时候,传入这个控件
然后界面2先声明一个此控件,然后在public 界面2中(控件 kongjian)  然后在这里面 将获取到的控件赋值给界面2中声明的控件

//调用另外一个界面的数据的时候这样实例化更好一点
SubInterface s1 = (SubInterface)this.Owner;

//右键选择listbox的项
 if (e.Button == MouseButtons.Right)
 {
     int currentIndex = listBox2.IndexFromPoint(e.Location);
     if (listBox2.SelectedItem != null && currentIndex != listBox2.SelectedIndex)
     {
         this.listBox2.SetSelected(listBox2.SelectedIndex, false);
     }
     this.listBox2.SetSelected(currentIndex, true);

 }

//提示框确认按钮文本
//使用方法 MessageBoxEX.shou("文本内容",MessageBoxButtons.OKCancel, new string[] { "按钮1", "按钮2" });

5.WinForm程序打包(简洁版)

1.安装扩展

扩展程序 搜索  Microsoft Visual Studio Installer Projects

2.创建项目

在项目的解决方案中新建项目

3.开始打包

1.右键Application Folder-----Add-----文件
2.选择要打包的项目的bin--debug文件夹的所有文件
3.右键Application Folder----项目输出--主输出--确认
4.找到卸载程序  C:\Windows\System32\msiexec.exe 文件添加进文件
5.右键  msiexec.exe 选择  Create Shortcut to msiexec.exe
6.选择本项目的属性ProductCode 复制里面的内容
7.选择第五条生成的快捷文件Arguments属性 输入 /X +复制的内容(大写有空格)
8.可省略:右键项目属性,点击Prerequisites.选择框架
9.右键项目生成

三:Cog的类

1.CogSerializer类

//将本地的相机vpp文件赋给控件中的cogAcqFifoEditV21
CogAcqFifoTool macqfifo=CogSerializer.LoadObjectFromFile(xjpath)as CogAcqFifoTool;
cogAcqFifoEditV21.Subject = macqfifo;

//将本地的ToolBlock文件赋给控件中的Toolblock文件
CogToolBlock mtb=CogSerializer.LoadObjectFromFile(tbpath)as CogToolBlock;
cogToolBlockEditV21.Subject=mtb;

//将控件中的CogAcqFifoEditv21相机控件保存到本地
CogAcqFifoTool xj1 = cogAcqFifoEditV21.Subject;    
CogSerializer.SaveObjectToFile(xj1,path);//相机实例化和本地Vpp的地址

//将控件中的ToolBlock控件保存到本地
CogToolBlock mtb = cogToolBlockEditV21.Subject;
CogSerializer.SaveObjectToFile(mtb,tbpath);

//输出脚本中的数组
//先添加一个输出类型并改名为array
//数组为arr1(输出数组的类型和数组要一致)
//在写setXYTest的局域中写入
mToolBlock.Outputs["array"].Value = arr1;

四:方法

1.Tcp通信的方法

Socket clientsocket;//客户端套接字
public void Setcom()//可以在窗口开启的时候调用此方法
{
//提供协议
clientsocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(IP地址),端口号);//建立链接点
clientsocket.Connect(iPEndPoint);//链接服务器
//创建接收消息的异步操作
ThreadPool.QueueUserWorkItem(Receiv,clientsocket);
}
private void Receiv(object state)
{
 Socket socket = (Socket)state;//设置套接字
 while (true)
 {
   try
   {
    byte[]buffer=new byte[1024*1024*2];//设置传输数据的大小为2MB字节
    int r=socket.Receive(buffer);//获取接受到的字节数组长度
    if (r == 0) break;//没有接受到信息就退出
    string msg=Encoding.Default.GetString(buffer,0,r);//转码接收到的消息
    PrinMsg("接收到的消息:"+msg,true);//写一个listBox显示的方法
   }
 }
    catch (Exception ex)
     {
     //进入异常
    Thread.Sleep(3000);//每隔三秒连接一次
    PEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(IP地址),端口号号);//建立链接点
    clientsocket.Connect(iPEndPoint);//链接服务器
      }
}

2.winform图片的使用方法

pictureBox1.Image.Save(path);//将图片保存到本地
pictureBox2.Image= Image.FromFile(path);//将本地图片显示出来

3.判断点击

DialogResult bc = MessageBox.Show("确认或取消", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);//弹出提示框
if(bc==DialogResult.OK)//判断是否点击了确认
{
 MessageBox.Show("保存成功");
}
else//点击了取消
{
MessageBox.Show("取消了操作");
}

 OpenFileDialog file = new OpenFileDialog();//弹出框
 file.ShowDialog();//选择文件
 string url = file.FileName;//文件路径

五:视觉方向

1.正常的方向

在视觉中的方向一般是这种的,由-180 至  180

2.360度的方向

如果要设置为0-360的话,可以先判断是否小于零,然后加360即可,即为

例如

double angle = -18;//假设有一个角度为负18都
if(angle<0) //如果小于0就代表为负角度
{
 angle=angle+360;//将角度+360将为342度
}

3.Visionpro将弧度转换为角度的公式

弧度*(180/Math.PI);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值