//根据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);//返回封装后的字符串或字符串数组 }
//发送设置参数到下位机 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("参数下载失败,请检查设备并重新下载!");//弹出提示对话框 } }