将vb6代码转换为vb.net?

时间:2013-09-18 11:18:47

标签: vb.net vb6

我正在尝试将这个PID控制代码放入我的VB.net项目中,但对所有惊叹号都有点无能为力。有人可以向我解释如何在VB.NET中实现这段代码吗?

Dim Er!, Derivative!, Proportional!

    Static Olderror!, Cont!, Integral!
    Static Limiter_Switch%
    Limiter_Switch% = 1

    Er = setpoint - process

    If ((Cont >= 1 And Er > 0) Or (Cont <= 0 And Er < 0) Or (Integ >= 9999)) Then
        Limiter_Switch = 0
    Else
        Limiter_Switch = 1
    End If
    Integral = Integral + Gain / Integ * Er * deltaT * Limiter_Switch

    Derivative = Gain * deriv * (Er - Olderror) / deltaT

    Proportional = Gain * Er

    Cont = Proportional + Integral + Derivative
    Olderror = Er

    If (Cont > 1) Then
        Cont = 1
    End If
    If (Cont < 0) Then
        Cont = 0
    End If
    Return ()

2 个答案:

答案 0 :(得分:10)

在VB6中,可以添加某些后缀以指定变量类型。例如:

Dim x%

与:

相同
Dim x As Integer

VB.NET仍支持后缀,但广泛不鼓励。以下是可能的后缀列表:

  • $String
  • 的后缀
  • %Integer
  • 的后缀
  • &Long
  • 的后缀
  • !Single
  • 的后缀
  • #Double
  • 的后缀
  • @Currency的后缀(现在是.NET中的Decimal

VB6没有为所有核心数据类型提供后缀字符。例如,BooleanDateShort没有有效的后缀字符。即使在VB6中,许多人也建议在所有变量声明中始终使用As,但仍有许多人建议使用后缀(如果可用),因为它们提供了一些额外的预编译类型检查,这通常是有益的。

因此,要将该代码转换为.NET,您需要使用As ...子句替换任何变量声明行中的后缀符号,为istance指定等效类型,而不是:

Dim Er!, Derivative!, Proportional!
Static Olderror!, Cont!, Integral!
Static Limiter_Switch%

你将其转换为:

Dim Er, Derivative, Proportional As Single
Static OldError, Cont, Integral As Single
Static Limiter_Switch As Integer

然后,在使用变量时出现后缀符号,在声明行之外,您只需删除该符号即可。例如,而不是:

Limiter_Switch% = 1

你将其转换为:

Limiter_Switch = 1

请记住,在将类型从VB6转换为VB.NET时,VB.NET中的数字类型会更大。例如,VB6中的Integer是16位,但在VB.NET中,Integer是32位。因此,从技术上讲,VB.NET中的等价物对于VB6 IntegerShort。通常情况下,这并不重要,您只想对Integer使用Integer,但如果位数很重要,则需要小心。

答案 1 :(得分:0)

这些符号在旧版本的MS Basic中指定了变量类型,最多为VB6。 %=整数,&amp; =长,!=单,#=双,@ =货币,$ =字符串