一: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);