Danke euch beiden für die Antworten !
@PicNick, das mit dem Timer ist eine gute idee ! habe das jetzt mit eingebaut, und scheint auch zu laufen :-D
@Richard, das habe ich schon versucht (hab das Buch von Roland Walter hier)
aber leider hatte ich damit keinen erfolg, wenn ich das so einbaue, wird mein ausgehenden string verstümmelt, es fehlen dann CR/LF ! vielleicht liegt es daran das ja ein Interrupt ausgelöst wird wenn der sendebefehl noch nicht ganz raus ist. Zur info, ich Arbeit mit R485 in Half Duplex
ich habe jetzt mal folgendes probiert, scheint soweit auch zu laufen, jedenfalls hängt das Programm micht mehr wenn keine Antwort kommt
Code:$regfile = "M88def.dat" $crystal = 1000000 $hwstack = 100 $swstack = 100 $framesize = 100 Config Com1 = 4800 , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 7 , Clockpol = 0 Config Print = Portd.2 , Mode = Set Config Pind.2 = Output Config Timer0 = Timer , Prescale = 1024 'Enable Timer0 'Enable Interrupts 'On Timer0 Ontimer0 Led1 Alias Portb.0 Config Led1 = Output Led2 Alias Portd.7 Config Led2 = Output Led3 Alias Portd.4 Config Led3 = Output Taster1 Alias Pind.5 Config Taster1 = Input Taster2 Alias Pind.6 Config Taster2 = Input '-----------------------Dim's-------------------------------------------------- Dim Test As String * 20 Dim A As Byte Dim Kreisz As Byte Dim Adresse As String * 2 '----------------------Haubtschleife------------------------------------------- Do For Kreisz = 1 To 10 Step 1 Adresse = Str(kreisz) Adresse = Format(adresse , "00") If Len(test) >= 18 Then Test = "" Led2 = 1 Else Led2 = 0 End If Gosub Mess Next Kreis Loop '------------------Messwerte anfordern----------------------------------------- Mess: Waitms 100 Print "K" ; Adresse ; " " ; "M" Do A = Ischarwaiting() If A = 1 Then Led1 = 1 A = Inkey() Test = Test + Chr(a) End If Loop Until Len(test) >= 18 Or Timer0 = 200 Led1 = 0 Timer0 = 0 Return







Zitieren

Lesezeichen