Commit 999ff99e 几米阳光

增加新温湿度

1 个父辈 17c99dc5
...@@ -37,6 +37,8 @@ ...@@ -37,6 +37,8 @@
<add key ="OutStoreWaitSeconds" value ="10"/> <add key ="OutStoreWaitSeconds" value ="10"/>
<!--压紧轴对应1mm的脉冲--> <!--压紧轴对应1mm的脉冲-->
<add key="ComAxisChangeValue" value="2400" /> <add key="ComAxisChangeValue" value="2400" />
<!--温控器类型,0=壁挂王字壳温湿度变送器,1=妙昕温湿度记录仪-->
<add key ="HumitureControllerType" value ="1"/>
</appSettings> </appSettings>
<log4net> <log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
......
...@@ -158,6 +158,14 @@ namespace OnlineStore.ACSingleStore ...@@ -158,6 +158,14 @@ namespace OnlineStore.ACSingleStore
HideForm(); HideForm();
this.Opacity = 1; this.Opacity = 1;
txtTempPort.Text = store.Config.Humiture_Port; txtTempPort.Text = store.Config.Humiture_Port;
if (HumitureController.HumitureControllerType.Equals(1))
{
groupHistory.Visible = true;
}
else
{
groupHistory.Visible = false;
}
} }
private DateTime preReadModblsTime = DateTime.Now; private DateTime preReadModblsTime = DateTime.Now;
private void timer1_Tick(object sender, EventArgs e) private void timer1_Tick(object sender, EventArgs e)
...@@ -1454,5 +1462,22 @@ namespace OnlineStore.ACSingleStore ...@@ -1454,5 +1462,22 @@ namespace OnlineStore.ACSingleStore
DebugStatus(false); DebugStatus(false);
} }
} }
private void btnSelHistory_Click(object sender, EventArgs e)
{
int count = HumitureController.QueryHistoryCount();
txtHistoryCount.Text = count.ToString();
int cuCount = HumitureController.QueryCurrCount();
txtCurrCount.Text = cuCount.ToString();
List<object> data = HumitureController.QueryHistory();
if (data.Count >= 3)
{
txtHistoryTemp.Text = data[0].ToString();
txtHistoryHum.Text = data[1].ToString();
txtHistoryTime.Text = data[2].ToString();
}
}
} }
} }
...@@ -61,8 +61,14 @@ ...@@ -61,8 +61,14 @@
20190326修改: 20190326修改:
伺服若已在原点但未回过原点,需要匀速走1500秒,再回原点 伺服若已在原点但未回过原点,需要匀速走1500秒,再回原点
20190410
如果是7*32的料格,升降轴先上升,压紧轴再运动
增加新温控器:妙昕温湿度记录仪文档
20190411
增加相机重新加载功能
增加新的温湿度代码。
......
...@@ -79,5 +79,10 @@ namespace OnlineStore.Common ...@@ -79,5 +79,10 @@ namespace OnlineStore.Common
/// 压紧轴1mm对应的脉冲 /// 压紧轴1mm对应的脉冲
/// </summary> /// </summary>
public static string ComAxisChangeValue = "ComAxisChangeValue"; public static string ComAxisChangeValue = "ComAxisChangeValue";
/// <summary>
/// 温控器类型,0=壁挂王字壳温湿度变送器,1=妙昕温湿度记录仪
/// </summary>
public static string HumitureControllerType = "HumitureControllerType";
} }
} }
...@@ -23,8 +23,9 @@ namespace OnlineStore.Common ...@@ -23,8 +23,9 @@ namespace OnlineStore.Common
private static int dataBits = 8;//数据位 private static int dataBits = 8;//数据位
private static StopBits stopBits = StopBits.One; //停止位 private static StopBits stopBits = StopBits.One; //停止位
private static AcSerialBean sb = null; private static AcSerialBean sb = null;
private static string LogName = ""; private static string LogName = "";
public static int HumitureControllerType = ConfigAppSettings.GetIntValue(Setting_Init.HumitureControllerType);
public static bool Init(string port) public static bool Init(string port)
{ {
if (IsRun && port.Equals(serialPort)) if (IsRun && port.Equals(serialPort))
...@@ -40,6 +41,10 @@ namespace OnlineStore.Common ...@@ -40,6 +41,10 @@ namespace OnlineStore.Common
if (sb == null) if (sb == null)
{ {
serialPort = port; serialPort = port;
if (HumitureControllerType.Equals(1))
{
bautRate = 9600;//波特率
}
sb = new AcSerialBean(serialPort, bautRate, parity, dataBits, stopBits); sb = new AcSerialBean(serialPort, bautRate, parity, dataBits, stopBits);
} }
try try
...@@ -102,14 +107,21 @@ namespace OnlineStore.Common ...@@ -102,14 +107,21 @@ namespace OnlineStore.Common
} }
byte[] sendData = new byte[8]; byte[] sendData = new byte[8];
sendData[0] = 0x01; sendData[0] = 0x01;
if (HumitureControllerType.Equals(1))
{
sendData[1] = 0x04;
}
else
{
sendData[1] = 0x03; sendData[1] = 0x03;
}
sendData[2] = 0x00; sendData[2] = 0x00;
sendData[3] = 0x00; sendData[3] = 0x00;
sendData[4] = 0x00; sendData[4] = 0x00;
sendData[5] = 0x02; sendData[5] = 0x02;
sendData[6] = 0x00; sendData[6] = 0x00;
sendData[7] = 0x00; sendData[7] = 0x00;
sendData = buildCheckData(sendData, sendData.Length-2); sendData = buildCheckData(sendData, sendData.Length - 2);
string str = AcSerialBean.byteToHexStr(sendData); string str = AcSerialBean.byteToHexStr(sendData);
LogUtil.debug("温湿度控制器发送数据:" + str); LogUtil.debug("温湿度控制器发送数据:" + str);
byte[] reviceData = new byte[9]; byte[] reviceData = new byte[9];
...@@ -119,12 +131,124 @@ namespace OnlineStore.Common ...@@ -119,12 +131,124 @@ namespace OnlineStore.Common
} }
public static int QueryHistoryCount()
{
if (IsRun.Equals(false) || HumitureControllerType.Equals(2).Equals(false))
{
return -1;
}
byte[] sendData = new byte[8];
sendData[0] = 0x01;
sendData[1] = 0x04;
sendData[2] = 0x20;
sendData[3] = 0x00;
byte[] addrByte = AcSerialBean.StringToByte("2000");
if (addrByte.Length == 1)
{
sendData[2] = 0x00;
sendData[3] = addrByte[0];
}
else if (addrByte.Length == 2)
{
sendData[3] = addrByte[1];
sendData[2] = addrByte[0];
}
sendData[4] = 0x00;
sendData[5] = 0x02;
sendData[6] = 0x00;
sendData[7] = 0x00;
sendData = buildCheckData(sendData, sendData.Length - 2);
string str = AcSerialBean.byteToHexStr(sendData);
LogUtil.debug("温湿度控制器发送数据:" + str);
byte[] reviceData = new byte[9];
bool isOk = false;
sb.SendCommand(sendData, ref reviceData, 100, out isOk);
return getReviceIntData(reviceData);
}
public static int QueryCurrCount()
{
if (IsRun.Equals(false) || HumitureControllerType.Equals(2).Equals(false))
{
return -1;
}
byte[] sendData = new byte[8];
sendData[0] = 0x01;
sendData[1] = 0x04;
sendData[2] = 0x20;
sendData[3] = 0x02;
sendData[4] = 0x00;
sendData[5] = 0x02;
sendData[6] = 0x00;
sendData[7] = 0x00;
sendData = buildCheckData(sendData, sendData.Length - 2);
string str = AcSerialBean.byteToHexStr(sendData);
LogUtil.debug("温湿度控制器发送数据:" + str);
byte[] reviceData = new byte[9];
bool isOk = false;
sb.SendCommand(sendData, ref reviceData, 100, out isOk);
return getReviceIntData(reviceData);
}
public static List<object> QueryHistory()
{
List<object> list = new List<object>();
if (IsRun.Equals(false)||HumitureControllerType.Equals(2).Equals(false))
{
return list;
}
byte[] sendData = new byte[8];
sendData[0] = 0x01;
sendData[1] = 0x04;
sendData[2] = 0x20;
sendData[3] = 0x04;
sendData[4] = 0x00;
sendData[5] = 0x05;
sendData[6] = 0x00;
sendData[7] = 0x00;
sendData = buildCheckData(sendData, sendData.Length - 2);
string str = AcSerialBean.byteToHexStr(sendData);
LogUtil.debug("温湿度控制器发送数据:" + str);
byte[] reviceData = new byte[15];
bool isOk = false;
sb.SendCommand(sendData, ref reviceData, 100, out isOk);
try
{
if (reviceData != null && reviceData.Length >= 9)
{
string temp = String.Format("{0:X2}", reviceData[3]) + String.Format("{0:X2}", reviceData[4]);
string hum = String.Format("{0:X2}", reviceData[5]) + String.Format("{0:X2}", reviceData[6]);
double tempV = (double)Convert.ToInt32(temp, 16) / 10;
double humV = (double)Convert.ToInt32(hum, 16) / 10;
int year = Convert.ToInt32(String.Format("{0:X2}", reviceData[7]), 16);
int mouth = Convert.ToInt32(String.Format("{0:X2}", reviceData[8]), 16);
int day = Convert.ToInt32(String.Format("{0:X2}", reviceData[9]), 16);
int hour = Convert.ToInt32(String.Format("{0:X2}", reviceData[10]), 16);
int minute = Convert.ToInt32(String.Format("{0:X2}", reviceData[11]), 16);
int second = Convert.ToInt32(String.Format("{0:X2}", reviceData[12]), 16);
DateTime time = new DateTime(year, mouth, day, hour, minute, second);
list.Add(tempV);
list.Add(humV);
list.Add(time);
}
}
catch (Exception ex)
{
LOGGER.Info(LogName + "转换出错:" + ex.ToString());
}
return list;
}
private static byte[] buildCheckData(byte[] sendData, int length) private static byte[] buildCheckData(byte[] sendData, int length)
{ {
ushort pChecksum = 0; ushort pChecksum = 0;
AcSerialBean.CalculateCRC(sendData, length, out pChecksum); AcSerialBean.CalculateCRC(sendData, length, out pChecksum);
string checkStr = Convert.ToString(pChecksum, 16); string checkStr = Convert.ToString(pChecksum, 16);
byte[] checkByte = AcSerialBean.StringToByte(checkStr); byte[] checkByte = AcSerialBean.StringToByte(checkStr);
if (checkByte.Length == 1) if (checkByte.Length == 1)
{ {
sendData[length] = checkByte[0]; sendData[length] = checkByte[0];
...@@ -138,6 +262,28 @@ namespace OnlineStore.Common ...@@ -138,6 +262,28 @@ namespace OnlineStore.Common
return sendData; return sendData;
} }
private static int getReviceIntData(byte[] dataArray)
{
List<double> list = new List<double>();
try
{
if (dataArray == null)
{
return -1;
}
if (dataArray.Length >= 9)
{
string data = String.Format("{0:X2}", dataArray[5]) + String.Format("{0:X2}", dataArray[6]+String.Format("{0:X2}", dataArray[3]) + String.Format("{0:X2}", dataArray[4]) );
int tempV = Convert.ToInt32(data, 16);
return tempV;
}
}
catch (Exception ex)
{
LOGGER.Info(LogName + "转换出错:" + ex.ToString());
}
return -1;
}
private static List<double> getReviceData(byte[] dataArray) private static List<double> getReviceData(byte[] dataArray)
{ {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!