Re: HWCOM Letzes Zeichen bei nächster Übertragung Kategorie: Programmierung (von Daniel Schartz - 8.08.2006 11:12) | ||
Als Antwort auf Re: HWCOM Letzes Zeichen bei nächster Übertragung von Christian Jost - 7.08.2006 21:55 | ||
| ||
Danke für's Feedback > Hallo Daniel, > > Ich kenne das Problem und denke dass es sich um einen Bug im Betriebssystem handelt. Ich habe > deshalb hier auch schon einmal eine Message gepostet aber André Helbig war der Meinung dass es > sich nicht um einen Bug handelt bzw. konnte ihn nicht reproduzieren. Auf mein (wahrscheinlich zu > kompliziertes) Testprogramm erhielt ich nie ein Feedback. > siehe Hier... > > Habe dir leider auch keine Lösung. Für mich ist dieses Verhalten jedenfalls nicht brauchbar!!! Zur > Zeit prüfe ich eine andere interessante Alternative: > http://www.acmesystems.it/?id=4 > > I2C-Bus und serielle Schnittstellen sind vorhanden und es hat eine Ethernet Schnittstelle :-)) > > Gruss, > Christian > > > > > Hallo, > > > > Ich bin dabei ein Programm zu schreiben um auf einer seriellen Schnittstelle bestimmte > > Messages abzufangen und ein Relais daraufhin zu schalten. > > > > Wenn ich die C-Control resette, dann funktionniert das Programm einwandfrei. > > Nach einiger Zeit wird dann das letzte Zeichen der �bertragung dann erst bei der nächsten > > �bertragung mit inbuffercount gesehen. > > > > Kann ich ohne zusätslichen Protokoll diesen Zustand feststellen und das Zeichen 'nachlesen' ? > > > > Hier der Code : > > thread HandleSerial > > { > > byte i; > > int Holt; > > string strHolt; > > string strStart; > > string strTest; > > string strEnd; > > > > // Init Variables > > strStart ="START"; > > strTest = "TEST"; > > strEnd = "END"; > > > > // wait hwcom.rxd(); > > wait hwcom.inbuffercnt() >0; > > i= hwcom.get(); > > if i== 13 > > { > > strx.Ucase(mybuffer,0,str.length(mybuffer)); > > /* capture flagRel; > > strDisplay1 = mybuffer; > > release; > > */ > > Send(mybuffer,str.length(mybuffer)); > > if strx.InStr(0,mybuffer,strTest,str.length(mybuffer),4) > -1 > > { > > /*capture flagRel; > > strDisplay2 = Dumbo; > > release; > > */ > > } > > else > > { > > if strx.InStr(0,mybuffer,strStart,str.length(mybuffer),4) > -1 > > { > > strx.left(mybuffer,strHolt,2); > > Holt = getNum(strHolt); > > Holter[Holt] =1; > > capture flagRel; > > strDisplay2 = "Start Alarm "; > > str.putint(strDisplay2,Holt); > > release; > > > > stports.setRel(1,1); > > } > > else > > { > > if strx.InStr(0,mybuffer,strEnd,str.length(mybuffer),3)>-1 > > { > > strx.left(mybuffer,strHolt,2); > > Holt = getNum(strHolt); > > Holter[Holt] =0; > > capture flagRel; > > strDisplay2 ="End Alarm "; > > str.putint(strDisplay2,Holt); > > release; > > if lastOn() > > { > > stports.setRel(1,0); > > } > > } > > } > > } > > BufPos =-1; > > } > > else > > { > > BufPos = BufPos +1; > > SetByte(mybuffer,i,BufPos); > > setStrLen(mybuffer,BufPos + 1); > > > > } > > } > > > > > > Mit Bitte um Hilfe > > > > > > Danke in Voraus > > > > Daniel Schartz | ||
Antwort schreiben Antworten: |