Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Problem med timer!

Postades av 2009-03-30 11:48:54 - Joel Alexandersson, i forum vb.net, Tråden har 26 Kommentarer och lästs av 1090 personer

Hej! Jag försöker lösa en sak med en timer. Det är så att timern ligger och kollar om en variabel har ett värde. Har timern fått ett värde så ska den skriva ut det värdets text i textboxen.

Hur kan jag göra för att texten inte ska skrivas ut igen varje gång timern startas om?

Jag antar att det beror på att jag skriver så här med ett plustecken:


textbox.Text += GetINI(HMI_Drift, "driftVarde", VarDrift, "")

+ tecknet skriver jag bara för att jag har flera variabler som hämtar värden till samma textbox.

Har någon en fundering på hur man kan göra?


mycket tacksam för hjälp!


Svara

Sv: Problem med timer!

Postades av 2009-03-31 21:37:33 - Pelle Johansson

Skriver du += så ökas strängen på varje gång den körs. Om du i stället skriver textbox1.text = .... så kommer du inte att öka på textsträngen.



Svara

Sv:Problem med timer!

Postades av 2009-04-01 09:20:11 - Joel Alexandersson

Jo det förstår jag. Men det är ju så att ajg har flera stycken variabler som ska skrivas ut i samma textbox när de får värde.

typ:

textbox.Text += GetINI(HMI_Drift1, "driftVarde1", VarDrift1, "")
textbox.Text += GetINI(HMI_Drift2, "driftVarde2", VarDrift2, "")
textbox.Text += GetINI(HMI_Drift3, "driftVarde3", VarDrift3, "")
textbox.Text += GetINI(HMI_Drift4, "driftVarde4", VarDrift4, "")

och då fungerar det inte. Har du ett bra exempel på hur man kan skriva?


Svara

Sv: Problem med timer!

Postades av 2009-04-01 10:28:33 - Niklas Jansson

Antingen
textbox.Text = GetINI(HMI_Drift1, "driftVarde1", VarDrift1, "")
textbox.Text += GetINI(HMI_Drift2, "driftVarde2", VarDrift2, "")
textbox.Text += GetINI(HMI_Drift3, "driftVarde3", VarDrift3, "")
textbox.Text += GetINI(HMI_Drift4, "driftVarde4", VarDrift4, "")

eller
textbox.Text = GetINI(HMI_Drift1, "driftVarde1", VarDrift1, "") _
+ GetINI(HMI_Drift2, "driftVarde2", VarDrift2, "") _
+ GetINI(HMI_Drift3, "driftVarde3", VarDrift3, "") _
+ GetINI(HMI_Drift4, "driftVarde4", VarDrift4, "")


Svara

Sv:Problem med timer!

Postades av 2009-04-01 13:59:31 - Joel Alexandersson

nej. funkar inte. får bara ut första värdet. drift1 alltså. och det upprepas precis som innan.


Svara

Sv: Problem med timer!

Postades av 2009-04-01 15:52:29 - Oskar Johansson

När du prövat Niklas förslag, hur ser din kod ut då?


Svara

Sv:Problem med timer!

Postades av 2009-04-02 08:32:57 - Joel Alexandersson

så här:

        VarKapDriftlarm = TcClientSync.ReadVar(HMI_KAP_Driftlarm)
        VarKlossDackmaskinDriftlarm = TcClientSync.ReadVar(HMI_KDS_Driftlarm)
        VarKlossDackmaskinSpiklarm = TcClientSync.ReadVar(HMI_KDS_Spiklarm)
        VarDackmaskinDriftlarm = TcClientSync.ReadVar(HMI_DS_Driftlarm)
        VarDackmaskinSpiklarm = TcClientSync.ReadVar(HMI_DS_Spiklarm)
        VarMedmaskinDriftlarm = TcClientSync.ReadVar(HMI_MS_Driftlarm)
        VarMedmaskinSpiklarm = TcClientSync.ReadVar(HMI_MS_Spiklarm)

        If VarKapDriftlarm Or VarKlossDackmaskinDriftlarm Or VarKlossDackmaskinSpiklarm Or VarDackmaskinDriftlarm Or VarDackmaskinSpiklarm Or VarMedmaskinDriftlarm Or VarMedmaskinSpiklarm > 0 Then
            txt_Alarm.Text += GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "") & vbCrLf + GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "") & vbCrLf + GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "") & vbCrLf + GetINI(HMI_KDS_SpiklarmSokvag, "Spiklarm_Kloss/Dackmaskin", VarKlossDackmaskinSpiklarm, "") & vbCrLf + GetINI(HMI_DS_DriftlarmSokvag, "Driftlarm_Dackmaskin", VarDackmaskinDriftlarm, "") & vbCrLf + GetINI(HMI_DS_SpiklarmSokvag, "Spiklarm_Dackmaskin", VarDackmaskinSpiklarm, "") & vbCrLf + GetINI(HMI_MS_DriftlarmSokvag, "Driftlarm_Medmaskin", VarMedmaskinDriftlarm, "") & vbCrLf + GetINI(HMI_MS_SpiklarmSokvag, "Spiklarm_Medmaskin", VarMedmaskinSpiklarm, "") & vbCrLf


Svara

Sv: Problem med timer!

Postades av 2009-04-02 08:43:26 - Niklas Jansson

Förutom att du nog bör fundera på lite mer kodestetiska detaljer (kanske lägga hela "GetINI"-harangen i en "GetAlarm"-funktion istället), så borde din lösning bara vara:

<code>
If VarKapDriftlarm Or VarKlossDackmaskinDriftlarm Or VarKlossDackmaskinSpiklarm Or VarDackmaskinDriftlarm Or VarDackmaskinSpiklarm Or VarMedmaskinDriftlarm Or VarMedmaskinSpiklarm > 0 Then
txt_Alarm.Text = GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "") & VbCrLf + GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "") & VbCrLf + GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "") & VbCrLf + GetINI(HMI_KDS_SpiklarmSokvag, "Spiklarm_Kloss/Dackmaskin", VarKlossDackmaskinSpiklarm, "") & VbCrLf + GetINI(HMI_DS_DriftlarmSokvag, "Driftlarm_Dackmaskin", VarDackmaskinDriftlarm, "") & VbCrLf + GetINI(HMI_DS_SpiklarmSokvag, "Spiklarm_Dackmaskin", VarDackmaskinSpiklarm, "") & VbCrLf + GetINI(HMI_MS_DriftlarmSokvag, "Driftlarm_Medmaskin", VarMedmaskinDriftlarm, "") & VbCrLf + GetINI(HMI_MS_SpiklarmSokvag, "Spiklarm_Medmaskin", VarMedmaskinSpiklarm, "") & VbCrLf
</code>
Sen har du förstås ett problem om inget av larmen sker, för då töms inte texten.


Svara

Sv:Problem med timer!

Postades av 2009-04-02 08:56:56 - Joel Alexandersson

jag vet att det är ltie onödigt skrivet just nu. Men jag försöker främst bara lösa problemet och först sen snygga till det. Men såg att jag glömt ta bort plusset där. så nu fungerar det. Men som du säger så när jag itne har något larm så töms ju inte textboxen helt. utan skriver ut en nolla. Vad beror det på?


Svara

Sv:Problem med timer!

Postades av 2009-04-02 09:17:51 - Joel Alexandersson

När vi ändå håller på. Hur gör jag så att jag bryter raden efter varje variabels text som skrivs ut? Ingen bra lösning så som jg har nu för om några har larm men vissa inte så blir det ju bara ett "hål" istället. bryter ju rad i alla fall.


Svara

Sv: Problem med timer!

Postades av 2009-04-02 09:58:49 - Niklas Jansson

<b>>Men jag försöker främst bara lösa problemet och först sen snygga till det.</b>
Hade du haft en funktion GetAlarmString() så hade nog problemet inte uppstått.
Då hade det ju blivit:

<code>
If VarKapDriftlarm Or VarKlossDackmaskinDriftlarm Or VarKlossDackmaskinSpiklarm Or VarDackmaskinDriftlarm Or VarDackmaskinSpiklarm Or VarMedmaskinDriftlarm Or VarMedmaskinSpiklarm > 0 Then
txt_Alarm.Text += GetAlarmString()
</code>
Och då hade du sett det direkt. Ett tips bara.

Sen är det frågan vad ">0" gör där?

Allra helst hade du velat ha:
<code>
If AnyAlarm() Then
txt_Alarm.Text = GetAlarmString()
</code>

Och lösningen blir då:
If AnyAlarm() Then
txt_Alarm.Text = GetAlarmString()
Else
txt_Alarm.Text = ""
End If

Anledningen till att du får just 0 skulle kunna vara att du använder + och att allt tolkas som tal (även om det känns osannolikt.

<b>>Hur gör jag så att jag bryter raden efter varje variabels text som skrivs ut? Ingen bra lösning så som jg har nu för om några har larm men vissa inte så blir det ju bara ett "hål" istället. bryter ju rad i alla fall.</b>
Det är bl a därför du bör ha det i en separat funktion. Det finns massor av sätt att göra det, snyggast med någon typ av inbyggd funktion, men en ganska ful variant som är enkel och enkel att förstå är något i stil med:

Dim AnyPrevious = False
Dim str1 = GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "")
Dim str2 = ...
...
dim str as string

If str1 <> "" then
str = str1
AnyPrevious = True
end if
If str2 <> "" then
if anyprevious then str += vbcrlf
str += str2
AnyPrevious = True
end if
If str3 <> "" then
if anyprevious then str += vbcrlf
str += str3
AnyPrevious = True
end if
...


Svara

Sv:Problem med timer!

Postades av 2009-04-02 10:19:09 - Joel Alexandersson

ok! jag förstår hur du menar. ska testa detta. Några saker jag undrar över är dock hur jag skriver GetAlarmString() och AnyAlarm()

det här blir ju fel:

    Public Function GetAlarmString()
            GetINI(GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "") & vbCrLf + GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "") & vbCrLf + GetINI(HMI_KDS_SpiklarmSokvag, "Spiklarm_Kloss/Dackmaskin", VarKlossDackmaskinSpiklarm, "") & vbCrLf + GetINI(HMI_DS_DriftlarmSokvag, "Driftlarm_Dackmaskin", VarDackmaskinDriftlarm, "") & vbCrLf + GetINI(HMI_DS_SpiklarmSokvag, "Spiklarm_Dackmaskin", VarDackmaskinSpiklarm, "") & vbCrLf + GetINI(HMI_MS_DriftlarmSokvag, "Driftlarm_Medmaskin", VarMedmaskinDriftlarm, "") & vbCrLf + GetINI(HMI_MS_SpiklarmSokvag, "Spiklarm_Medmaskin", VarMedmaskinSpiklarm, "") & vbCrLf
    End Function


jag är inte så duktig på.net ska jag säga. :)


Svara

Sv: Problem med timer!

Postades av 2009-04-02 10:26:19 - Niklas Jansson

Vad är "GetINI"?

I princip kan ju första steget vara:

    Public Function GetAlarmString()
            return GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "") & vbCrLf + GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "") & vbCrLf + GetINI(HMI_KDS_SpiklarmSokvag, "Spiklarm_Kloss/Dackmaskin", VarKlossDackmaskinSpiklarm, "") & vbCrLf + GetINI(HMI_DS_DriftlarmSokvag, "Driftlarm_Dackmaskin", VarDackmaskinDriftlarm, "") & vbCrLf + GetINI(HMI_DS_SpiklarmSokvag, "Spiklarm_Dackmaskin", VarDackmaskinSpiklarm, "") & vbCrLf + GetINI(HMI_MS_DriftlarmSokvag, "Driftlarm_Medmaskin", VarMedmaskinDriftlarm, "") & vbCrLf + GetINI(HMI_MS_SpiklarmSokvag, "Spiklarm_Medmaskin", VarMedmaskinSpiklarm, "") & vbCrLf
    End Function


Sen skulle jag även skriva om den här lite snyggare


Svara

Sv:Problem med timer!

Postades av 2009-04-02 10:34:56 - Joel Alexandersson

getINI? jo det är ju så att jag har en inifil som jag hämtar texter ifrån som är knutna till en siffra. Genom getINI hämtar jag texten helt enkelt.

vad är str? i:

If str1 <> "" Then
------> Str = str1
AnyPrevious = True


Svara

Sv: Problem med timer!

Postades av 2009-04-02 10:56:19 - Niklas Jansson

Dim AnyPrevious = False
Dim str1 = GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "")
Dim str2 = ...
...
dim <b>str</b> as string

If str1 <> "" then
str = str1
AnyPrevious = True
end if
If str2 <> "" then
if anyprevious then str += vbcrlf
str += str2
AnyPrevious = True
end if
If str3 <> "" then
if anyprevious then str += vbcrlf
str += str3
AnyPrevious = True
end if
...


Svara

Sv:Problem med timer!

Postades av 2009-04-02 11:13:58 - Joel Alexandersson

får: Object reference not set to an instance of an object. ---> System.NullReferenceException: Object reference not set to an instance of an object.



så här är min kod, Ser du något fel?:

   Public TcClientSync As TCSCRIPTLib.TcScriptSync
    Dim VarKapDriftlarm = TcClientSync.ReadVar(HMI_KAP_Driftlarm)
    Dim VarKlossDackmaskinDriftlarm = TcClientSync.ReadVar(HMI_KDS_Driftlarm)
    Dim VarKlossDackmaskinSpiklarm = TcClientSync.ReadVar(HMI_KDS_Spiklarm)
    Dim VarDackmaskinDriftlarm = TcClientSync.ReadVar(HMI_DS_Driftlarm)
    Dim VarDackmaskinSpiklarm = TcClientSync.ReadVar(HMI_DS_Spiklarm)
    Dim VarMedmaskinDriftlarm = TcClientSync.ReadVar(HMI_MS_Driftlarm)
    Dim VarMedmaskinSpiklarm = TcClientSync.ReadVar(HMI_MS_Spiklarm)
    Dim AnyPrevious = False
    Dim str As String
    Dim str1 = GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "")
    Dim str2 = GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "")
    Dim str3 = GetINI(HMI_KDS_SpiklarmSokvag, "Spiklarm_Kloss/Dackmaskin", VarKlossDackmaskinSpiklarm, "")
    Dim str4 = GetINI(HMI_DS_DriftlarmSokvag, "Driftlarm_Dackmaskin", VarDackmaskinDriftlarm, "")
    Dim str5 = GetINI(HMI_DS_SpiklarmSokvag, "Spiklarm_Dackmaskin", VarDackmaskinSpiklarm, "")
    Dim str6 = GetINI(HMI_MS_DriftlarmSokvag, "Driftlarm_Medmaskin", VarMedmaskinDriftlarm, "")
    Dim str7 = GetINI(HMI_MS_SpiklarmSokvag, "Spiklarm_Medmaskin", VarMedmaskinSpiklarm, "")




 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        If str1 <> "" Then
            str = str1
            AnyPrevious = True
        End If
        If str2 <> "" Then
            If AnyPrevious Then Str += vbCrLf
            Str += str2
            AnyPrevious = True
        End If
        If str3 <> "" Then
            If AnyPrevious Then Str += vbCrLf
            Str += str3
            AnyPrevious = True
        End If
        If str4 <> "" Then
            If AnyPrevious Then Str += vbCrLf
            Str += str4
            AnyPrevious = True
        End If
        If str5 <> "" Then
            If AnyPrevious Then Str += vbCrLf
            Str += str5
            AnyPrevious = True
        End If
        If str6 <> "" Then
            If AnyPrevious Then Str += vbCrLf
            Str += str6
            AnyPrevious = True
        End If
        If str7 <> "" Then
            If AnyPrevious Then Str += vbCrLf
            Str += str7
            AnyPrevious = True
        End If


        If AnyAlarm() Then
            txt_Alarm.Text = GetAlarmString()
        Else
            txt_Alarm.Text = ""
        End If

        Timer1.Start()
end sub


 Public Function GetAlarmString()
        Return GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "") + GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "") + GetINI(HMI_KDS_SpiklarmSokvag, "Spiklarm_Kloss/Dackmaskin", VarKlossDackmaskinSpiklarm, "") + GetINI(HMI_DS_DriftlarmSokvag, "Driftlarm_Dackmaskin", VarDackmaskinDriftlarm, "") + GetINI(HMI_DS_SpiklarmSokvag, "Spiklarm_Dackmaskin", VarDackmaskinSpiklarm, "") + GetINI(HMI_MS_DriftlarmSokvag, "Driftlarm_Medmaskin", VarMedmaskinDriftlarm, "") + GetINI(HMI_MS_SpiklarmSokvag, "Spiklarm_Medmaskin", VarMedmaskinSpiklarm, "")
    End Function
    Public Function AnyAlarm()
        Return VarKapDriftlarm Or VarKlossDackmaskinDriftlarm Or VarKlossDackmaskinSpiklarm Or VarDackmaskinDriftlarm Or VarDackmaskinSpiklarm Or VarMedmaskinDriftlarm Or VarMedmaskinSpiklarm
    End Function




Svara

Sv: Problem med timer!

Postades av 2009-04-02 12:32:58 - Oskar Johansson

På vilken rad får du felet?


Svara

Sv:Problem med timer!

Postades av 2009-04-02 13:03:11 - Joel Alexandersson

På första deklareringen


Svara

Sv:Problem med timer!

Postades av 2009-04-02 13:03:49 - Joel Alexandersson

PÅ första deklareringen


Svara

Sv: Problem med timer!

Postades av 2009-04-02 13:09:02 - Oskar Johansson

Hm, borde inte den där koden ligga i någon form av funktion?


Svara

Sv:Problem med timer!

Postades av 2009-04-02 13:11:01 - Joel Alexandersson

Borde det inte fungera så ändå?


Svara

Sv: Problem med timer!

Postades av 2009-04-02 13:26:58 - Niklas Jansson

Joel, jag menar inget illa, men du kanske borde kolla på lite mer grundläggande grejer, eller åtminstone ta ett steg tillbaka och fundera på exakt vad din kod ska göra. Träna lite mer på debuggning.

Det stämmer nog att den koden du har lagt i början fungerar eftersom det då bara blir klassvariabler som initieras, men det är inte där de bör ligga. Mitt förslag är:
1. Gör en liten enkel funktion GetAlarmString. Den ska returnera den sträng du ska lägga i textboxen. Skippa timer, och testa _bara_ den funktionen. Funktionen ska alltså inte göra något annat, och ingen annanstans ska det finnas någonting som rör den strängen - allt ska ligga i funktionen.
2. När strängen ser ut som den ska kan du skriva in den till textboxen ifrån timern.


Svara

Sv:Problem med timer!

Postades av 2009-04-02 13:39:24 - Joel Alexandersson

jag tar inte illa upp. Men jag vet precis hur det ska fungera. Jag råkar bara ha bristande kunnighet i .net
Som jag förstår det så ska det här forumet hjälpa folk fram till en lösning?
Men dumförklara mig inte.


Jag kan förklara från början helt enkelt.

Jag har en PLC
en inifil
och ett .net program.

när det blir ett larm i plc:n får variablen där en siffra
mitt program ska ligga och kolla om den variablen får ett larm hela tiden. får den det! (det vills äga en siffra) kollar programmet efter den i inifilen och skriver ut siffrans text i en textbox.
det är allt.


Svara

Sv: Problem med timer!

Postades av 2009-04-02 13:49:41 - Niklas Jansson

Det jag menar med "exakt hur det ska funka" är mer på nivån "vilka funktioner ska finnas, vad ska de göra".

<b>>när det blir ett larm i plc:n får variablen där en siffra
mitt program ska ligga och kolla om den variablen får ett larm hela tiden.</b>
Ok, och detta hade du ju mer eller mindre löst. Så vi struntar i det nu.

<b>>får den det! (det vills äga en siffra) kollar programmet efter den i inifilen och skriver ut siffrans text i en textbox.
det är allt.</b>
Ok. Då skulle jag börja med att säga:

sub Timer ...
textbox.text = GetAlarmString()
End sub

Function GetAlarmString() As String
return "test"
End Function

Funkar detta som det ska?

Då går vi vidare till ett enda värde:

Function GetAlarmString() As String
Return GetINI(...)
End Function

Bygg sen vidare detta med två värden:


Function GetAlarmString() As String
Return GetINI(...) & GetINI(...)
End Function

Se sen till att de hamnar på olika rader, och att det inte blir tomrum. Detta gör du helt och hållet oberoende av timern. Det är alltså i "GetAlarmString", som allt krafs med "AnyPrevious", alla strängdeklarationer, osv. ska ligga, för det är där vi bygger ihop strängen.


Svara

Sv:Problem med timer!

Postades av 2009-04-02 14:06:40 - Joel Alexandersson

Nu får jag vissa sker att fungera. när jag skriver som koden nedan.
det som inte fungerar är radbrytning och uppdatering men jag får ut texten. all variabler efter varandra.



    Dim AnyPrevious = False
    Dim str As String
    Dim str1 As String
    Dim str2 As String
    Dim str3 As String
    Dim str4 As String
    Dim str5 As String
    Dim str6 As String
    Dim str7 As String
    'Dim VarAmneDriftlarm
    Dim VarKapDriftlarm
    Dim VarKlossDackmaskinDriftlarm
    Dim VarKlossDackmaskinSpiklarm
    Dim VarDackmaskinDriftlarm
    Dim VarDackmaskinSpiklarm
    Dim VarMedmaskinDriftlarm
    Dim VarMedmaskinSpiklarm
    'Dim VarUttransportDriftlarm
    Public Function GetAlarmString()
        If str1 <> "" Then
            str = str1
            AnyPrevious = True
        End If
        If str2 <> "" Then
            If AnyPrevious Then str += vbCrLf
            str += str2
            AnyPrevious = True
        End If
        If str3 <> "" Then
            If AnyPrevious Then str += vbCrLf
            str += str3
            AnyPrevious = True
        End If
        If str4 <> "" Then
            If AnyPrevious Then str += vbCrLf
            str += str4
            AnyPrevious = True
        End If
        If str5 <> "" Then
            If AnyPrevious Then str += vbCrLf
            str += str5
            AnyPrevious = True
        End If
        If str6 <> "" Then
            If AnyPrevious Then str += vbCrLf
            str += str6
            AnyPrevious = True
        End If
        If str7 <> "" Then
            If AnyPrevious Then str += vbCrLf
            str += str7
            AnyPrevious = True
        End If

        Return GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "") & GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "") ' + GetINI(HMI_KDS_SpiklarmSokvag, "Spiklarm_Kloss/Dackmaskin", VarKlossDackmaskinSpiklarm, "") + GetINI(HMI_DS_DriftlarmSokvag, "Driftlarm_Dackmaskin", VarDackmaskinDriftlarm, "") + GetINI(HMI_DS_SpiklarmSokvag, "Spiklarm_Dackmaskin", VarDackmaskinSpiklarm, "") + GetINI(HMI_MS_DriftlarmSokvag, "Driftlarm_Medmaskin", VarMedmaskinDriftlarm, "") + GetINI(HMI_MS_SpiklarmSokvag, "Spiklarm_Medmaskin", VarMedmaskinSpiklarm, "")
    End Function
    Public Function AnyAlarm()
        Return VarKapDriftlarm Or VarKlossDackmaskinDriftlarm Or VarKlossDackmaskinSpiklarm Or VarDackmaskinDriftlarm Or VarDackmaskinSpiklarm Or VarMedmaskinDriftlarm Or VarMedmaskinSpiklarm
    End Function
 Public Sub FKloss_Dackmaskin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TcClientSync = CreateObject("TcScript.TcScriptSync")
        Call TcClientSync.ConnectTo("", 801)

        'VarAmneDriftlarm = TcClientSync.ReadVar(HMI_AP_Driftlarm)
        VarKapDriftlarm = TcClientSync.ReadVar(HMI_KAP_Driftlarm)
        VarKlossDackmaskinDriftlarm = TcClientSync.ReadVar(HMI_KDS_Driftlarm)
        VarKlossDackmaskinSpiklarm = TcClientSync.ReadVar(HMI_KDS_Spiklarm)
        VarDackmaskinDriftlarm = TcClientSync.ReadVar(HMI_DS_Driftlarm)
        VarDackmaskinSpiklarm = TcClientSync.ReadVar(HMI_DS_Spiklarm)
        VarMedmaskinDriftlarm = TcClientSync.ReadVar(HMI_MS_Driftlarm)
        VarMedmaskinSpiklarm = TcClientSync.ReadVar(HMI_MS_Spiklarm)
        'VarUttransportDriftlarm = TcClientSync.ReadVar(HMI_UT_Driftlarm)

        str1 = GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "")
        str2 = GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "")
        str3 = GetINI(HMI_KDS_SpiklarmSokvag, "Spiklarm_Kloss/Dackmaskin", VarKlossDackmaskinSpiklarm, "")
        str4 = GetINI(HMI_DS_DriftlarmSokvag, "Driftlarm_Dackmaskin", VarDackmaskinDriftlarm, "")
        str5 = GetINI(HMI_DS_SpiklarmSokvag, "Spiklarm_Dackmaskin", VarDackmaskinSpiklarm, "")
        str6 = GetINI(HMI_MS_DriftlarmSokvag, "Driftlarm_Medmaskin", VarMedmaskinDriftlarm, "")
        str7 = GetINI(HMI_MS_SpiklarmSokvag, "Spiklarm_Medmaskin", VarMedmaskinSpiklarm, "")


        'Sätter(timerintervall)
        Timer1.Interval = 500
        Timer1.Start()
        Timer2.Interval = 500
        Timer2.Start()
    End Sub

Public Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

 If AnyAlarm() Then
            txt_Alarm.Text = GetAlarmString()
        Else
            txt_Alarm.Text = ""
        End If

        Timer1.Start()
    End Sub




Svara

Sv: Problem med timer!

Postades av 2009-04-02 14:25:38 - Niklas Jansson

<code>
Dim AnyPrevious = False
Dim str As String
Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim str4 As String
Dim str5 As String
Dim str6 As String
Dim str7 As String
'Dim VarAmneDriftlarm
Dim VarKapDriftlarm
Dim VarKlossDackmaskinDriftlarm
Dim VarKlossDackmaskinSpiklarm
Dim VarDackmaskinDriftlarm
Dim VarDackmaskinSpiklarm
Dim VarMedmaskinDriftlarm
Dim VarMedmaskinSpiklarm
'Dim VarUttransportDriftlarm
Public Function GetAlarmString()

If str1 <> "" Then
str = str1
AnyPrevious = True
End If
If str2 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str2
AnyPrevious = True
End If
If str3 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str3
AnyPrevious = True
End If
If str4 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str4
AnyPrevious = True
End If
If str5 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str5
AnyPrevious = True
End If
If str6 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str6
AnyPrevious = True
End If
If str7 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str7
AnyPrevious = True
End If

Return GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "") & GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "") ' + GetINI(HMI_KDS_SpiklarmSokvag, "Spiklarm_Kloss/Dackmaskin", VarKlossDackmaskinSpiklarm, "") + GetINI(HMI_DS_DriftlarmSokvag, "Driftlarm_Dackmaskin", VarDackmaskinDriftlarm, "") + GetINI(HMI_DS_SpiklarmSokvag, "Spiklarm_Dackmaskin", VarDackmaskinSpiklarm, "") + GetINI(HMI_MS_DriftlarmSokvag, "Driftlarm_Medmaskin", VarMedmaskinDriftlarm, "") + GetINI(HMI_MS_SpiklarmSokvag, "Spiklarm_Medmaskin", VarMedmaskinSpiklarm, "")
End Function
</code>
Vad använder du str till här?

Skriv istället något i stil med:
<code>
'Dim VarAmneDriftlarm
Dim VarKapDriftlarm
Dim VarKlossDackmaskinDriftlarm
Dim VarKlossDackmaskinSpiklarm
Dim VarDackmaskinDriftlarm
Dim VarDackmaskinSpiklarm
Dim VarMedmaskinDriftlarm
Dim VarMedmaskinSpiklarm
'Dim VarUttransportDriftlarm
Public Function GetAlarmString()
Dim AnyPrevious = False
Dim str As String = ""
Dim str1 As String = GetINI(HMI_KAP_DriftlarmSokvag, "Driftlarm_Kap", VarKapDriftlarm, "")
Dim str2 As String = GetINI(HMI_KDS_DriftlarmSokvag, "Driftlarm_Kloss/Dackmaskin", VarKlossDackmaskinDriftlarm, "")
Dim str3 As String = ...
Dim str4 As String
Dim str5 As String
Dim str6 As String
Dim str7 As String
If str1 <> "" Then
str = str1
AnyPrevious = True
End If
If str2 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str2
AnyPrevious = True
End If
If str3 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str3
AnyPrevious = True
End If
If str4 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str4
AnyPrevious = True
End If
If str5 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str5
AnyPrevious = True
End If
If str6 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str6
AnyPrevious = True
End If
If str7 <> "" Then
If AnyPrevious Then str += VbCrLf
str += str7
AnyPrevious = True
End If

Return str
End Function
</code>

Här kan du då kontrollera vad det står i varje sträng str1, str2 osv. under tiden du debuggar funktionen, och då ser du i detalj vad som händer.


Svara

Sv:Problem med timer!

Postades av 2009-04-02 14:42:42 - Joel Alexandersson

Nu du! NU fungerar det faktistk! Jag gjorde om så som du sa och sen flyttade jag ner

'VarAmneDriftlarm = TcClientSync.ReadVar(HMI_AP_Driftlarm)
VarKapDriftlarm = TcClientSync.ReadVar(HMI_KAP_Driftlarm)
VarKlossDackmaskinDriftlarm = TcClientSync.ReadVar(HMI_KDS_Driftlarm)
VarKlossDackmaskinSpiklarm = TcClientSync.ReadVar(HMI_KDS_Spiklarm)
VarDackmaskinDriftlarm = TcClientSync.ReadVar(HMI_DS_Driftlarm)
VarDackmaskinSpiklarm = TcClientSync.ReadVar(HMI_DS_Spiklarm)
VarMedmaskinDriftlarm = TcClientSync.ReadVar(HMI_MS_Driftlarm)
VarMedmaskinSpiklarm = TcClientSync.ReadVar(HMI_MS_Spiklarm)
'VarUttransportDriftlarm = TcClientSync.ReadVar(HMI_UT_Driftlarm)

som läser från plc till timern och nu fungerar allt perfekt.

Jag får tacka så sjukt mycket för hjälpen! Sorry om jag var irriterande. :)


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 668
27 958
271 741
585
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies