コード例 #1
0
        //根据SCPI通信协议把设置参数setData进行封装,并返回封装后的字符串数组
        public static string[] PackageData(SysSet.SettingsStruct setData)
        {
            //对设置的参数根据SCPI协议进行封装
            string[] array = new string[10];
            try
            {
                array[0] = Form1.SCPISetPre[0] + setData.testVoltage + "V";
                array[1] = Form1.SCPISetPre[1] + setData.electricUpLimit + "mA";
                array[2] = Form1.SCPISetPre[2] + setData.powerUpLimit + "W";
                array[3] = Form1.SCPISetPre[3] + setData.outputRes;
                array[4] = Form1.SCPISetPre[4] + setData.dischargeElectric + "mA";
                array[5] = Form1.SCPISetPre[5] + setData.dischargePower + "W";
                array[6] = Form1.SCPISetPre[6] + setData.measurePattern;
                array[7] = Form1.SCPISetPre[7] + setData.voltageRiseSlope + "V/s";
                array[8] = Form1.SCPISetPre[8] + setData.voltageDropSlope + "V/s";
                array[9] = Form1.SCPISetPre[9] + setData.chargePattern;
            }
            catch (Exception e)
            {
                Form1.dialogMessageShow("读取设置参数发生异常,请检查!");//弹出提示对话框
                String errorInfo = e.Message;
                Console.WriteLine(errorInfo);
            }
            //string[] arrayReturn = PackageDataOver(array);

            return(array);//返回封装后的字符串或字符串数组
        }
コード例 #2
0
        //发送设置参数到下位机
        public static void SendToCMDMachine(SysSet.SettingsStruct setData)
        {
            string[] packData = PackageData(setData); //把设置参数封装成SCPI指令
            //需要添加参数发送成功标志,通过条件判断,读取返回的设置成功与否的标志
            int  sendCount = 0;                       //每条指令最多发送的次数变量,如果次数超过则报错
            bool setDataDownloadSuccessFlag = true;   //设置参数全部下载到下位机的成功标志

            foreach (string s in packData)
            {
                UsbIO.sendToARM(s);
                Form1.Delay(40);//先延时40ms,然后判断是否返回接收成功的信息,如果返回继续发送下一条,没返回则,每隔一段时间发送一次相同的请求,五次后还没返回正确信息则报错
                while (!Form1.SCPIsendSuccessFlag)
                {
                    sendCount++;
                    Form1.Delay(900);//延时900ms
                    if (sendCount < 5)
                    {
                        UsbIO.sendToARM(s);
                    }
                    else
                    {
                        setDataDownloadSuccessFlag = false;
                        break;
                    }
                }
                if (sendCount < 5)
                {
                    sendCount = 0;
                }
                else
                {
                    break;
                }
                Form1.SCPIsendSuccessFlag = false;//返回该指令的接收成功信息后再把标志置为false
            }

            Form1.SCPIsendSuccessFlag = false;//返回该指令的接收成功信息后再把标志置为false
            if (setDataDownloadSuccessFlag)
            {
                Form1.dialogMessageShow("参数下载成功!");      //弹出提示对话框
                Form1.setDataDownloadSuccessFlag = true; //参数下载成功的标志
            }
            else
            {
                Form1.dialogMessageShow("参数下载失败,请检查设备并重新下载!");//弹出提示对话框
            }
        }