Commit 11670160 刘韬

适配1~16com口

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