Commit 11670160 刘韬

适配1~16com口

1 个父辈 d098c419
......@@ -25,7 +25,7 @@ namespace MachineDll
public string TestConnection()
{
string port="";
for (int i = 1; i < 9;i++ )
for (int i = 1; i < 16;i++ )
{
_ItsSerialPort = new SerialPort("COM"+i.ToString(), BautRate, Parity, DataBits, StopBits);
try
......@@ -140,7 +140,7 @@ namespace MachineDll
}
}
public double ReadAIString(string s)
public double ReadAIString(string s,double scaler=1, ByteType byteType= ByteType.Float_32Bit_Little_endian_ByteSwap)
{
//LOGGER.Debug("serialPortSetting into readAIString");
string[] dataString = s.Split(' ');
......@@ -154,15 +154,34 @@ namespace MachineDll
//LOGGER.Debug("serialPortSetting ,before into sendFuction");
//while (!mb.SendFuction(slaveID, fuctionType, registerAdd, registerQty, ref values)) ;
var re = mb.SendFuction(slaveID, fuctionType, registerAdd, registerQty, ref values);
double dataToFloat = 0;
if (byteType == ByteType.Float_32Bit_Little_endian_ByteSwap)
{
byte[] doubleBytes =
{
values[4], values[3],values[6],values[5]
};
float dataToFloat = BitConverter.ToSingle(doubleBytes, 0);
var dataConvert = CurrentConversion(dataToFloat);
LOGGER.Debug($"IO Return: {re}, org:{dataToFloat},cov:{dataConvert},");
dataToFloat = BitConverter.ToSingle(doubleBytes, 0);
}else if (byteType == ByteType.Double_32Bit_Little_endian_ByteSwap)
{
byte[] doubleBytes =
{
values[4], values[3],values[6],values[5]
};
dataToFloat = BitConverter.ToUInt32(doubleBytes, 0);
}
else if (byteType == ByteType.Int16)
{
byte[] doubleBytes =
{
values[4], values[3]
};
dataToFloat = BitConverter.ToUInt16(doubleBytes, 0);
}
dataToFloat = dataToFloat / scaler;
//var dataConvert = CurrentConversion(dataToFloat);
if (!re)
LOGGER.Debug($"IO2 Return: {re}, org:{dataToFloat}");
////AI1通道
//string data = values[1].ToString("X").PadLeft(4,'0') + "" + values[0].ToString("X").PadLeft(4,'0');
......@@ -170,12 +189,16 @@ namespace MachineDll
////string data = values[3].ToString("X").PadLeft(4, '0') + "" + values[2].ToString("X").PadLeft(4, '0');
//float dataToFloat = StringToFloat(data);
return dataConvert;
return dataToFloat;
//return dataToFloat;
}
private double CurrentConversion(float dataToFloat)
public enum ByteType {
Double_32Bit_Little_endian_ByteSwap,
Float_32Bit_Little_endian_ByteSwap,
Int16
}
public static double CurrentConversion(double dataToFloat)
{
/**
* returnValue = (IO返回数据-4000)/16000*1
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!