Zitat Zitat von BastelWastel
Ich schalt mich mal kurz ein, wo hier schon die Profis zum Thema soft UART zusammensitzen..
Ich werde wohl SERIN und SEROUT auch bald brauchen für nen kleinen Portsniffer, jedoch werd ich aus der hilfe dazu nicht ganz schlau.

Die geben für S einen String an.. (Dim S As String * 10)
Hat SERIN einen eigenen Buffer? Oder muss es ein String sein der dann als Buffer benutzt wird?
Oder wartet der uC an der Stelle im Code bis 10 Byte empfangen wurden?

Vllt kann mich da jemand aufklären der das schon benutzt hat ^^

Cheers
Das ist halt ein Beispiel, es geht auch anders..
'---------------------------------------------------
' (c) 2000-2003 MCS Electronics
' OPEN.BAS
' demonstrates software UART
'---------------------------------------------------
$crystal = 8000000 'change to the value of the XTAL you have installed
$regfile = "m88def.dat"

Ucsr0b = 0 'disable the HW UART

Dim B As Byte

'Optional you can fine tune the calculated bit delay
'Why would you want to do that?
'Because chips that have an internal oscillator may not
'run at the speed specified. This depends on the voltage, temp etc.
'You can either change $CRYSTAL or you can use
'BAUD #1,9610

'In this example file we use the DT006 from www.simmstick.com
'This allows easy testing with the existing serial port
'The MAX232 is fitted for this example.
'Because we use the hardware UART pins we MAY NOT use the hardware UART
'The hardware UART is used when you use PRINT, INPUT or other related statements
'We will use the software UART.
Waitms 100

'open channel for output
Open "comd.1:19200,8,n,1" For Output As #1
Print #1 , "serial output"


'Now open a pin for input
Open "comd.0:19200,8,n,1" For Input As #2
'since there is no relation between the input and output pin
'there is NO ECHO while keys are typed
Print #1 , "Number"
'get a number
Input #2 , B
'print the number
Print #1 , B

'now loop until ESC is pressed
'With INKEY() we can check if there is data available
'To use it with the software UART you must provide the channel
Do
'store in byte
B = Inkey(#2)
'when the value > 0 we got something
If B > 0 Then
Print #1 , Chr(b) 'print the character
End If
Loop Until B = 27


Close #2
Close #1


'OPTIONAL you may use the HARDWARE UART
'The software UART will not work on the hardware UART pins
'so you must choose other pins
'use normal hardware UART for printing
'Print B


'When you dont want to use a level inverter such as the MAX-232
'You can specify ,INVERTED :
'Open "comd.0:300,8,n,1,inverted" For Input As #2
'Now the logic is inverted and there is no need for a level converter
'But the distance of the wires must be shorter with this
End
Gruß Richard