【VM服务管家】VM4.0软件使用_1.3全局模块类

这篇具有很好参考价值的文章主要介绍了【VM服务管家】VM4.0软件使用_1.3全局模块类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.3.1 通讯管理:通讯管理的心跳管理功能的使用方法

描述
环境:VM4.0.0
问题:当外部设备与视觉保持连接过程中,由于各种不可控的原因(例如网线被意外拔出,网口松动,视觉程序意外退出),如何让外部设备的程序可以知道:与视觉的通讯已经中断。
可以通过通讯管理模块中的心跳功能实现能够给出上述问题的解决方案。
第一步:打开通讯管理,点工具栏通讯管理图标即可进入。如下图黄色箭头所示的图标。
【VM服务管家】VM4.0软件使用_1.3全局模块类

第二步:找到心跳管理模块,设置心跳,如下图所示:
【VM服务管家】VM4.0软件使用_1.3全局模块类

心跳类型选择多数据,时间间隔设置1000ms,这样与视觉连接的客户端就会每隔1s收到不同的字符串,比如当前收到“HeartBeat0”,经过1s后将收到“HeartBeat1”,再经过1s又收到”HeartBeat0”,如此循环。这样,当客户端不再收到来自视觉的发送的字符,或者视觉发送的字符不再变化,都说明通讯发生了异常。
问题根因

  1. 不了解通讯管理模块中的心跳功能怎么使用
  2. 心跳类型单数据和多数据的区别

1.3.2 全局触发:使用全局触发功能执行流程的方法

描述
环境:VM4.0.0
现象:我们这里以TCP通讯为例,视觉作为TCP服务端,与视觉交互的第三方设备作为TCP客户端。当TCP客户端连接上视觉服务端后,客户端发送字符串T1,视觉执行流程1;
客户端发送字符串T2,视觉执行流程2。
解答
这样的需求我们可以通过全局触发功能实现。这里介绍两种方法,方法一为更通用的方法,其接收的数据类型可以是int,float,string,byte等类型;方法二为简单方法,但接收的数据类型只能是string类型。
方法一:
第一步: 打开VM后,在快捷菜单中点击通信按钮
【VM服务管家】VM4.0软件使用_1.3全局模块类

在打开通信界面后,点击设备列表后的加号,在协议类型中选择TCP服务端,设置需要的本机IP和本机端口,点击创建。
【VM服务管家】VM4.0软件使用_1.3全局模块类

第二步:点击接收事件,进入接收事件窗口,点击事件列表后的加号,选择字节匹配处理方式,选择协议组装事件类型,点击创建。
【VM服务管家】VM4.0软件使用_1.3全局模块类

将绑定设备选为需要进行通信的设备的名称,这里选择TCP服务端,点击规则列表下的加号,根据需要添加相应的规则。比如这里接收字符串T1,就将类型设为string,比较规则设置为等号。
【VM服务管家】VM4.0软件使用_1.3全局模块类

需要注意的是,在规则列表中目前只支持与逻辑,也就是说必须全部满足该事件下的规则才能触发该事件。这里由于要求通讯接收到T1时执行流程1,接收到T2时执行流程2,属于或的逻辑,因此需要使用两个接收事件。第一个事件接收T1,第二个事件接收T2。
【VM服务管家】VM4.0软件使用_1.3全局模块类

第三步:在快捷菜单中点击全局触发按钮。
【VM服务管家】VM4.0软件使用_1.3全局模块类

点击事件触发序号下的加号,根据项目情况添加触发事件。
【VM服务管家】VM4.0软件使用_1.3全局模块类

第四步:为了看到效果,分别建立两个一样的流程。
【VM服务管家】VM4.0软件使用_1.3全局模块类

当执行该流程后给客户端发送流程已执行,打开网络调试助手,实际效果如下。
【VM服务管家】VM4.0软件使用_1.3全局模块类

需要注意的是:这种使用接收事件进行触发的方法属于通用型方法,接收的数据类型可以是int,float,string,byte类型。
【VM服务管家】VM4.0软件使用_1.3全局模块类

但是,如果接收的数据类型为string类型,还有一种更简单的方法。
方法二:
第一步:与方法一的第一步相同,创建TCP服务端
第二步:借助全局触发中的字符串触发。假如现在希望客户端给服务端发送T3,执行流程3,可以按下图所示进行配置。
【VM服务管家】VM4.0软件使用_1.3全局模块类

第三步:添加流程3,客户端发送T3,执行效果如下
【VM服务管家】VM4.0软件使用_1.3全局模块类

问题根因
不熟悉全局全局触发工具的使用。

1.3.3 全局变量:全局变量关联流程中具体模块结果的方法

描述
环境:VM4.0.0
问题:将视觉流程中模板匹配算法模块运行的结果数据:特征匹配点X关联全局变量MatchResultX。
解答
在流程运行的主界面中,按照下面1,2,3,4步骤操作,第一步选中算法模块,第二步选择模块结果Tab页,第三步点击订阅数据图标,第4步选择全局变量。
【VM服务管家】VM4.0软件使用_1.3全局模块类

问题根因
不了解全局变量的绑定操作

1.3.4 全局脚本:方案加载完成信号发给通信设备的方法

描述
环境:VM4.0.0
现象:需要在方案加载完成后,发送加载完成信号到全局变量,发送给通信设备。
解答
全局脚本的使用可以通过打开示例,完成常用的基本功能开发。
【VM服务管家】VM4.0软件使用_1.3全局模块类

打开全局通信代码后,在脚本中添加代码
【VM服务管家】VM4.0软件使用_1.3全局模块类

问题根因
全局脚本和通信接口不熟悉。

1.3.5 全局脚本:通信设备ID获取方法

描述
环境:VM4.0.0
现象:4.0版本之前,全局脚本中通信数据接收函数中的DeviceID是按照设备管理列表中至上而下、从0开始依此增1,现在这种方法行不通。
【VM服务管家】VM4.0软件使用_1.3全局模块类

解答
VM4.0版本每次增加设备列表都会分配唯一的ID号,后续全局脚本中判断设备ID通过这个唯一ID识别,不再从上到下默认排序。
问题根因
版本更新。

1.3.6 全局脚本:PLC通讯字符触发流程执行的方法

描述
环境:VM4.0.0
现象:PLC通讯字符改变时,触发流程执行一次的方法
解答
打开全局通信脚本,在UserGlobalMethods_OnReceiveCommunicateDataEvent里面修改,修改代码如下:

1.	C#
2.	 
3.	string strTemp="0000";
4.	public override void UserGlobalMethods_OnReceiveCommunicateDataEvent(ReceiveDataInfo dataInfo)
5.	{
6.	    if(dataInfo == null || dataInfo.DeviceData==null)
7.	    {return;}
8.	//接收到的数据转成字符串
9.	string str = System.Text.Encoding.Default.GetString(dataInfo.DeviceData);
10.	 
11.	    if(dataInfo.DeviceID==1)
12.	    {
13.	        //解析收到的数据
14.	        if(str=="0100"&&strTemp=="0000")
15.	        {
16.	            ImvsPlatformSDK_API.IMVS_PF_ExecuteOnce_V30_CS(m_operateHandle,10000,null);
17.	        }
18.	 
19.	        if(str=="0400"&&strTemp=="0000")
20.	        {
21.	            //执行流程2 一次
22.	        	  ImvsPlatformSDK_API.IMVS_PF_ExecuteOnce_V30_CS(m_operateHandle,10001,null);      		}
23.	            strTemp=str;
24.	        }
25.	    }
26.	}

问题根因
不熟悉全局脚本、寄存器机制。

1.3.7 全局脚本:通过全局脚本加载本地图像的方法

描述
环境:VM4.0.0
现象:VM通过全局脚本加载本地图像
解答
通过VM的全局脚本加载本地图像的步骤如下所示:
1、打开全局脚本,选择需要的示例
【VM服务管家】VM4.0软件使用_1.3全局模块类

2、在运行函数中插入如下代码

1.	public int Process()
2.	{
3.	    //m_operateHandle 二次开发SDK操作句柄
4.	    if (m_operateHandle == IntPtr.Zero)
5.	    { return ImvsSdkPFDefine.IMVS_EC_NULL_PTR; }
6.	 
7.	    ImvsSdkPFDefine.IMVS_PF_INPUT_IMAGE_INFO stImageInfo = new ImvsSdkPFDefine.IMVS_PF_INPUT_IMAGE_INFO();
8.	    stImageInfo.nDataType = 1;
9.	    stImageInfo.nModuleID = 16;//图像源模块序号
10.	    stImageInfo.strImagePath = "E:\\VSproject\\Demo\\12.jpg";
11.	 
12.	    ImvsPlatformSDK_API.IMVS_PF_SetImageData_CS(m_operateHandle, stImageInfo);
13.	 
14.	    //System.Threading.Thread.Sleep(200);
15.	 
16.	    //自定义执行逻辑
17.	    //流程1运行一次
18.	    int nRet = ImvsPlatformSDK_API.IMVS_PF_ExecuteOnce_V30_CS(m_operateHandle, 10002, null);
19.	    return nRet;
20.	}

问题根因
不熟悉全局脚本相关接口。

1.3.8 全局脚本:通过全局脚本获取通讯输入的参数并赋值给全局变量

描述
环境:VM4.0.0及以上
现象:全局脚本根据外部通讯输入的数值赋值给全局变量,实现输入与全局变量之间的数值绑定。(一般应用于定位、标定等需要外界物理值的场景)
解答
第一步,在vm通讯管理中设置好通讯设备,连接。
【VM服务管家】VM4.0软件使用_1.3全局模块类

第二步,根据通讯设备、接收的信息格式设置接收事件
【VM服务管家】VM4.0软件使用_1.3全局模块类

第三步,在全局变量中设置中对应的变量
【VM服务管家】VM4.0软件使用_1.3全局模块类

第四步,在全局脚本中根据输入的字符串进行分割设置对应的全局变量
【VM服务管家】VM4.0软件使用_1.3全局模块类

成果展示:
实现模块直接绑定通讯输入的点位信息。
【VM服务管家】VM4.0软件使用_1.3全局模块类
【VM服务管家】VM4.0软件使用_1.3全局模块类

问题根因
不熟悉模块之间的业务关系。

1.3.9 全局脚本:VM加载方案后自动执行的方法

描述
环境:VM4.0.0
现象:如何让VM在方案加载后自动执行流程?
解答
可以通过全局脚本控制方案加载之后希望执行的操作,将如下代码添加到全局脚本中。

public override int InitAfterLoadSol()
{
  //加载方案完成信号,在方案加载回调函数中获取信号
  Sleep(500);
  //控制流程1执行一次       
  ImvsPlatformSDK_API.IMVS_PF_ExecuteOnce_V30_CS(m_operateHandle, 10000, null);
  return 0;
}

问题根因
不熟悉全局脚本的方案控制。

1.3.10 全局脚本:多流程协作控制的方法

描述
环境:VM4.0及以上
现象:如何实现多流程间的协作控制,如:如何控制实现流程A、B执行完毕执行流程C的逻辑?
解答
1.可以使用全局脚本来实现多流程的协作控制,主要通过在流程运行状态回调中判断流程的执行状态来控制流程的执行,示例代码如下。

C#
using System;
using VM.GlobalScript.Methods;
using System.Linq;
using System.Windows.Forms;
using iMVS_6000PlatformSDKCS;
using System.Runtime.InteropServices;
using System.Threading;
using System.Collections.Generic;
using System.Threading.Tasks;

/*****************************************
 * 示例说明:该示例用于检测流程的运行状态来执行剩余的逻辑
 *         例如:流程0和流程1执行完之后需要执行流程2
 * ***************************************/
public class UserGlobalScript : UserGlobalMethods, IScriptMethods
{
    /// <summary>
    /// 初始化函数
    /// </summary>
    /// <returns>成功:返回0</returns>
    public int Init()
    {
        //二次开发SDK初始化
        InitSDK();
        //需要等待多少个流程就添加多少个
        objProcessStatusDict.Add(10000, new ProcessWorkStatus() { });
        objProcessStatusDict.Add(10001, new ProcessWorkStatus() { });
        return 0;
    }

    private Dictionary<uint, ProcessWorkStatus> objProcessStatusDict = new Dictionary<uint, ProcessWorkStatus>();

    /// <summary>
    /// 运行函数
    /// 单次执行:该函数执行一次
    /// 连续执行:以一定时间间隔重复执行该函数
    /// </summary>
    /// <returns>成功:返回0</returns>
    public int Process()
    {
        //m_operateHandle 二次开发SDK操作句柄
        if (m_operateHandle == IntPtr.Zero)
        { return ImvsSdkPFDefine.IMVS_EC_NULL_PTR; }

        //自定义执行逻辑 
        //默认执行全部流程,如果自定义流程执行逻辑,请移除DefaultExecuteProcess方法
        int nRet = DefaultExecuteProcess();

        return 0;
    }


    /// <summary>
    ///流程运行状态空闲回调
    /// </summary>
    /// <param name="workStatus"></param>
    public void ExecuteProcessWorkStatus(ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS workStatus)
    {
        try
        {
            //1为忙碌状态,0位空闲状态,为0时说明流程执行完毕
            if (objProcessStatusDict.ContainsKey(workStatus.nProcessID))
            {

                objProcessStatusDict[workStatus.nProcessID].Status = workStatus.nWorkStatus;
            }

            //如果都为true 说明已经执行过一次
            if (objProcessStatusDict.All(x => x.Value.IsExecute))
            {
                //全部置位
                foreach (var item in objProcessStatusDict)
                {
                    item.Value.IsExecute = false;
                }
                Task.Run(() =>
                {
                    //执行后续逻辑动作
                    ImvsPlatformSDK_API.IMVS_PF_ExecuteOnce_V30_CS(m_operateHandle, 10002, null);
                });
            }
        }
        catch (Exception ex)
        {
            //MessageBox.Show(ex.ToString());
        }
    }

    /// <summary>
    /// SDK回调函数
    /// </summary>
    public override void ResultDataCallBack(IntPtr outputPlatformInfo, IntPtr puser)
    {
        base.ResultDataCallBack(outputPlatformInfo, puser);
        ImvsSdkPFDefine.IMVS_PF_OUTPUT_PLATFORM_INFO struInfo = (ImvsSdkPFDefine.IMVS_PF_OUTPUT_PLATFORM_INFO)Marshal.PtrToStructure(outputPlatformInfo, typeof(ImvsSdkPFDefine.IMVS_PF_OUTPUT_PLATFORM_INFO));
        switch (struInfo.nInfoType)
        {
            //获取模块结果数据
            case (uint)ImvsSdkPFDefine.IMVS_CTRLC_OUTPUT_PlATFORM_INFO_TYPE.IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_MODULE_RESULT:
                {
                    ImvsSdkPFDefine.IMVS_PF_MODULE_RESULT_INFO_LIST_P resultInfo = (ImvsSdkPFDefine.IMVS_PF_MODULE_RESULT_INFO_LIST_P)Marshal.PtrToStructure(struInfo.pData, typeof(ImvsSdkPFDefine.IMVS_PF_MODULE_RESULT_INFO_LIST_P));
                    break;
                }
            ///获取流程运行状态
            case (uint)ImvsSdkPFDefine.IMVS_CTRLC_OUTPUT_PlATFORM_INFO_TYPE.IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_WORK_STATE:
                {
                    ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS stWorkStatus = (ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS)Marshal.PtrToStructure(struInfo.pData, typeof(ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS));
                    //处理流程运行状态
                    ExecuteProcessWorkStatus(stWorkStatus);
                    break;
                }
            default:
                break;
        }
    }
}

public class ProcessWorkStatus
{
    public ProcessWorkStatus()
    {
        IsExecute = false;
    }
    public bool IsExecute { get; set; }
    private uint _status;
    public uint Status
    {
        get { return _status; }
        set
        {
            if (_status != value)
            {
                IsExecute = (value == 0 && _status == 1);
                _status = value;
            }
        }
    }
}

问题根因
不熟悉全局脚本控制多流程的使用。

1.3.11 全局脚本:通过通讯触发快速匹配模块换型的方法

描述
环境:VM4.0及以上
现象:如何实现根据通讯信号切换快速匹配的模型文件并触发流程执行?
解答
1.动态切换模板需在全局脚本中调用相关接口实现,可以在全局脚本的通讯数据接收回调中实现代码逻辑,代码如下。

C#
using System; 
using VM.GlobalScript.Methods;
using System.Windows.Forms; 
using iMVS_6000PlatformSDKCS;
using System.Runtime.InteropServices;

/******************************
 * 示例说明: 接收全局通信模块数据示例
 *     前提: 全局通信模块中开启有通信设备
 * 控制逻辑: 1.接收来自全局通信模块接收到的数据
 *           2.如果接收到数据字符T1/T2,则加载对应模型文件并执行流程1一次
 * ***************************************/
public class UserGlobalScript : UserGlobalMethods, IScriptMethods
{
    /// <summary>
    /// 初始化函数
    /// </summary>
    /// <returns>成功:返回0</returns>
    public int Init()
    {
        //二次开发SDK初始化
        InitSDK();
        //设置与全局通信模块的通信端口
        StartGlobalCommunicate();
        //注册通信数据接收事件
        RegesiterReceiveCommunicateDataEvent();
        return 0;
    }

    /// <summary>
    /// 运行函数
    /// 单次执行:该函数执行一次
    /// 连续执行:以一定时间间隔重复执行该函数
    /// </summary>
    /// <returns>成功:返回0</returns>
    public int Process()
    {
        //m_operateHandle 二次开发SDK操作句柄
        if (m_operateHandle == IntPtr.Zero)
        { return ImvsSdkPFDefine.IMVS_EC_NULL_PTR; }
        //默认执行全部流程,如果自定义流程执行逻辑,请移除DefaultExecuteProcess方法
        int nRet = DefaultExecuteProcess();
        return nRet;
    }

    /// <summary>
    /// 通信数据接收函数
    /// </summary>
    public override void UserGlobalMethods_OnReceiveCommunicateDataEvent(ReceiveDataInfo dataInfo)
    {
        if (dataInfo == null || dataInfo.DeviceData == null)
        { return; }
        //接收到的数据转成字符串
        string str = System.Text.Encoding.Default.GetString(dataInfo.DeviceData);
        //创建导入模型结构体
        ImvsSdkPFDefine.IMVS_PF_IMPORT_MODULE_DATA_INPUT stImportData = new ImvsSdkPFDefine.IMVS_PF_IMPORT_MODULE_DATA_INPUT();
        stImportData.stImportModuData = new ImvsSdkPFDefine.IMVS_PF_IMPORT_MODULE_DATA[ImvsSdkPFDefine.IMVS_PF_MAX_IMPORT_NUM];
        //这里的deviceIndex和全局通信模块中的一致
        if (dataInfo.DeviceID == 1)
        {
            //解析收到的数据
            if (str == "T1")
            {
                //导入一个模板
                string strImportFilePath = "E:\\Project\\VMProject\\模板切换\\3.fmxml";
                stImportData.stImportModuData = new ImvsSdkPFDefine.IMVS_PF_IMPORT_MODULE_DATA[ImvsSdkPFDefine.IMVS_PF_MAX_IMPORT_NUM];
                stImportData.nDataNum = 1;
                stImportData.nDataType = 1;
                //操作模块ID
                stImportData.nModuleID = 1;
                stImportData.stImportModuData[0].pData = Marshal.StringToHGlobalAnsi(strImportFilePath);
                int iDataLen = System.Text.Encoding.Default.GetBytes(strImportFilePath).Length;
                stImportData.stImportModuData[0].nDataLen = (uint)iDataLen;
            }
            if (str == "T2")
            {
                //创建模型文件字符串数组,同时导入两个模板
                string[] strImportFilePath = new System.String[] { "E:\\Project\\VMProject\\模板切换\\1.fmxml", "E:\\Project\\VMProject\\模板切换\\2.fmxml" };
                stImportData.nDataNum = 2;
                stImportData.nDataType = 1;
                stImportData.nModuleID = 1;
                int count = 0;
                foreach (var iter in strImportFilePath)
                {
                    stImportData.stImportModuData[count].pData = Marshal.StringToHGlobalAnsi(iter);
                    int iDataLen = System.Text.Encoding.Default.GetBytes(iter).Length;
                    stImportData.stImportModuData[count].nDataLen = (uint)iDataLen;
                    count++;
                }
            }
            //导入模型
            ImvsPlatformSDK_API.IMVS_PF_ImportModuleData_CS(m_operateHandle, stImportData);
            //执行流程1                  
            ImvsPlatformSDK_API.IMVS_PF_ExecuteOnce_V30_CS(m_operateHandle, 10000, null);
        }
    }

    /// <summary>
    /// SDK回调函数
    /// </summary>
    public override void ResultDataCallBack(IntPtr outputPlatformInfo, IntPtr puser)
    {
        base.ResultDataCallBack(outputPlatformInfo, puser);
        ImvsSdkPFDefine.IMVS_PF_OUTPUT_PLATFORM_INFO struInfo = (ImvsSdkPFDefine.IMVS_PF_OUTPUT_PLATFORM_INFO)Marshal.PtrToStructure(outputPlatformInfo, typeof(ImvsSdkPFDefine.IMVS_PF_OUTPUT_PLATFORM_INFO));
        switch (struInfo.nInfoType)
        {
            //获取模块结果数据
            case (uint)ImvsSdkPFDefine.IMVS_CTRLC_OUTPUT_PlATFORM_INFO_TYPE.IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_MODULE_RESULT:
                {
                    ImvsSdkPFDefine.IMVS_PF_MODULE_RESULT_INFO_LIST_P resultInfo = (ImvsSdkPFDefine.IMVS_PF_MODULE_RESULT_INFO_LIST_P)Marshal.PtrToStructure(struInfo.pData, typeof(ImvsSdkPFDefine.IMVS_PF_MODULE_RESULT_INFO_LIST_P));
                    break;
                }
            ///获取流程运行状态
            case (uint)ImvsSdkPFDefine.IMVS_CTRLC_OUTPUT_PlATFORM_INFO_TYPE.IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_WORK_STATE:
                {
                    ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS stWorkStatus = (ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS)Marshal.PtrToStructure(struInfo.pData, typeof(ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS));
                    break;
                }
            default:
                break;
        }
    }
}

问题根因
不熟悉全局脚本通讯回调及模板导入相关接口的使用。文章来源地址https://www.toymoban.com/news/detail-429944.html

到了这里,关于【VM服务管家】VM4.0软件使用_1.3全局模块类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 工程师使用IT服务台软件可以解决哪些问题?

    现如今企业数字化建设已初具规模,业务系统基本已告一段落,而下一步关注的重点则从技术转向管理,如何能让这些系统更好运行起来,如何提高管理效率已是重中之重。在此向您推荐一款高效的IT服务管理工具——ServiceDesk Plus,它是全栈式的ITSM解决方案,可以360°全方位

    2024年02月11日
    浏览(42)
  • 【软件安装】Windows系统中使用miniserve搭建一个文件服务器

    这篇文章,主要介绍如何在Windows系统中使用miniserve搭建一个文件服务器。 目录 一、搭建文件服务器 1.1、下载miniserve 1.2、启动miniserve服务 1.3、指定根目录 1.4、开启访问日志 1.5、指定启动端口 1.6、设置用户认证 1.7、设置界面主题 (1)squirrel主题 (2)archlinux主题 (3)zen

    2024年02月07日
    浏览(67)
  • 阿里云服务器配置+使用宝塔面板+不用安装Xshell或其他软件

    目录 阿里云服务器配置 宝塔配置 这里暂且默认已你已经买过服务器了 1 百度搜索阿里云并登录    2 完成后点击控制台   3 进入控制台后,点击资产管理,点击实例 4  点击实例的具体名称  5 点击网络与安全中的安全组,并点击配置规则 6 进入安全组后,点击入方向下的

    2024年02月02日
    浏览(53)
  • 使用Ftp服务器+快解析软件,让你的文件随时随地可访问

    你是否曾经遇到过这样的情况?你在办公室工作到很晚,突然想起家里的电脑里有重要文件,但却无法立即访问?或者你想要和朋友分享一些照片,却发现你的电脑和他们之间的距离太远,无法直接传输文件?如果你正在为这些问题烦恼,那么Ftp服务器将成为你的救星。 什么

    2024年02月12日
    浏览(37)
  • ChatGPT更新的使用指南,与其他类似的人工智能的软件和服务-更新版(2023-6-25)

    如果你还不知道如何注册和使用,可看末尾,手把手教你。 ChatGPT 是一种基于自然语言处理技术的聊天机器人,它是由 OpenAI 公司开发的,使用了最新的语言模型技术。 ChatGPT 能够理解和产生自然语言,可以模拟人类的对话,回答各种问题,提供相关的建议和信息,并且具有

    2024年02月11日
    浏览(54)
  • Windows下的Tftpd32(Tftpd64)软件下载和使用教程-集成了Tftp服务器、客户端

    专栏地址:嵌入式开发 专栏文章: 【01】windows安装VMware最新版本(VMware Workstation 17.0 Pro)详细教程 【02】VMware17虚拟机安装Ubuntu最新版本(Ubuntu22.04LTS)详细步骤 【03】Ubuntu22.04 添加samba,并在windows访问 的详细教程 【04】Vmware Pro 17 设置共享文件夹 【05】Ubuntu最新版本(Ubuntu22.04LT

    2024年02月01日
    浏览(89)
  • 华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 RabbitMQ 集群

    华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 RabbitMQ 集群 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么 华为云云耀云服务器和上一代的服务器对

    2024年02月07日
    浏览(89)
  • 使用U盘安装统信UOS20服务器操作系统1050a出现“设置基础软件仓库时出错”报错导致无法继续安装的解决方法

    目录 一、复现步骤  二、解决方法 操作系统版本:统信操作系统UOS--20-1050a-amd64 使用Rufus工具制作U盘启动盘或者使用UltraISO工具制作U盘启动盘; 修改启动项,选择从U盘启动; 这里看机器是什么品牌或者组装机,有如联想F12、华硕F2等 进入系统安装界面,这里可以看到在“软

    2024年02月15日
    浏览(255)
  • 使用U盘安装银河麒麟服务器操作系统V10SP2出现“设置基础软件仓库时出错”报错导致无法继续安装的解决方法

    操作系统版本:银河麒麟高级服务器操作系统V10SP2-20210524(x86_64) 使用Rufus工具制作U盘启动盘; 修改启动项,选择从U盘启动; 进入系统安装界面,这里可以看到在“软件”-“安装源”选项上报错了,提示“设置基础软件仓库时出错”; 点击“安装源”进到安装源配置页面

    2024年02月02日
    浏览(410)
  • 【软件使用】postman使用教程

        ​ 🍎 个人博客: 个人主页 🏆 个人专栏: 软件安装及使用   ⛳️   功不唐捐,玉汝于成 ​ 目录 前言 正文 步骤1:安装Postman 步骤2:发送请求 步骤3:管理环境变量 步骤4:创建测试脚本 步骤5:保存和共享集合 其他技巧 为什么选择Postman?  结语  我的其他博客 P

    2024年02月22日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包