private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; if (electricData != "" && measureVoltageData != "" && leakElectricData != "")//判断是不是第一次请求数据,即变量中有没有结果数据 { if (resultData.outputVoltageData.Count != 0 && resultData.electricData.Count != 0 && resultData.leakElectricData.Count != 0) { SaveDataToLocal.writeFile();//把电压电流和漏电流数据都存入到电脑中去 } huatuFlag = true; ResultShow();//显示结果刷新 } if (receiveStartFlag)//是正在进行测试,可以发送请求数据指令 { //string[] SCPIsendGetDataPackOver = SendDataHandle.PackageDataOver(SCPIsendGetData);//给请求指令加上校验码和结束码 SendDataHandle.sendGet(SCPIsendGetData); //发送得到数据的请求 } timer1.Enabled = true;//如果不先把enabled设置成false对话框会一直弹下去 }
//把数据或者参数发送给下位机 public static void sendToARM(string str) { if (port.IsOpen) { //port.Write(str); byte[] bTemp = new byte[str.Length + 3]; int i = 0; foreach (char c in str) { bTemp[i] = (byte)c; i++; } bTemp[i] = SendDataHandle.SCPIStrSumChkGet(str); bTemp[i + 1] = (byte)Form1.end1; bTemp[i + 2] = (byte)Form1.end2; port.Write(bTemp, 0, bTemp.Length); sendDataShow(str + SendDataHandle.SCPIStrSumChkGet(str) + Form1.end1 + Form1.end2); //调用方法把发送的SCPI指令显示到发送数据窗口 } else { MessageBox.Show("设备未打开连接"); } }
//从参数设置里读取内容,并判断设备连接状态和参数设置是否为空 private void ReadSet() { setData.testVoltage = textBox10.Text; //得到设置的测试电压值 setData.electricUpLimit = textBox9.Text; //得到设置的充电电流上限值 setData.powerUpLimit = textBox8.Text; //得到充电功率上限值 setData.outputRes = comboBox1.Text; //得到输出电阻值 setData.dischargeElectric = textBox7.Text; //得到放电电流值 setData.dischargePower = textBox1.Text; //得到放电功率值 setData.measurePattern = comboBox3.Text; //得到测量模式 setData.voltageRiseSlope = textBox3.Text; //(高压源的最大输出电压)电压上升斜率 setData.voltageDropSlope = textBox4.Text; //(高压源的最大输出电压)电压下降斜率 setData.chargePattern = comboBox2.Text; //得到充电模式 //判断设置参数是否填写完整 if (UsbIO.is_Open()) { if (setData.testVoltage == "" || setData.electricUpLimit == "" || setData.powerUpLimit == "" || setData.outputRes == "" || setData.dischargeElectric == "" || setData.dischargePower == "" || setData.measurePattern == "" || setData.voltageRiseSlope == "" || setData.voltageDropSlope == "" || setData.chargePattern == "" ) { MessageBox.Show("设置参数不能为空,请填写完整!"); //弹出提示对话框 } else { SendDataHandle.SendToCMDMachine(setData);//用于发送设置参数到下位机 } } else { MessageBox.Show("设备未连接!");//弹出提示对话框 } }
//关闭连接按钮 private void button2_Click(object sender, EventArgs e) { if (UsbIO.is_Open())//确保是设备处于连接状态才进行关闭连接的操作 { if (!testStartFlag) { closeTest(); //关闭接收数据 SendDataHandle.SCPICDisconnect(); //先向下位机发送退出远控状态的指令 UsbIO.DataRecieveStop(); //结束串口接收数据的线程 UsbIO.Close_Port(); //关闭串口连接 if (!UsbIO.is_Open()) { MessageBox.Show("设备已断开连接"); //弹出提示对话框 textBox11.Text = "设备未连接"; //显示设备连接状态 textBox11.BackColor = Color.WhiteSmoke; //控件背景颜色改变 } else { MessageBox.Show("设备连接断开失败"); //弹出提示对话框 } } else { MessageBox.Show("请先结束测试!"); //弹出提示对话框 } } }
//打开连接按钮 private void button1_Click(object sender, EventArgs e) { if (!UsbIO.is_Open())//确保设备处于未连接状态再进行连接操作,否则不操作 { portNum = PortNums.Text; UsbIO.Open_Port(); // 打开串口 UsbIO.DataRecieveStart(); //开始串口接收数据的线程 if (UsbIO.is_Open()) { bool successFlag = SendDataHandle.SCPIConnect();//发送SCPI联机指令给下位机 if (successFlag) { MessageBox.Show("设备连接成功"); //弹出提示对话框 textBox11.Text = "设备已连接"; //显示设备连接状态 textBox11.BackColor = Color.Red; //控件背景颜色改变 } else { MessageBox.Show("设备连接失败"); //弹出提示对话框 textBox11.Text = "设备未连接"; //显示设备连接状态 textBox11.BackColor = Color.WhiteSmoke; //控件背景颜色改变 } } else { MessageBox.Show("串口未打开"); //弹出提示对话框 textBox11.Text = "设备未连接"; //显示设备连接状态 textBox11.BackColor = Color.WhiteSmoke; //控件背景颜色改变 } } }
//结束测试按钮 private void button4_Click(object sender, EventArgs e) { if (testStartFlag == true) { //closeTest();//调用测试关闭的函数 //clearAllShowData();//调用清空整个上位机界面数据参数的函数 SendDataHandle.SCPITestStop(); //给下位机发送停止测试的指令 Form1.testStartFlag = false; //开始测试标志置零 UsbIO.form1.textBox14.Text = "测试未开始"; //显示测试状态 textBox14.BackColor = Color.WhiteSmoke; //控件背景颜色改变 } else { } }
//开始测试按钮 private void button3_Click(object sender, EventArgs e) { if (UsbIO.is_Open()) { //TaskGatherRealTime = new Thread(GatherRealTime);//开启(创建)一个绘图线程 //startTest();//调用测试开始的函数 testStartFlag = true; //开始测试标志置一 SendDataHandle.SCPITestStart(); //给下位机发送开始测试的指令 UsbIO.form1.textBox14.Text = "正在测试"; //显示测试状态 textBox14.BackColor = Color.Red; //控件背景颜色改变 } else { MessageBox.Show("设备未连接,请先连接设备"); //弹出提示对话框 } }