Thank you for the answer. I had the same problem with 2.24 so I downgrade 
gambas version to 2.21. 

This is a code snippet of what I wrote.


PUBLIC CTimeOut AS Timer


PUBLIC FUNCTION initialize() AS Boolean
    DIM s AS String
    DIM Derror AS Integer = 0
    DIM i AS Integer = 0
    DIM sout AS String = ""
    
    CTimeOut = NEW Timer AS "CTimeOut"
    CTimeOut.Delay = 300
    
    FMain.ProgressBarTest.value = 0.00
    FMain.TextAreaInformation.Background = &HFFFF00&  
    FMain.TextAreaInformation.Text = "\n\n\n\n\n\t\t\t" & "Init...\n"
    FMain.TextAreaInformation.Font.Size = 15


    'Init Controller Module (AVR)

    IF Settings["Station/Init"] = TRUE THEN 
        sout = MStation.init()
        IF sout = NULL THEN Error.Raise("STATION")
        FMain.TextAreaTrace.Text = Format(Now(), "hh:nn:ssuuuu: ") & "STA > " & 
sout & FMain.TextAreaTrace.Text 
    ENDIF 
   
    CTimeOut.Start()
    WAIT 1
    MStation.reset()
    WAIT 0.4
    
    
    RETURN TRUE
  
  CATCH
   s = "\n" & Format(Now(), "hh:nn:ssuuuu") & " - " & "Error during 
Initialization...\n" &
   "Process Error: " & Error.Class.Name & "\n" &
   "Error Text: " & Error.Text & "\n" &
   "Error Code: " & Derror & "\n"
   
   FMain.TextAreaInformation.Text = FMain.TextAreaInformation.Text & s
   FMain.TextAreaTrace.Text = FMain.TextAreaTrace.Text & s
   FMain.TextAreaInformation.Background = &HFF0000&
   FMain.TextAreaError.Text = FMain.TextAreaError.Text & s 
   DEBUG s
   
   RETURN FALSE 
END



PUBLIC SUB CTimeOut_Timer()
  
  CTimeOut.Stop()
  MStation.CDataRead()
  CTimeOut.Start()
  
END



PUBLIC FUNCTION CDataRead() AS String
   DIM i AS Integer = 0
   DIM index AS Integer
   DIM Derror AS Integer
   DIM buf AS String = ""
   DIM sout AS String= ""
   DIM StationStatus AS String = ""
   DIM StationError AS String = ""
  
   
   CurrentPortByte = ""
   
   TRY READ #SPort, buf, Lof(SPort)
   RxSport &= buf
   
   
   WHILE TRUE
      i = InStr(RxSport, "\n", 1)
      IF i = 0 THEN BREAK 
      buf = Left(RxSport, i)
      RxSport = Right(RxSport, Len(RxSport) - i)
      FMain.TextAreaTrace.Text = Format(Now(), "hh:nn:ssuuuu: ") & "STA > " & 
buf & FMain.TextAreaTrace.Text
      
      '------ Manipulate Controller's data -------'
      
      'Port Signals
      IF buf = "F?\n" THEN 
          CurrentPortByte = Left(RxSport, 2)
          PRINT Left(buf, 2) & " --> PORTF: " & CurrentPortByte
      ENDIF 
        
      IF buf = "C?\n" THEN 
          CurrentPortByte = Left(RxSport, 2)
          PRINT Left(buf, 2) & " --> PORTC: " & CurrentPortByte
      ENDIF
        
      'Inputs
      IF InStr(buf, "inputs:") <> 0 THEN 
          PRINT buf
      ENDIF
      
      'Status
      IF InStr(buf, "status:") <> 0 THEN 
          index = InStr(buf, "s:", 1)
          StationStatus = Mid(buf, index + 2, 1) 
          PRINT "StationStatus: " & StationStatus
          
          IF StationStatus = "5" THEN 
              sout = "New device\n"
              FMain.TextAreaTrace.Text = Format(Now(), "hh:nn:ssuuuu: ") & "STA 
> " & sout & FMain.TextAreaTrace.Text
              FMain.TextAreaSpec.Text = ""
              FMain.TextAreaInformation.Text = sout
              FMain.TextAreaInformation.Background = Color.Yellow
          ENDIF 
          
          IF StationStatus = "7" AND IsTestRunning = FALSE THEN 
                IsTestRunning = TRUE
         
                sout = "New Test\n"
                FMain.TextAreaInformation.Text &= sout
                FMain.TextAreaTrace.Text = Format(Now(), "hh:nn:ssuuuu: ") & 
"STA > " & sout & FMain.TextAreaTrace.Text
                TestMod.TestExec()     
           ENDIF
      ENDIF
    
      'Errors
      IF InStr(buf, "error!:") <> 0 THEN 
          index = InStr(buf, "or!:", 1)
          StationError = Mid(buf, index + 4, 1)
          PRINT "StationError: " & StationError
      
          IF StationError = "@" THEN 
            sout = "Error: Overflow\n."
          ENDIF 
          
          IF StationError = "A" 
            sout = "Error (A)"
          ENDIF
          
          IF StationError = "C"
            sout = "Error (C)\n" 
          ENDIF
          
          IF StationError = "F"
            sout = "Error (F)\n" 
          ENDIF
          
          IF StationError = "G"
            sout = "Error (G)\n" 
          ENDIF
          
          IF StationError = "H"
            sout = "Error (H)\n" 
          ENDIF
          
          IF StationError = "Q"
            sout = "Error (Q)\n" 
          ENDIF
          
          FMain.TextAreaError.Text = Format(Now(), "hh:nn:ssuuuu: ") & "STA > " 
& Settings["Station/" & Mid(buf, 8, 1)] & "\n\r" & FMain.TextAreaError.Text
          FMain.TextAreaError.Text = Format(Now(), "hh:nn:ssuuuu: ") & "STA > " 
& Left(buf, 8) & FMain.TextAreaError.Text
          FMain.TextAreaError.Text = Format(Now(), "hh:nn:ssuuuu: ") & "STA > " 
& sout & FMain.TextAreaError.Text
          FMain.TextAreaTrace.Text = Format(Now(), "hh:nn:ssuuuu: ") & "STA > " 
& Settings["Station/" & Mid(buf, 8, 1)] & "\n\r" & FMain.TextAreaTrace.Text
          FMain.TextAreaTrace.Text = Format(Now(), "hh:nn:ssuuuu: ") & "STA > " 
& Left(buf, 8) & FMain.TextAreaTrace.Text
          FMain.TextAreaTrace.Text = Format(Now(), "hh:nn:ssuuuu: ") & "STA > " 
& sout & FMain.TextAreaTrace.Text
          FMain.TextAreaInformation.Text = FMain.TextAreaInformation.Text & 
Format(Now(), "hh:nn:ssuuuu: ") & Settings["Station/" & Mid(buf, 8, 1)] &"\n\r" 
& sout
          FMain.TextAreaInformation.Background = Color.Red
          
          IF FStation.Visible THEN 
              FStation.TextAreaRx.Text = "@" & Sport.PortName & ">: " & 
Settings["Station/" & Mid(buf, 8, 1)] & "\n\r" & FStation.TextAreaRx.Text
          ENDIF 
      ENDIF 

      buf = ""
  WEND
   
  CATCH 
       'Error.Raise("CDataRead(): " & Error.Text)
END




Is it possible that the timer event every 300ms is responsible for data 
corruption?

Thanks again.







From: dgts...@hotmail.com
To: gambas-user@lists.sourceforge.net
Subject: Serial and Multiserial Problem
Date: Fri, 11 Jan 2013 13:47:39 +0000





Hello to everyone, I wish you a happy new Year!

I am gambas user at about 4 months and I am developing a system for control 
automation on a Ubuntu 10.04. I'm using the Gambas 2.21 runtime. I have also 
tried Ubuntu 11.04 for my application. The problem's description is as follows: 

An AVR micro polls for some sensor signals and sends asynchronous msgs to the 
ubuntu PC via /dev/ttyS0. The PC is also communicates with other devices via 
serial port lines using a multi-serial 4-port RS-232 (PCI card). 

After 2-3 hours of normal operation the Control program, running on the ubuntu 
PC, receives corrupted/no data from the micro. Initially, I was using the event 
based mechanism for the data reception with Sport_read() event. When the 
aforementioned problem was raised, I changed my design and I removed the 
Sport_read by creating an idle event (with a timer event every 300 msecs) and 
executing READ calls in order to receive micro's data. After Read, the data 
manipulation is following. 
Unfortunately the same problem remains with data received by gambas 
application. I have already checked the messages transmitted from the micro 
with cutecom/minicom and it seems that everything is ok (messages successfully 
delivered). 

When I restart the PC (Not the application!) then everything works fine again 
for another time interval of 3-4 hours.

Has anyone an idea why this happens? Every answer will be really valuable for 
me.

Thank you in advance                                      
                                          
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_123012
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to