簡體   English   中英

將vb6代碼轉換為vb.net?

[英]Convert vb6 code to vb.net?

我想把這個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 ()

在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 for Integer ,但如果位數很重要,你需要小心。

這些符號在舊版本的MS Basic中指定了變量類型,最多為VB6。 %=整數,&=長,!=單,#=雙,@ =貨幣,$ =字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM