在工业控制数据采集系统中遇到的问题,用NModbus读的寄存器,返回的是UShort数组,这个时候再转Short就会出错,再网上查找资料找到以下代码段:
Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Explicit)> _
Public Structure SHORT_USHORT
<FieldOffset(0)> Public ShortValue As Short
<FieldOffset(0)> Public UShortValue As UShort
<FieldOffset(0)> Public CharValue As Char
End Structure
我不是很懂这个写法,强制类型转换吗?
但是自己想出了另一个办法,如下代码:
Public Function U_To_S(ByVal ust As UShort) As Short
Dim str As String = Convert.ToString(ust, 2)
Dim st As Short = Convert.ToInt16(str, 2)
Return st
End Function
可以实现转换了。