久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
這是我做的一個關(guān)于dc_power的校準(zhǔn)軟件 附源碼
[打印本頁]
作者:
fcg99999999
時間:
2018-9-6 15:29
標(biāo)題:
這是我做的一個關(guān)于dc_power的校準(zhǔn)軟件 附源碼
首選需要連接串口,之后就可以進行傳輸數(shù)據(jù)操作,
界面圖形化,非常容易上手,源碼都在里面了,有需要的話
1536218745(1).jpg
(15.66 KB, 下載次數(shù): 58)
下載附件
串口連接
2018-9-6 15:26 上傳
可以學(xué)習(xí)一下源碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using ZedGraph;
using System.Threading;
using System.Collections;
namespace DC_POWER
{
public partial class Mainform : Form
{
private const float VOLTAGE_MAX = 30.00f, CURRENT_MAX = 4.000f;
public enum MODE
{
MODE_VOLTAGE = 0x00,
MODE_CURRENT = 0x01,
}
private MODE currentMode = MODE.MODE_VOLTAGE;
//與下位機通訊相關(guān)
public enum COM_CMD
{
//M2S: master to slave cmd, S2M: slave to master
USART_M2S_Output = 0x01, //輸出控制(默認(rèn)關(guān))
USART_M2S_Mode = 0x02, //輸出模式切換(默認(rèn)電壓模式)
USART_M2S_SetVal = 0x03, //Master2Slave設(shè)置期望值:[1-4]:電壓; [5-8]:電流
USART_M2S_Cal = 0x04, //進入校準(zhǔn)模式(只在下位機開機前幾秒內(nèi)能夠進入校準(zhǔn)模式)
USART_M2S_StepAdd = 0x05, //步進加
USART_M2S_StepSub = 0x06, //步進減
USART_M2S_FAN = 0x07, //風(fēng)扇控制:[1]0關(guān);1開;2自動(默認(rèn))
USART_M2S_STATE = 0x08, //實時數(shù)據(jù)發(fā)送狀態(tài):[1]1發(fā)送數(shù)據(jù) 0停止發(fā)送
USART_M2S_GetVal = 0x09, //獲取前一次的設(shè)定值
USART_S2M_PreVal = 0x0A, //Slave2Master返回前一次的設(shè)定值:[1-4]:電壓值; [5-8]:電流值
USART_S2M_RealVal = 0x0B, //Slave2Master返回的實際值:[1-4]:電壓值; [5-8]:電流值
USART_S2M_RealTemp= 0x0C, //Slave2Master返回溫度值:[1-4]:當(dāng)前溫度值
}
private const byte USART_FRAMEHEAD = 0xAA, USART_FRAMETAIL = 0x55, USART_FRAMECTRL = 0xA5;
private long m_TotalRxLostPackages = 0; //記錄總的丟包數(shù)
private long m_RxPackageDataCount = 0; //記錄接收到的一幀的字節(jié)數(shù)
private const int m_MaxPackageSize = 4096; //一幀最大的字節(jié)數(shù)
private byte[] m_pRxBuf = new byte[m_MaxPackageSize]; //接收緩存
float voltageSet = 0.0f, currentSet = 0.0f, voltageGet = 0.0f, currentGet = 0.0f;
//繪圖相關(guān)
public struct CurveStruct
{
public PointPairList pointList;//曲線數(shù)據(jù)
public Color lineColor;//曲線顏色
public SymbolType lineStyle;//線型
public string curveName;//名稱
public LineItem curve; //曲線
public float scaleFactor;//比例系數(shù)
public byte lineWidth; //線寬
}
private Hashtable curveHashTable = new Hashtable();//用來保存所有的曲線
private GraphPane mGraphPane;
private long tickStart = 0;
double currentTime;
//double previousTime = 0;
CurveStruct mCurveStructVolSet = new CurveStruct();
CurveStruct mCurveStructVolGet = new CurveStruct();
CurveStruct mCurveStructCurSet = new CurveStruct();
CurveStruct mCurveStructCurGet = new CurveStruct();
//線程相關(guān)
private Queue<byte> receiveByteQueue = new Queue<byte>();//串口緩存隊列
private Thread _dataParseThread = null; //解析串口接收數(shù)據(jù)線程
private bool _runDataParseThread = false; //決定接收線程是否退出
public Mainform()
{
InitializeComponent();
}
private void Mainform_Load(object sender, EventArgs e)
{
//初始化串口列表,添加本地可用串口號
if (SerialPort.GetPortNames().Length != 0)
{
foreach (string vPortName in SerialPort.GetPortNames())
{
RibbonLabel item = new RibbonLabel();
item.Text = vPortName;
ribbonComboBoxCom1.DropDownItems.Add(item);
ribbonComboBoxCom2.DropDownItems.Add(item);
}
ribbonComboBoxCom1.TextBoxText = SerialPort.GetPortNames()[0];
ribbonComboBoxCom2.TextBoxText = SerialPort.GetPortNames()[0];
}
mGraphPane = zedGraphControl1.GraphPane;
mGraphPane.Title.Text = "DC_POWER";
//添加兩個Y軸,分別顯示電壓、電流
mGraphPane.XAxis.Title.Text = "time";
mGraphPane.YAxis.Title.Text = "Voltage";
mGraphPane.Y2Axis.Title.Text = "Current";
mGraphPane.Y2Axis.IsVisible = true;
mGraphPane.YAxis.Scale.FontSpec.FontColor = Color.Red;
mGraphPane.YAxis.Title.FontSpec.FontColor = Color.Red;
mGraphPane.Y2Axis.Scale.FontSpec.FontColor = Color.Blue;
mGraphPane.Y2Axis.Title.FontSpec.FontColor = Color.Blue;
knob_Voltage.Enabled = false;
knob_Current.Enabled = false;
slideButtonMode.Enabled = false;
slideButtonOutput.Enabled = false;
glassButtonStepAdd.Enabled = false;
glassButtonCAL.Enabled = false;
glassButtonStepSub.Enabled = false;
}
private void Mainform_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen)
{
ribbonButtonOpenCom1_Click(sender, e);
}
if (serialPort2.IsOpen)
{
ribbonButtonOpenCom2_Click(sender, e);
}
}
private void ResetGraphPane()
{
mGraphPane.XAxis.Scale.Min = 0; //X軸最小值0
mGraphPane.XAxis.Scale.Max = 30; //X軸最大30
mGraphPane.XAxis.Scale.MinorStep = 1;//X軸小步長1,也就是小間隔
mGraphPane.XAxis.Scale.MajorStep = 5;//X軸大步長為5,也就是顯示文字的大間隔
mGraphPane.YAxis.Scale.Min = 0; //電壓軸最小值0
mGraphPane.YAxis.Scale.Max = VOLTAGE_MAX;//電壓最大值
mGraphPane.Y2Axis.Scale.Min = 0; //電流軸最小值0
mGraphPane.Y2Axis.Scale.Max = CURRENT_MAX;//電流最大值
//清除原有曲線
if (mGraphPane.CurveList.Count != 0)
{
mGraphPane.CurveList.Clear();
mGraphPane.GraphObjList.Clear();
curveHashTable.Clear();
}
//更新X和Y軸的范圍
zedGraphControl1.AxisChange();
//更新圖表
zedGraphControl1.Invalidate();
//添加四條新的曲線:電壓設(shè)定曲線、電壓實際曲線、電流設(shè)定曲線、實際電流曲線
mCurveStructVolSet.curveName = "SET_V";
mCurveStructVolSet.pointList = new PointPairList();
mCurveStructVolSet.lineColor = Color.Brown;
mCurveStructVolSet.lineStyle = SymbolType.None;
mCurveStructVolSet.lineWidth = 2;
mCurveStructVolSet.scaleFactor = 1;// 360.0f / 4000.0f;
mCurveStructVolSet.curve = mGraphPane.AddCurve(
mCurveStructVolSet.curveName,
mCurveStructVolSet.pointList,
mCurveStructVolSet.lineColor,
mCurveStructVolSet.lineStyle);
mCurveStructVolSet.curve.Line.Width = mCurveStructVolSet.lineWidth;
curveHashTable.Add("SET_V", mCurveStructVolSet);
mCurveStructVolGet.curveName = "GET_V";
mCurveStructVolGet.pointList = new PointPairList();
mCurveStructVolGet.lineColor = Color.Red;
mCurveStructVolGet.lineStyle = SymbolType.None;
mCurveStructVolGet.lineWidth = 2;
mCurveStructVolGet.scaleFactor = 1;// 360.0f / 4000.0f;
mCurveStructVolGet.curve = mGraphPane.AddCurve(
mCurveStructVolGet.curveName,
mCurveStructVolGet.pointList,
mCurveStructVolGet.lineColor,
mCurveStructVolGet.lineStyle);
mCurveStructVolGet.curve.Line.Width = mCurveStructVolGet.lineWidth;
curveHashTable.Add("GET_V", mCurveStructVolGet);
mCurveStructCurSet.curveName = "SET_I";
mCurveStructCurSet.pointList = new PointPairList();
mCurveStructCurSet.lineColor = Color.DarkBlue;
mCurveStructCurSet.lineStyle = SymbolType.None;
mCurveStructCurSet.lineWidth = 2;
mCurveStructCurSet.scaleFactor = 1;// 360.0f / 4000.0f;
mCurveStructCurSet.curve = mGraphPane.AddCurve(
mCurveStructCurSet.curveName,
mCurveStructCurSet.pointList,
mCurveStructCurSet.lineColor,
mCurveStructCurSet.lineStyle);
mCurveStructCurSet.curve.Line.Width = mCurveStructCurSet.lineWidth;
curveHashTable.Add("SET_I", mCurveStructCurSet);
mCurveStructCurSet.curve.IsY2Axis = true;
mCurveStructCurGet.curveName = "GET_I";
mCurveStructCurGet.pointList = new PointPairList();
mCurveStructCurGet.lineColor = Color.Blue;
mCurveStructCurGet.lineStyle = SymbolType.None;
mCurveStructCurGet.lineWidth = 2;
mCurveStructCurGet.scaleFactor = 1;// 360.0f / 4000.0f;
mCurveStructCurGet.curve = mGraphPane.AddCurve(
mCurveStructCurGet.curveName,
mCurveStructCurGet.pointList,
mCurveStructCurGet.lineColor,
mCurveStructCurGet.lineStyle);
mCurveStructCurGet.curve.Line.Width = mCurveStructCurGet.lineWidth;
curveHashTable.Add("GET_I", mCurveStructCurGet);
mCurveStructCurGet.curve.IsY2Axis = true;
}
private void PrepareReceiveData()
{
_dataParseThread = new Thread(new ThreadStart(DataParseThreadFunc));
_runDataParseThread = true;
}
private void StartReciveData()
{
PrepareReceiveData();
if (_dataParseThread != null)
{
_dataParseThread.Start();
}
}
private void StopReceiveData()
{
_runDataParseThread = false;
if (_dataParseThread != null)
{
_dataParseThread.Abort();
_dataParseThread = null;
}
}
private void knob_Voltage_ValueChanged(object sender, EventArgs e)
{
thermometerVoltage.Value = (float)knob_Voltage.Value / 10.0f;
lbDigitalMeter_Voltage_Set.Value = (float)knob_Voltage.Value / 10.0f;
float voltage = (float)lbDigitalMeter_Voltage_Set.Value;
float current = (float)lbDigitalMeter_Current_Set.Value;
byte[] data = new byte[9];
data[0] = (byte)COM_CMD.USART_M2S_SetVal;
for(int iter = 0; iter < 4; iter++)
{
data[1+iter] = BitConverter.GetBytes(voltage)[iter];
data[5+iter] = BitConverter.GetBytes(current)[iter];
}
PackData2Frame(data);
}
private void knob_Current_ValueChanged(object sender, EventArgs e)
{
thermometerCurrent.Value = (float)knob_Current.Value / 100.0f;
lbDigitalMeter_Current_Set.Value = (float)knob_Current.Value / 100.0f;
float voltage = (float)lbDigitalMeter_Voltage_Set.Value;
float current = (float)lbDigitalMeter_Current_Set.Value;
byte[] data = new byte[9];
data[0] = (byte)COM_CMD.USART_M2S_SetVal;
for (int iter = 0; iter < 4; iter++)
{
data[1 + iter] = BitConverter.GetBytes(voltage)[iter];
data[5 + iter] = BitConverter.GetBytes(current)[iter];
}
PackData2Frame(data);
}
private void slideButtonOutput_Click(object sender, EventArgs e)
{
if (labelOutput.Text == "OFF")
{
labelOutput.Text = "ON";
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_Output});//開輸出
Thread.Sleep(10);
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_STATE, 0x01 });//開始發(fā)送數(shù)據(jù)
//開始接收數(shù)據(jù)
tickStart = Environment.TickCount;
StartReciveData();
}
else
{
labelOutput.Text = "OFF";
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_Output });//關(guān)輸出
Thread.Sleep(10);
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_STATE, 0x00 });//停止發(fā)送數(shù)據(jù)
//停止接收數(shù)據(jù)
StopReceiveData();
}
}
private void slideButtonMode_Click(object sender, EventArgs e)
{
if(currentMode == MODE.MODE_VOLTAGE)
{
labelMode.Text = "Mode: A";
currentMode = MODE.MODE_CURRENT;
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_Mode, 0x01});//電流模式
}
else
{
labelMode.Text = "Mode: V";
currentMode = MODE.MODE_VOLTAGE;
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_Mode, 0x00});//電壓模式
}
}
private void ribbonButtonOpenCom1_Click(object sender, EventArgs e)
{
try
{
if (ribbonButtonOpenCom1.Text == "打開串口")
{
serialPort1.PortName = ribbonComboBoxCom1.TextBoxText;
serialPort1.BaudRate = int.Parse(ribbonComboBoxBaud1.TextBoxText);
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.DataBits = 8;
serialPort1.Open();
//成功打開后 設(shè)置按鈕相應(yīng)的狀態(tài)
ribbonButtonOpenCom1.Text = "關(guān)閉串口";
ribbonButtonOpenCom1.Image = Image.FromFile(Application.StartupPath + "\\ICON\\shutdown.ico");
ribbonComboBoxCom1.Enabled = false;
ribbonComboBoxBaud1.Enabled = false;
//復(fù)位各表盤的數(shù)值
thermometerVoltage.Value = 0;
thermometerCurrent.Value = 0;
thermometerTemp.Value = 30;
lbDigitalMeter_Voltage_Set.Value = 0;
lbDigitalMeter_Current_Set.Value = 0;
lbDigitalMeter_Voltage_Get.Value = 0;
lbDigitalMeter_Current_Get.Value = 0;
knob_Voltage.Value = 0;
knob_Current.Value = 0;
slideButtonMode.Checked = false;
slideButtonOutput.Checked = false;
//重新設(shè)置坐標(biāo),清空原有曲線后添加電壓、電流設(shè)定曲線
ResetGraphPane();
knob_Voltage.Enabled = true;
knob_Current.Enabled = true;
slideButtonMode.Enabled = true;
slideButtonOutput.Enabled = true;
glassButtonStepAdd.Enabled = true;
glassButtonCAL.Enabled = true;
glassButtonStepSub.Enabled = true;
//獲取下位機前一次電壓、電流的設(shè)定值
byte[] data = new byte[] { (byte)COM_CMD.USART_M2S_GetVal };
PackData2Frame(data);
}
else
{
//關(guān)閉下位機輸出
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_STATE, 0x00 });//停止發(fā)送數(shù)據(jù)
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_Output, 0x00 });//關(guān)輸出
Thread.Sleep(200);
serialPort1.Close();
ribbonButtonOpenCom1.Text = "打開串口";
ribbonButtonOpenCom1.Image = Image.FromFile(Application.StartupPath + "\\icon\\standby.ico");
ribbonComboBoxCom1.Enabled = true;
ribbonComboBoxBaud1.Enabled = true;
//停止接收數(shù)據(jù)
StopReceiveData();
knob_Voltage.Enabled = false;
knob_Current.Enabled = false;
slideButtonMode.Enabled = false;
slideButtonOutput.Enabled = false;
glassButtonStepAdd.Enabled = false;
glassButtonCAL.Enabled = false;
glassButtonStepSub.Enabled = false;
}
}
catch (Exception error)
{
MessageBox.Show(error.ToString());
}
}
float voltage = 0, current = 0, temp = 0;
byte[] tmpArray = new byte[4];
private void DataParseThreadFunc()
{
while (_runDataParseThread)
{
lock (this)
{
if (receiveByteQueue.Count > 0)
{
if (AnalyzePackage(receiveByteQueue.Dequeue()))
{
currentTime = (Environment.TickCount - tickStart) / 1000.0;// +previousTime;
switch (m_pRxBuf[0])
{
case (byte)COM_CMD.USART_S2M_PreVal://前一次設(shè)置的電壓、電流
tmpArray[0] = m_pRxBuf[1];
tmpArray[1] = m_pRxBuf[2];
tmpArray[2] = m_pRxBuf[3];
tmpArray[3] = m_pRxBuf[4];
voltage = BitConverter.ToSingle(tmpArray, 0);
tmpArray[0] = m_pRxBuf[5];
tmpArray[1] = m_pRxBuf[6];
tmpArray[2] = m_pRxBuf[7];
tmpArray[3] = m_pRxBuf[8];
current = BitConverter.ToSingle(tmpArray, 0);
knob_Voltage.Value = (int)(voltage*10);
knob_Current.Value = (int)(current*100);
break;
case (byte)COM_CMD.USART_S2M_RealVal://實時電壓、電流數(shù)據(jù)
tmpArray[0] = m_pRxBuf[1];
tmpArray[1] = m_pRxBuf[2];
tmpArray[2] = m_pRxBuf[3];
tmpArray[3] = m_pRxBuf[4];
voltage = BitConverter.ToSingle(tmpArray, 0);
tmpArray[0] = m_pRxBuf[5];
tmpArray[1] = m_pRxBuf[6];
tmpArray[2] = m_pRxBuf[7];
tmpArray[3] = m_pRxBuf[8];
current = BitConverter.ToSingle(tmpArray, 0);
mCurveStructVolSet.pointList.Add(currentTime, (float)lbDigitalMeter_Voltage_Set.Value);
mCurveStructVolGet.pointList.Add(currentTime, voltage);
mCurveStructCurSet.pointList.Add(currentTime, (float)lbDigitalMeter_Current_Set.Value);
mCurveStructCurGet.pointList.Add(currentTime, current);
lbDigitalMeter_Voltage_Get.Value = (double)voltage;
lbDigitalMeter_Current_Get.Value = (double)current;
thermometerVoltage.Value = voltage;
thermometerCurrent.Value = current;
break;
case (byte)COM_CMD.USART_S2M_RealTemp://當(dāng)前溫度
tmpArray[0] = m_pRxBuf[1];
tmpArray[1] = m_pRxBuf[2];
tmpArray[2] = m_pRxBuf[3];
tmpArray[3] = m_pRxBuf[4];
temp = BitConverter.ToSingle(tmpArray, 0);
thermometerTemp.Value = temp;
if (temp <= 40.0)
{
thermometerTemp.BackColor = Color.Green;
}
else if (temp <= 50)
{
thermometerTemp.BackColor = Color.Brown;
}
else
{
thermometerTemp.BackColor = Color.Red;
}
break;
}
Scale xScale = zedGraphControl1.GraphPane.XAxis.Scale;
if (currentTime > xScale.Max - xScale.MajorStep)
{
xScale.Max = currentTime + xScale.MajorStep;
xScale.Min = xScale.Max - 30.0;
}
//更新X和Y軸的范圍
zedGraphControl1.AxisChange();
//更新圖表
zedGraphControl1.Invalidate();
}
}
}
}
}
private byte USART_LastByte = 0;
private bool USART_BeginFlag = false;
private bool USART_CtrlFlag = false;
private long USART_RevOffset = 0;
private byte CheckSum = 0;
private bool AnalyzePackage(byte data)
{
if (((data == USART_FRAMEHEAD) && (USART_LastByte == USART_FRAMEHEAD)) || (USART_RevOffset > m_MaxPackageSize))
{
if (USART_RevOffset < 6 && USART_RevOffset > 0)
{
m_TotalRxLostPackages++;
}
//RESET
USART_RevOffset = 0;
USART_BeginFlag = true;
USART_LastByte = data;
return false;
}
if ((data == USART_FRAMETAIL) && (USART_LastByte == USART_FRAMETAIL) && USART_BeginFlag)
{
USART_RevOffset--;//得到除去頭尾和控制符的數(shù)據(jù)的個數(shù)
m_RxPackageDataCount = USART_RevOffset - 1;
CheckSum -= USART_FRAMETAIL;
CheckSum -= m_pRxBuf[m_RxPackageDataCount];
USART_LastByte = data;
USART_BeginFlag = false;
if (CheckSum == m_pRxBuf[m_RxPackageDataCount])
{
CheckSum = 0;
return true;
}
m_TotalRxLostPackages++;
CheckSum = 0;
return false;
}
USART_LastByte = data;
if (USART_BeginFlag)
{
if (USART_CtrlFlag)
{
m_pRxBuf[USART_RevOffset++] = data;
CheckSum += data;
USART_CtrlFlag = false;
USART_LastByte = USART_FRAMECTRL;
}
else if (data == USART_FRAMECTRL)
{
USART_CtrlFlag = true;
}
else
{
m_pRxBuf[USART_RevOffset++] = data;
CheckSum += data;
}
}
return false;
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(5);
try
{
byte[] byteArray = new byte[serialPort1.ReadBufferSize];
int len = serialPort1.Read(byteArray, 0, byteArray.Length);
lock (this)
{
for (int i = 0; i < len; i++)
{
receiveByteQueue.Enqueue(byteArray[i]);
}
}
}
catch (Exception error)
{
MessageBox.Show("serialPort1_DataReceived" + error.ToString());
}
}
private void PackData2Frame(params byte[] byteArray)
{
if (serialPort1.IsOpen)
{
byte[] tmpByteArray = new byte[100];
byte len = 0;
tmpByteArray[0] = USART_FRAMEHEAD;
tmpByteArray[1] = USART_FRAMEHEAD;
CheckSum = 0;
len = 2;
foreach (byte tmp in byteArray)
{
if (tmp == USART_FRAMECTRL || tmp == USART_FRAMEHEAD || tmp == USART_FRAMETAIL)
{
tmpByteArray[len] = USART_FRAMECTRL;
len++;
}
tmpByteArray[len] = tmp;
CheckSum += tmp;
len++;
}
if (CheckSum == USART_FRAMECTRL || CheckSum == USART_FRAMEHEAD || CheckSum == USART_FRAMETAIL)
{
tmpByteArray[len] = USART_FRAMECTRL;
len++;
}
tmpByteArray[len] = CheckSum;
len++;
tmpByteArray[len] = USART_FRAMETAIL;
len++;
tmpByteArray[len] = USART_FRAMETAIL;
len++;
serialPort1.Write(tmpByteArray, 0, len);
}
}
private void ribbonButtonOpenCom2_Click(object sender, EventArgs e)
{
try
{
if (ribbonButtonOpenCom2.Text == "打開串口")
{
serialPort2.PortName = ribbonComboBoxCom2.TextBoxText;
serialPort2.BaudRate = int.Parse(ribbonComboBoxBaud2.TextBoxText);
serialPort2.StopBits = System.IO.Ports.StopBits.One;
serialPort2.Parity = System.IO.Ports.Parity.None;
serialPort2.DataBits = 8;
serialPort2.Open();
//成功打開后 設(shè)置按鈕相應(yīng)的狀態(tài)
ribbonButtonOpenCom2.Text = "關(guān)閉串口";
ribbonButtonOpenCom2.Image = Image.FromFile(Application.StartupPath + "\\ICON\\shutdown.ico");
ribbonComboBoxCom2.Enabled = false;
ribbonComboBoxBaud2.Enabled = false;
}
else
{
serialPort2.Close();
ribbonButtonOpenCom2.Text = "打開串口";
ribbonButtonOpenCom2.Image = Image.FromFile(Application.StartupPath + "\\icon\\standby.ico");
ribbonComboBoxCom2.Enabled = true;
ribbonComboBoxBaud2.Enabled = true;
}
}
catch (Exception error)
{
MessageBox.Show(error.ToString());
}
}
private void glassButtonCAL_Click(object sender, EventArgs e)
{
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_Cal});
}
private void glassButtonStepAdd_Click(object sender, EventArgs e)
{
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_StepAdd });
}
private void glassButtonStepSub_Click(object sender, EventArgs e)
{
PackData2Frame(new byte[] { (byte)COM_CMD.USART_M2S_StepSub });
}
}
}
復(fù)制代碼
全部資料51hei下載地址:
DC_POWER.rar
(1.32 MB, 下載次數(shù): 18)
2018-9-6 15:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日本精品一区二区三区在线观看视频
|
毛片视频免费观看
|
精品久久一区二区三区
|
国产羞羞视频在线观看
|
国产精品免费一区二区三区四区
|
日韩欧美成人一区二区三区
|
成人免费视频网站在线看
|
午夜理伦三级理论三级在线观看
|
狠狠的干
|
一区二区免费
|
九九亚洲
|
欧美精品福利
|
精品国产久
|
欧美视频1
|
久草在线在线精品观看
|
久久激情视频
|
国产精品福利在线
|
亚洲天堂网站
|
国产在线精品一区二区三区
|
久草视频观看
|
成人高潮片免费视频欧美
|
日韩在线播放网址
|
91九色婷婷
|
欧美一区视频
|
福利在线看
|
97超碰在线免费
|
国产精品久久久久久av公交车
|
日韩在线播放一区
|
91久久精品一区二区三区
|
嫩草视频在线免费观看
|
成人国产精品久久
|
日韩免费视频一区二区
|
古典武侠第一页久久777
|
九九久久久
|
97精品超碰一区二区三区
|
久久国产综合
|
91看片网
|
中国av在线免费观看
|
www.日韩
|
婷婷亚洲综合
|
亚洲一区二区在线电影
|